2 * This file has been modified for the cdrkit suite.
4 * The behaviour and appearence of the program code below can differ to a major
5 * extent from the version distributed by the original author(s).
7 * For details, see Changelog file distributed with the cdrkit package. If you
8 * received this file from another source then ask the distributing person for
9 * a log of modifications.
14 * distilled information from various header files from Microsoft's
15 * DDK for Windows NT 4.0
29 UCHAR SenseInfoLength;
31 ULONG DataTransferLength;
33 ULONG DataBufferOffset;
34 ULONG SenseInfoOffset;
36 } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
46 UCHAR SenseInfoLength;
48 ULONG DataTransferLength;
51 ULONG SenseInfoOffset;
53 } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
57 SCSI_PASS_THROUGH spt;
61 } SCSI_PASS_THROUGH_WITH_BUFFERS, *PSCSI_PASS_THROUGH_WITH_BUFFERS;
65 SCSI_PASS_THROUGH_DIRECT spt;
68 } SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, *PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER;
73 UCHAR NumberOfLogicalUnits;
75 ULONG InquiryDataOffset;
76 } SCSI_BUS_DATA, *PSCSI_BUS_DATA;
81 SCSI_BUS_DATA BusData[1];
82 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
89 BOOLEAN DeviceClaimed;
90 ULONG InquiryDataLength;
91 ULONG NextInquiryDataOffset;
93 } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
102 } SCSI_ADDRESS, *PSCSI_ADDRESS;
108 #define METHOD_BUFFERED 0
109 #define METHOD_IN_DIRECT 1
110 #define METHOD_OUT_DIRECT 2
111 #define METHOD_NEITHER 3
116 #define FILE_ANY_ACCESS 0
117 #define FILE_READ_ACCESS 0x0001
118 #define FILE_WRITE_ACCESS 0x0002
121 #define IOCTL_SCSI_BASE 0x00000004
124 * constants for DataIn member of SCSI_PASS_THROUGH* structures
126 #define SCSI_IOCTL_DATA_OUT 0
127 #define SCSI_IOCTL_DATA_IN 1
128 #define SCSI_IOCTL_DATA_UNSPECIFIED 2
131 * Standard IOCTL define
133 #define CTL_CODE(DevType, Function, Method, Access) \
134 (((DevType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
136 #define IOCTL_SCSI_PASS_THROUGH CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
137 #define IOCTL_SCSI_MINIPORT CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
138 #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
139 #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
140 #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
141 #define IOCTL_SCSI_GET_ADDRESS CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)