3 * COPYRIGHT: See COPYING in the top level directory
4 * PROJECT: ReactOS kernel
5 * FILE: services/storage/include/ntddscsi.h
6 * PURPOSE: Basic SCSI definitions
7 * PROGRAMMER: Eric Kohl (ekohl@rz-online.de)
10 #ifndef __STORAGE_INCLUDE_NTDDSCSI_H
11 #define __STORAGE_INCLUDE_NTDDSCSI_H
14 #define IOCTL_SCSI_PASS_THROUGH \
15 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
16 #define IOCTL_SCSI_MINIPORT \
17 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
18 #define IOCTL_SCSI_GET_INQUIRY_DATA \
19 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
20 #define IOCTL_SCSI_GET_CAPABILITIES \
21 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
22 #define IOCTL_SCSI_PASS_THROUGH_DIRECT \
23 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
24 #define IOCTL_SCSI_GET_ADDRESS \
25 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
26 #define IOCTL_SCSI_RESCAN_BUS \
27 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
28 #define IOCTL_SCSI_GET_DUMP_POINTERS \
29 CTL_CODE(FILE_DEVICE_CONTROLLER, 0x0408, METHOD_BUFFERED, FILE_ANY_ACCESS)
33 /* Used by IOCTL_SCSI_GET_CAPABILITIES */
35 typedef struct _IO_SCSI_CAPABILITIES
38 ULONG MaximumTransferLength;
39 ULONG MaximumPhysicalPages;
40 ULONG SupportedAsynchronousEvents;
42 BOOLEAN TaggedQueuing;
43 BOOLEAN AdapterScansDown;
44 BOOLEAN AdapterUsesPio;
45 } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
48 /* Used by IOCTL_SCSI_GET_INQUIRY_DATA */
50 typedef struct _SCSI_BUS_DATA
52 UCHAR NumberOfLogicalUnits;
54 ULONG InquiryDataOffset;
55 }SCSI_BUS_DATA, *PSCSI_BUS_DATA;
58 typedef struct _SCSI_ADAPTER_BUS_INFO
61 SCSI_BUS_DATA BusData[1];
62 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
65 typedef struct _SCSI_INQUIRY_DATA
70 BOOLEAN DeviceClaimed;
71 ULONG InquiryDataLength;
72 ULONG NextInquiryDataOffset;
74 }SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
77 /* Used by IOCTL_SCSI_GET_ADDRESS */
79 typedef struct _SCSI_ADDRESS
86 } SCSI_ADDRESS, *PSCSI_ADDRESS;
89 /* Used by IOCTL_SCSI_PASS_THROUGH */
91 typedef struct _SCSI_PASS_THROUGH
99 UCHAR SenseInfoLength;
101 ULONG DataTransferLength;
103 ULONG DataBufferOffset;
104 ULONG SenseInfoOffset;
106 } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
109 /* Used by IOCTL_SCSI_PASS_THROUGH_DIRECT */
111 typedef struct _SCSI_PASS_THROUGH_DIRECT
119 UCHAR SenseInfoLength;
121 ULONG DataTransferLength;
123 ULONG DataBufferOffset;
124 ULONG SenseInfoOffset;
126 } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
129 /* Pass through DataIn */
131 #define SCSI_IOCTL_DATA_OUT 0
132 #define SCSI_IOCTL_DATA_IN 1
133 #define SCSI_IOCTL_DATA_UNSPECIFIED 2
135 typedef struct _DUMP_POINTERS
138 } DUMP_POINTERS, *PDUMP_POINTERS;
140 #endif /* __STORAGE_INCLUDE_NTDDSCSI_H */