2 * This file has no copyright assigned and is placed in the Public Domain.
3 * This file is part of the w64 mingw-runtime package.
4 * No warranty is given; refer to the file DISCLAIMER.PD within this package.
12 DEFINE_GUID(ScsiRawInterfaceGuid
,0x53f56309L
,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b);
13 DEFINE_GUID(WmiScsiAddressGuid
,0x53f5630fL
,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b);
14 #endif /* DEFINE_GUID */
23 #define IOCTL_SCSI_BASE FILE_DEVICE_CONTROLLER
25 #define DD_SCSI_DEVICE_NAME "\\Device\\ScsiPort"
26 #define DD_SCSI_DEVICE_NAME_U L"\\Device\\ScsiPort"
28 #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
29 #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE,0x0402,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
30 #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE,0x0403,METHOD_BUFFERED,FILE_ANY_ACCESS)
31 #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE,0x0404,METHOD_BUFFERED,FILE_ANY_ACCESS)
32 #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE,0x0405,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
33 #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE,0x0406,METHOD_BUFFERED,FILE_ANY_ACCESS)
34 #define IOCTL_SCSI_RESCAN_BUS CTL_CODE(IOCTL_SCSI_BASE,0x0407,METHOD_BUFFERED,FILE_ANY_ACCESS)
35 #define IOCTL_SCSI_GET_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE,0x0408,METHOD_BUFFERED,FILE_ANY_ACCESS)
36 #define IOCTL_SCSI_FREE_DUMP_POINTERS CTL_CODE(IOCTL_SCSI_BASE,0x0409,METHOD_BUFFERED,FILE_ANY_ACCESS)
37 #define IOCTL_IDE_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE,0x040a,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
38 #define IOCTL_ATA_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE,0x040b,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
39 #define IOCTL_ATA_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE,0x040c,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS)
41 typedef struct _SCSI_PASS_THROUGH
{
48 UCHAR SenseInfoLength
;
50 ULONG DataTransferLength
;
52 ULONG_PTR DataBufferOffset
;
53 ULONG SenseInfoOffset
;
55 }SCSI_PASS_THROUGH
,*PSCSI_PASS_THROUGH
;
57 typedef struct _SCSI_PASS_THROUGH_DIRECT
{
64 UCHAR SenseInfoLength
;
66 ULONG DataTransferLength
;
69 ULONG SenseInfoOffset
;
71 }SCSI_PASS_THROUGH_DIRECT
,*PSCSI_PASS_THROUGH_DIRECT
;
74 typedef struct _SCSI_PASS_THROUGH32
{
81 UCHAR SenseInfoLength
;
83 ULONG DataTransferLength
;
85 ULONG32 DataBufferOffset
;
86 ULONG SenseInfoOffset
;
88 } SCSI_PASS_THROUGH32
,*PSCSI_PASS_THROUGH32
;
90 typedef struct _SCSI_PASS_THROUGH_DIRECT32
{
97 UCHAR SenseInfoLength
;
99 ULONG DataTransferLength
;
102 ULONG SenseInfoOffset
;
104 } SCSI_PASS_THROUGH_DIRECT32
,*PSCSI_PASS_THROUGH_DIRECT32
;
107 typedef struct _ATA_PASS_THROUGH_EX
{
113 UCHAR ReservedAsUchar
;
114 ULONG DataTransferLength
;
116 ULONG ReservedAsUlong
;
117 ULONG_PTR DataBufferOffset
;
118 UCHAR PreviousTaskFile
[8];
119 UCHAR CurrentTaskFile
[8];
120 } ATA_PASS_THROUGH_EX
,*PATA_PASS_THROUGH_EX
;
122 typedef struct _ATA_PASS_THROUGH_DIRECT
{
128 UCHAR ReservedAsUchar
;
129 ULONG DataTransferLength
;
131 ULONG ReservedAsUlong
;
133 UCHAR PreviousTaskFile
[8];
134 UCHAR CurrentTaskFile
[8];
135 } ATA_PASS_THROUGH_DIRECT
,*PATA_PASS_THROUGH_DIRECT
;
139 typedef struct _ATA_PASS_THROUGH_EX32
{
145 UCHAR ReservedAsUchar
;
146 ULONG DataTransferLength
;
148 ULONG ReservedAsUlong
;
149 ULONG32 DataBufferOffset
;
150 UCHAR PreviousTaskFile
[8];
151 UCHAR CurrentTaskFile
[8];
152 } ATA_PASS_THROUGH_EX32
,*PATA_PASS_THROUGH_EX32
;
154 typedef struct _ATA_PASS_THROUGH_DIRECT32
{
160 UCHAR ReservedAsUchar
;
161 ULONG DataTransferLength
;
163 ULONG ReservedAsUlong
;
165 UCHAR PreviousTaskFile
[8];
166 UCHAR CurrentTaskFile
[8];
167 } ATA_PASS_THROUGH_DIRECT32
,*PATA_PASS_THROUGH_DIRECT32
;
170 #define ATA_FLAGS_DRDY_REQUIRED (1 << 0)
171 #define ATA_FLAGS_DATA_IN (1 << 1)
172 #define ATA_FLAGS_DATA_OUT (1 << 2)
173 #define ATA_FLAGS_48BIT_COMMAND (1 << 3)
174 #define ATA_FLAGS_USE_DMA (1 << 4)
176 typedef struct _SCSI_BUS_DATA
{
177 UCHAR NumberOfLogicalUnits
;
178 UCHAR InitiatorBusId
;
179 ULONG InquiryDataOffset
;
180 }SCSI_BUS_DATA
,*PSCSI_BUS_DATA
;
182 typedef struct _SCSI_ADAPTER_BUS_INFO
{
184 SCSI_BUS_DATA BusData
[1];
185 } SCSI_ADAPTER_BUS_INFO
,*PSCSI_ADAPTER_BUS_INFO
;
187 typedef struct _SCSI_INQUIRY_DATA
{
191 BOOLEAN DeviceClaimed
;
192 ULONG InquiryDataLength
;
193 ULONG NextInquiryDataOffset
;
194 UCHAR InquiryData
[1];
195 }SCSI_INQUIRY_DATA
,*PSCSI_INQUIRY_DATA
;
197 typedef struct _SRB_IO_CONTROL
{
204 } SRB_IO_CONTROL
,*PSRB_IO_CONTROL
;
206 typedef struct _IO_SCSI_CAPABILITIES
{
208 ULONG MaximumTransferLength
;
209 ULONG MaximumPhysicalPages
;
210 ULONG SupportedAsynchronousEvents
;
212 BOOLEAN TaggedQueuing
;
213 BOOLEAN AdapterScansDown
;
214 BOOLEAN AdapterUsesPio
;
215 } IO_SCSI_CAPABILITIES
,*PIO_SCSI_CAPABILITIES
;
217 typedef struct _SCSI_ADDRESS
{
223 } SCSI_ADDRESS
,*PSCSI_ADDRESS
;
225 struct _ADAPTER_OBJECT
;
227 typedef struct _DUMP_POINTERS
{
228 struct _ADAPTER_OBJECT
*AdapterObject
;
229 PVOID MappedRegisterBase
;
231 PVOID CommonBufferVa
;
232 LARGE_INTEGER CommonBufferPa
;
233 ULONG CommonBufferSize
;
234 BOOLEAN AllocateCommonBuffers
;
238 } DUMP_POINTERS
,*PDUMP_POINTERS
;
240 #define SCSI_IOCTL_DATA_OUT 0
241 #define SCSI_IOCTL_DATA_IN 1
242 #define SCSI_IOCTL_DATA_UNSPECIFIED 2
248 #endif /* _NTDDSCSIH_ */