Release 990815.
[wine] / include / wnaspi32.h
1 #ifndef __WINE_WNASPI32_H
2 #define __WINE_WNASPI32_H
3
4 #include "windef.h"
5
6 #include "pshpack1.h"
7
8 typedef union SRB * LPSRB;
9
10 #define SS_INVALID_CMD 0x80
11 #define SS_INVALID_HA 0x81
12 #define SS_NO_DEVICE 0x82
13
14 typedef struct tagSRB_HaInquiry {
15  BYTE  SRB_Cmd;                 /* ASPI command code = SC_HA_INQUIRY */
16  BYTE  SRB_Status;              /* ASPI command status byte */
17  BYTE  SRB_HaId;                /* ASPI host adapter number */
18  BYTE  SRB_Flags;               /* ASPI request flags */
19  DWORD  SRB_Hdr_Rsvd;           /* Reserved, MUST = 0 */
20  BYTE  HA_Count;                /* Number of host adapters present */
21  BYTE  HA_SCSI_ID;              /* SCSI ID of host adapter */
22  BYTE  HA_ManagerId[16];        /* String describing the manager */
23  BYTE  HA_Identifier[16];       /* String describing the host adapter */
24  BYTE  HA_Unique[16];           /* Host Adapter Unique parameters */
25  WORD  HA_Rsvd1;
26 } SRB_HaInquiry WINE_PACKED;
27
28 typedef struct tagSRB_ExecSCSICmd {
29   BYTE        SRB_Cmd;            /* ASPI command code = SC_EXEC_SCSI_CMD */
30   BYTE        SRB_Status;         /* ASPI command status byte */
31   BYTE        SRB_HaId;           /* ASPI host adapter number */
32   BYTE        SRB_Flags;          /* ASPI request flags */
33   DWORD       SRB_Hdr_Rsvd;       /* Reserved */
34   BYTE        SRB_Target;         /* Target's SCSI ID */
35   BYTE        SRB_Lun;            /* Target's LUN number */
36   WORD        SRB_Rsvd1;          /* Reserved for Alignment */
37   DWORD       SRB_BufLen;         /* Data Allocation Length */
38   BYTE        *SRB_BufPointer;    /* Data Buffer Point */
39   BYTE        SRB_SenseLen;       /* Sense Allocation Length */
40   BYTE        SRB_CDBLen;         /* CDB Length */
41   BYTE        SRB_HaStat;         /* Host Adapter Status */
42   BYTE        SRB_TargStat;       /* Target Status */
43   void        (*SRB_PostProc)();  /* Post routine */
44   void        *SRB_Rsvd2;         /* Reserved */
45   BYTE        SRB_Rsvd3[16];      /* Reserved for expansion */
46   BYTE        CDBByte[16];        /* SCSI CDB */
47   BYTE        SenseArea[0];       /* Request sense buffer - var length */
48 } SRB_ExecSCSICmd WINE_PACKED;
49
50 typedef struct tagSRB_Abort {
51   BYTE        SRB_Cmd;            /* ASPI command code = SC_ABORT_SRB */
52   BYTE        SRB_Status;         /* ASPI command status byte */
53   BYTE        SRB_HaId;           /* ASPI host adapter number */
54   BYTE        SRB_Flags;          /* Reserved */
55   DWORD       SRB_Hdr_Rsvd;       /* Reserved, MUST = 0 */
56   LPSRB     SRB_ToAbort;        /* Pointer to SRB to abort */
57 } SRB_Abort WINE_PACKED;
58
59 typedef struct tagSRB_BusDeviceReset {
60  BYTE         SRB_Cmd;                  /* ASPI command code = SC_RESET_DEV */
61  BYTE         SRB_Status;               /* ASPI command status byte */
62  BYTE         SRB_HaId;                 /* ASPI host adapter number */
63  BYTE         SRB_Flags;                /* Reserved */
64  DWORD        SRB_Hdr_Rsvd;             /* Reserved */
65  BYTE         SRB_Target;               /* Target's SCSI ID */
66  BYTE         SRB_Lun;                  /* Target's LUN number */
67  BYTE         SRB_Rsvd1[12];            /* Reserved for Alignment */
68  BYTE         SRB_HaStat;               /* Host Adapter Status */
69  BYTE         SRB_TargStat;             /* Target Status */
70  void         (*SRB_PostProc)();        /* Post routine */
71  void         *SRB_Rsvd2;               /* Reserved */
72  BYTE         SRB_Rsvd3[32];            /* Reserved */
73 } SRB_BusDeviceReset WINE_PACKED;
74
75 typedef struct tagSRB_GDEVBlock {
76  BYTE  SRB_Cmd;                 /* ASPI command code = SC_GET_DEV_TYPE */
77  BYTE  SRB_Status;              /* ASPI command status byte */
78  BYTE  SRB_HaId;                /* ASPI host adapter number */
79  BYTE  SRB_Flags;               /* Reserved */
80  DWORD  SRB_Hdr_Rsvd;           /* Reserved */
81  BYTE  SRB_Target;              /* Target's SCSI ID */
82  BYTE  SRB_Lun;                 /* Target's LUN number */
83  BYTE  SRB_DeviceType;          /* Target's peripheral device type */
84  BYTE  SRB_Rsvd1;
85 } SRB_GDEVBlock WINE_PACKED;
86
87 typedef struct tagSRB_Common {
88   BYTE  SRB_Cmd;
89 } SRB_Common;
90
91 union SRB {
92   SRB_Common          common;
93   SRB_HaInquiry       inquiry;
94   SRB_ExecSCSICmd     cmd;
95   SRB_Abort           abort;
96   SRB_BusDeviceReset  reset;
97   SRB_GDEVBlock       devtype;
98 };
99
100 typedef union SRB SRB;
101
102 #include "poppack.h"
103
104 #endif /* __WINE_WNASPI32_H */