]> git.proxmox.com Git - mirror_smartmontools-debian.git/blobdiff - aacraid.h
Imported Upstream version 6.5+svn4324
[mirror_smartmontools-debian.git] / aacraid.h
index de7527a7259d30988220234e9b410c0f186a4440..d62fbca0ca35dad41e56857b518144e1e95e3428 100644 (file)
--- a/aacraid.h
+++ b/aacraid.h
@@ -1,5 +1,6 @@
 /* aacraid.h
  * Copyright (C) 2014 Raghava Aditya <Raghava.Aditya@pmcs.com>
+ * Copyright (C) 2015 Nidhi Malhotra <Nidhi.Malhotra@pmcs.com>
  *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
@@ -12,8 +13,8 @@
  */
 
 // Check windows
-#if _WIN32 || _WIN64
-#if _WIN64
+#if defined(_WIN32) || defined(_WIN64)
+#ifdef _WIN64
   #define ENVIRONMENT64
 #else
   #define ENVIRONMENT32
 #define METHOD_BUFFERED 0
 #define METHOD_NEITHER  3
 
+#if defined(_WIN32) || defined(_WIN64)
+#define FSAMPCTL_SCSI_BASE          IOCTL_SCSI_BASE
+#define ARCIOCTL_SEND_RAW_SRB       CTL_CODE(FSAMPCTL_SCSI_BASE, 2201, METHOD_BUFFERED, FILE_ANY_ACCESS)
+#define AACRAID_SAS_SIGNATURE       "ARCSAS"
+#define SRB_FLAGS_DATA_IN           0x00000040
+#define SRB_FLAGS_DATA_OUT          0x00000080
+#define SRB_FLAGS_NO_DATA_TRANSFER  0x00000000
+#else
 #define CTL_CODE(function, method) ((4<< 16) | ((function) << 2) | (method) )
 
 #define FSACTL_SEND_RAW_SRB  CTL_CODE(2067, METHOD_BUFFERED)
-
+#endif
 #define  SRB_FUNCTION_EXECUTE_SCSI 0X00
 
 #define  SRB_DataIn      0x0040
@@ -67,6 +76,45 @@ typedef struct {
   user_sgentry32   sg32[1];
   }  user_sgmap32;
 
+#if defined(_WIN32) || defined(_WIN64)
+typedef struct _SCSI_REQUEST_BLOCK {
+    USHORT Length;                  // offset 0
+    UCHAR Function;                 // offset 2
+    UCHAR SrbStatus;                // offset 3
+    UCHAR ScsiStatus;               // offset 4
+    UCHAR PathId;                   // offset 5
+    UCHAR TargetId;                 // offset 6
+    UCHAR Lun;                      // offset 7
+    UCHAR QueueTag;                 // offset 8
+    UCHAR QueueAction;              // offset 9
+    UCHAR CdbLength;                // offset a
+    UCHAR SenseInfoBufferLength;    // offset b
+    ULONG SrbFlags;                 // offset c
+    ULONG DataTransferLength;       // offset 10
+    ULONG TimeOutValue;             // offset 14
+    PVOID DataBuffer;               // offset 18
+    PVOID SenseInfoBuffer;          // offset 1c
+    struct _SCSI_REQUEST_BLOCK *NextSrb; // offset 20
+    PVOID OriginalRequest;          // offset 24
+    PVOID SrbExtension;             // offset 28
+    union {
+        ULONG InternalStatus;       // offset 2c
+        ULONG QueueSortKey;         // offset 2c
+    };
+
+#if defined(_WIN64)
+    //
+    // Force PVOID alignment of Cdb
+    //
+    ULONG Reserved;
+#endif
+
+    UCHAR Cdb[16];                  // offset 30
+} SCSI_REQUEST_BLOCK, *PSCSI_REQUEST_BLOCK;
+
+#define SCSI_REQUEST_BLOCK_SIZE sizeof(SCSI_REQUEST_BLOCK)
+
+#else
 typedef struct {
   uint32_t function;           //SRB_FUNCTION_EXECUTE_SCSI 0x00
   uint32_t channel;            //bus
@@ -103,3 +151,4 @@ typedef struct {
   uint32_t sense_data_size;
   uint8_t  sense_data[30];
   }  user_aac_reply;
+#endif