Do not crash if there was no files selected and OK button was pressed.
[wine/dcerpc.git] / include / wnaspi32.h
blobc5fc1c6a6c7409aea0e6e851870c6d62e4d5b5ba
1 #ifndef __WNASPI32_H__
2 #define __WNASPI32_H__
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"
10 #include "pshpack1.h"
11 #ifdef __cplusplus
12 extern "C" {
13 #endif /* #ifdef __cplusplus */
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
22 /* These are defined by MS but not adaptec */
23 #define SRB_DATA_SG_LIST 0x02
24 #define WM_ASPIPOST 0x4D42
27 /* ASPI Command Definitions */
28 #define SC_RESCAN_SCSI_BUS 0x07
29 #define SC_GETSET_TIMEOUTS 0x08
31 /* SRB Status.. MS defined */
32 #define SS_SECURITY_VIOLATION 0xE2 // Replaces SS_INVALID_MODE
33 /*** END DEFS */
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;
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;
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;
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;
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;
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;
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;
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;
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
160 typedef union tagSRB32 SRB, *PSRB, *LPSRB;
162 /* Prototypes */
163 extern DWORD __cdecl
164 SendASPI32Command (PSRB);
165 extern DWORD WINAPI
166 GetASPI32SupportInfo (void);
167 extern DWORD WINAPI
168 GetASPI32DLLVersion(void);
170 #ifdef __cplusplus
172 #endif /* #ifdef __cplusplus */
173 #include "poppack.h"
175 #endif /* __WNASPI32_H__ */