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