Top level windows with 0 width or height are created with a size of 1x1 in
[wine] / include / wnaspi32.h
1 #ifndef __WNASPI32_H__
2 #define __WNASPI32_H__
3
4 #define FAR
5 /* This file should be 100% source compatible according to MSes docs and
6  * Adaptecs docs */
7 /* Include base aspi defs */
8 #include "aspi.h"
9
10 #include "pshpack1.h"
11 #ifdef __cplusplus
12 extern "C" {
13 #endif /* #ifdef __cplusplus */
14
15 /* Additional definitions */
16 /* SCSI Miscellaneous Stuff */
17 #define SRB_EVENT_NOTIFY                0x40
18 #define RESIDUAL_COUNT_SUPPORTED        0x02
19 #define MAX_SRB_TIMEOUT                 1080001u
20 #define DEFAULT_SRB_TIMEOUT             1080001u
21
22 /* These are defined by MS but not adaptec */
23 #define SRB_DATA_SG_LIST                0x02
24 #define WM_ASPIPOST                     0x4D42
25
26
27 /* ASPI Command Definitions */
28 #define SC_RESCAN_SCSI_BUS              0x07
29 #define SC_GETSET_TIMEOUTS              0x08
30
31 /* SRB Status.. MS defined */
32 #define SS_SECURITY_VIOLATION           0xE2 // Replaces SS_INVALID_MODE
33 /*** END DEFS */
34
35 /* SRB - HOST ADAPTER INQUIRY - SC_HA_INQUIRY */
36 struct tagSRB32_HaInquiry {
37  BYTE  SRB_Cmd;                 /* ASPI command code = SC_HA_INQUIRY */
38  BYTE  SRB_Status;              /* ASPI command status byte */
39  BYTE  SRB_HaId;                /* ASPI host adapter number */
40  BYTE  SRB_Flags;               /* ASPI request flags */
41  DWORD  SRB_Hdr_Rsvd;           /* Reserved, MUST = 0 */
42  BYTE  HA_Count;                /* Number of host adapters present */
43  BYTE  HA_SCSI_ID;              /* SCSI ID of host adapter */
44  BYTE  HA_ManagerId[16];        /* String describing the manager */
45  BYTE  HA_Identifier[16];       /* String describing the host adapter */
46  BYTE  HA_Unique[16];           /* Host Adapter Unique parameters */
47  WORD  HA_Rsvd1;
48 } WINE_PACKED;
49
50 /* SRB - GET DEVICE TYPE - SC_GET_DEV_TYPE */
51 struct tagSRB32_GDEVBlock {
52  BYTE  SRB_Cmd;                 /* ASPI command code = SC_GET_DEV_TYPE */
53  BYTE  SRB_Status;              /* ASPI command status byte */
54  BYTE  SRB_HaId;                /* ASPI host adapter number */
55  BYTE  SRB_Flags;               /* Reserved */
56  DWORD  SRB_Hdr_Rsvd;           /* Reserved */
57  BYTE  SRB_Target;              /* Target's SCSI ID */
58  BYTE  SRB_Lun;                 /* Target's LUN number */
59  BYTE  SRB_DeviceType;          /* Target's peripheral device type */
60  BYTE  SRB_Rsvd1;
61 } WINE_PACKED;
62
63 /* SRB - EXECUTE SCSI COMMAND - SC_EXEC_SCSI_CMD */
64 struct tagSRB32_ExecSCSICmd {
65   BYTE        SRB_Cmd;            /* ASPI command code = SC_EXEC_SCSI_CMD */
66   BYTE        SRB_Status;         /* ASPI command status byte */
67   BYTE        SRB_HaId;           /* ASPI host adapter number */
68   BYTE        SRB_Flags;          /* ASPI request flags */
69   DWORD       SRB_Hdr_Rsvd;       /* Reserved */
70   BYTE        SRB_Target;         /* Target's SCSI ID */
71   BYTE        SRB_Lun;            /* Target's LUN number */
72   WORD        SRB_Rsvd1;          /* Reserved for Alignment */
73   DWORD       SRB_BufLen;         /* Data Allocation Length */
74   BYTE        *SRB_BufPointer;    /* Data Buffer Point */
75   BYTE        SRB_SenseLen;       /* Sense Allocation Length */
76   BYTE        SRB_CDBLen;         /* CDB Length */
77   BYTE        SRB_HaStat;         /* Host Adapter Status */
78   BYTE        SRB_TargStat;       /* Target Status */
79   void        (*SRB_PostProc)();  /* Post routine */
80   void        *SRB_Rsvd2;         /* Reserved */
81   BYTE        SRB_Rsvd3[16];      /* Reserved for expansion */
82   BYTE        CDBByte[16];        /* SCSI CDB */
83   BYTE        SenseArea[0];       /* Request sense buffer - var length */
84 } WINE_PACKED;
85
86 /* SRB - ABORT AN ARB - SC_ABORT_SRB */
87 struct tagSRB32_Abort {
88   BYTE        SRB_Cmd;            /* ASPI command code = SC_ABORT_SRB */
89   BYTE        SRB_Status;         /* ASPI command status byte */
90   BYTE        SRB_HaId;           /* ASPI host adapter number */
91   BYTE        SRB_Flags;          /* Reserved */
92   DWORD       SRB_Hdr_Rsvd;       /* Reserved, MUST = 0 */
93   VOID        FAR *SRB_ToAbort;   /* Pointer to SRB to abort */
94 } WINE_PACKED;
95
96 /* SRB - BUS DEVICE RESET - SC_RESET_DEV */
97 struct tagSRB32_BusDeviceReset {
98  BYTE         SRB_Cmd;                  /* ASPI command code = SC_RESET_DEV */
99  BYTE         SRB_Status;               /* ASPI command status byte */
100  BYTE         SRB_HaId;                 /* ASPI host adapter number */
101  BYTE         SRB_Flags;                /* Reserved */
102  DWORD        SRB_Hdr_Rsvd;             /* Reserved */
103  BYTE         SRB_Target;               /* Target's SCSI ID */
104  BYTE         SRB_Lun;                  /* Target's LUN number */
105  BYTE         SRB_Rsvd1[12];            /* Reserved for Alignment */
106  BYTE         SRB_HaStat;               /* Host Adapter Status */
107  BYTE         SRB_TargStat;             /* Target Status */
108  void         (*SRB_PostProc)();        /* Post routine */
109  void         *SRB_Rsvd2;               /* Reserved */
110  BYTE         SRB_Rsvd3[32];            /* Reserved */
111 } WINE_PACKED;
112
113 /* SRB - GET DISK INFORMATION - SC_GET_DISK_INFO */
114 struct tagSRB32_GetDiskInfo {
115  BYTE         SRB_Cmd;                  /* ASPI command code = SC_RESET_DEV */
116  BYTE         SRB_Status;               /* ASPI command status byte */
117  BYTE         SRB_HaId;                 /* ASPI host adapter number */
118  BYTE         SRB_Flags;                /* Reserved */
119  DWORD        SRB_Hdr_Rsvd;             /* Reserved */
120  BYTE         SRB_Target;               /* Target's SCSI ID */
121  BYTE         SRB_Lun;                  /* Target's LUN number */
122  BYTE         SRB_DriveFlags;           /* Driver flags */
123  BYTE         SRB_Int13HDriveInfo;      /* Host Adapter Status */
124  BYTE         SRB_Heads;                /* Preferred number of heads trans */
125  BYTE         SRB_Sectors;              /* Preferred number of sectors trans */
126  BYTE         SRB_Rsvd1[10];            /* Reserved */
127 } WINE_PACKED;
128
129 /* SRB header */
130 struct tagSRB32_Header {
131  BYTE         SRB_Cmd;                  /* ASPI command code = SC_RESET_DEV */
132  BYTE         SRB_Status;               /* ASPI command status byte */
133  BYTE         SRB_HaId;                 /* ASPI host adapter number */
134  BYTE         SRB_Flags;                /* Reserved */
135  DWORD        SRB_Hdr_Rsvd;             /* Reserved */
136 } WINE_PACKED;
137
138 union tagSRB32 {
139   struct tagSRB32_Header          common;
140   struct tagSRB32_HaInquiry       inquiry;
141   struct tagSRB32_ExecSCSICmd     cmd;
142   struct tagSRB32_Abort           abort;
143   struct tagSRB32_BusDeviceReset  reset;
144   struct tagSRB32_GDEVBlock       devtype;
145 };
146
147 /* Typedefs */
148 #define typedefSRB(name) \
149 typedef struct tagSRB32_##name \
150 SRB_##name##, *PSRB_##name
151 typedefSRB(HaInquiry);
152 typedefSRB(GDEVBlock);
153 typedefSRB(ExecSCSICmd);
154 typedefSRB(Abort);
155 typedefSRB(BusDeviceReset);
156 typedefSRB(GetDiskInfo);
157 typedefSRB(Header);
158 #undef typedefSRB
159
160 typedef union tagSRB32 SRB, *PSRB, *LPSRB;
161
162 /* Prototypes */
163 extern DWORD __cdecl
164 SendASPI32Command (PSRB);
165 extern DWORD WINAPI
166 GetASPI32SupportInfo (void);
167 extern DWORD WINAPI
168 GetASPI32DLLVersion(void);
169
170 #ifdef __cplusplus
171 }
172 #endif /* #ifdef __cplusplus */
173 #include "poppack.h"
174
175 #endif /* __WNASPI32_H__ */