| #if !defined(WNASPI32_H) |
| #define WNASPI32_H |
| |
| #include "pshpack1.h" |
| |
| typedef union SRB * LPSRB; |
| |
| #define SS_INVALID_CMD 0x80 |
| #define SS_INVALID_HA 0x81 |
| #define SS_NO_DEVICE 0x82 |
| |
| typedef struct tagSRB_HaInquiry { |
| BYTE SRB_Cmd; /* ASPI command code = SC_HA_INQUIRY */ |
| BYTE SRB_Status; /* ASPI command status byte */ |
| BYTE SRB_HaId; /* ASPI host adapter number */ |
| BYTE SRB_Flags; /* ASPI request flags */ |
| DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */ |
| BYTE HA_Count; /* Number of host adapters present */ |
| BYTE HA_SCSI_ID; /* SCSI ID of host adapter */ |
| BYTE HA_ManagerId[16]; /* String describing the manager */ |
| BYTE HA_Identifier[16]; /* String describing the host adapter */ |
| BYTE HA_Unique[16]; /* Host Adapter Unique parameters */ |
| WORD HA_Rsvd1; |
| } SRB_HaInquiry WINE_PACKED; |
| |
| typedef struct tagSRB_ExecSCSICmd { |
| BYTE SRB_Cmd; /* ASPI command code = SC_EXEC_SCSI_CMD */ |
| BYTE SRB_Status; /* ASPI command status byte */ |
| BYTE SRB_HaId; /* ASPI host adapter number */ |
| BYTE SRB_Flags; /* ASPI request flags */ |
| DWORD SRB_Hdr_Rsvd; /* Reserved */ |
| BYTE SRB_Target; /* Target's SCSI ID */ |
| BYTE SRB_Lun; /* Target's LUN number */ |
| WORD SRB_Rsvd1; /* Reserved for Alignment */ |
| DWORD SRB_BufLen; /* Data Allocation Length */ |
| BYTE *SRB_BufPointer; /* Data Buffer Point */ |
| BYTE SRB_SenseLen; /* Sense Allocation Length */ |
| BYTE SRB_CDBLen; /* CDB Length */ |
| BYTE SRB_HaStat; /* Host Adapter Status */ |
| BYTE SRB_TargStat; /* Target Status */ |
| void (*SRB_PostProc)(); /* Post routine */ |
| void *SRB_Rsvd2; /* Reserved */ |
| BYTE SRB_Rsvd3[16]; /* Reserved for expansion */ |
| BYTE CDBByte[16]; /* SCSI CDB */ |
| BYTE SenseArea[0]; /* Request sense buffer - var length */ |
| } SRB_ExecSCSICmd WINE_PACKED; |
| |
| typedef struct tagSRB_Abort { |
| BYTE SRB_Cmd; /* ASPI command code = SC_ABORT_SRB */ |
| BYTE SRB_Status; /* ASPI command status byte */ |
| BYTE SRB_HaId; /* ASPI host adapter number */ |
| BYTE SRB_Flags; /* Reserved */ |
| DWORD SRB_Hdr_Rsvd; /* Reserved, MUST = 0 */ |
| LPSRB SRB_ToAbort; /* Pointer to SRB to abort */ |
| } SRB_Abort WINE_PACKED; |
| |
| typedef struct tagSRB_BusDeviceReset { |
| BYTE SRB_Cmd; /* ASPI command code = SC_RESET_DEV */ |
| BYTE SRB_Status; /* ASPI command status byte */ |
| BYTE SRB_HaId; /* ASPI host adapter number */ |
| BYTE SRB_Flags; /* Reserved */ |
| DWORD SRB_Hdr_Rsvd; /* Reserved */ |
| BYTE SRB_Target; /* Target's SCSI ID */ |
| BYTE SRB_Lun; /* Target's LUN number */ |
| BYTE SRB_Rsvd1[12]; /* Reserved for Alignment */ |
| BYTE SRB_HaStat; /* Host Adapter Status */ |
| BYTE SRB_TargStat; /* Target Status */ |
| void (*SRB_PostProc)(); /* Post routine */ |
| void *SRB_Rsvd2; /* Reserved */ |
| BYTE SRB_Rsvd3[32]; /* Reserved */ |
| } SRB_BusDeviceReset WINE_PACKED; |
| |
| typedef struct tagSRB_GDEVBlock { |
| BYTE SRB_Cmd; /* ASPI command code = SC_GET_DEV_TYPE */ |
| BYTE SRB_Status; /* ASPI command status byte */ |
| BYTE SRB_HaId; /* ASPI host adapter number */ |
| BYTE SRB_Flags; /* Reserved */ |
| DWORD SRB_Hdr_Rsvd; /* Reserved */ |
| BYTE SRB_Target; /* Target's SCSI ID */ |
| BYTE SRB_Lun; /* Target's LUN number */ |
| BYTE SRB_DeviceType; /* Target's peripheral device type */ |
| BYTE SRB_Rsvd1; |
| } SRB_GDEVBlock WINE_PACKED; |
| |
| typedef struct tagSRB_Common { |
| BYTE SRB_Cmd; |
| } SRB_Common; |
| |
| union SRB { |
| SRB_Common common; |
| SRB_HaInquiry inquiry; |
| SRB_ExecSCSICmd cmd; |
| SRB_Abort abort; |
| SRB_BusDeviceReset reset; |
| SRB_GDEVBlock devtype; |
| }; |
| |
| typedef union SRB SRB; |
| |
| #include "poppack.h" |
| |
| #endif |