- added instructions how to update the online documentation
[bochs-mirror.git] / iodev / scsipt.h
blob4948a8e5a8f8f822558fc8d413c383019985abfb
1 /////////////////////////////////////////////////////////////////////////
2 // $Id: scsipt.h,v 1.5 2008/02/15 22:05:43 sshwarts Exp $
3 /////////////////////////////////////////////////////////////////////////
4 //
5 //
6 // iodev/scsipt.h
7 // $Id: scsipt.h,v 1.5 2008/02/15 22:05:43 sshwarts Exp $
8 //
9 // This file was copied from ... ?
11 // distilled information from various header files from Microsoft's
12 // DDK for Windows NT 4.0
15 #ifndef _SCSIPT_H_INC
16 #define _SCSIPT_H_INC
18 #include <windows.h>
20 typedef struct {
21 USHORT Length;
22 UCHAR ScsiStatus;
23 UCHAR PathId;
24 UCHAR TargetId;
25 UCHAR Lun;
26 UCHAR CdbLength;
27 UCHAR SenseInfoLength;
28 UCHAR DataIn;
29 ULONG DataTransferLength;
30 ULONG TimeOutValue;
31 ULONG DataBufferOffset;
32 ULONG SenseInfoOffset;
33 UCHAR Cdb[16];
34 } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
37 typedef struct {
38 USHORT Length;
39 UCHAR ScsiStatus;
40 UCHAR PathId;
41 UCHAR TargetId;
42 UCHAR Lun;
43 UCHAR CdbLength;
44 UCHAR SenseInfoLength;
45 UCHAR DataIn;
46 ULONG DataTransferLength;
47 ULONG TimeOutValue;
48 PVOID DataBuffer;
49 ULONG SenseInfoOffset;
50 UCHAR Cdb[16];
51 } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
54 typedef struct {
55 SCSI_PASS_THROUGH spt;
56 ULONG Filler;
57 UCHAR ucSenseBuf[32];
58 UCHAR ucDataBuf[512];
59 } SCSI_PASS_THROUGH_WITH_BUFFERS, *PSCSI_PASS_THROUGH_WITH_BUFFERS;
62 typedef struct {
63 SCSI_PASS_THROUGH_DIRECT spt;
64 ULONG Filler;
65 UCHAR ucSenseBuf[32];
66 } SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, *PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER;
70 typedef struct {
71 UCHAR NumberOfLogicalUnits;
72 UCHAR InitiatorBusId;
73 ULONG InquiryDataOffset;
74 } SCSI_BUS_DATA, *PSCSI_BUS_DATA;
77 typedef struct {
78 UCHAR NumberOfBusses;
79 SCSI_BUS_DATA BusData[1];
80 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
83 typedef struct {
84 UCHAR PathId;
85 UCHAR TargetId;
86 UCHAR Lun;
87 BOOLEAN DeviceClaimed;
88 ULONG InquiryDataLength;
89 ULONG NextInquiryDataOffset;
90 UCHAR InquiryData[1];
91 } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
94 typedef struct {
95 ULONG Length;
96 UCHAR PortNumber;
97 UCHAR PathId;
98 UCHAR TargetId;
99 UCHAR Lun;
100 } SCSI_ADDRESS, *PSCSI_ADDRESS;
104 * method codes
106 #define METHOD_BUFFERED 0
107 #define METHOD_IN_DIRECT 1
108 #define METHOD_OUT_DIRECT 2
109 #define METHOD_NEITHER 3
112 * file access values
114 #define FILE_ANY_ACCESS 0
115 #define FILE_READ_ACCESS (0x0001)
116 #define FILE_WRITE_ACCESS (0x0002)
119 #define IOCTL_SCSI_BASE 0x00000004
122 * constants for DataIn member of SCSI_PASS_THROUGH* structures
124 #define SCSI_IOCTL_DATA_OUT 0
125 #define SCSI_IOCTL_DATA_IN 1
126 #define SCSI_IOCTL_DATA_UNSPECIFIED 2
129 * Standard IOCTL define
131 #define CTL_CODE(DevType, Function, Method, Access) ( \
132 ((DevType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method) \
135 #define IOCTL_SCSI_PASS_THROUGH CTL_CODE( IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
136 #define IOCTL_SCSI_MINIPORT CTL_CODE( IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
137 #define IOCTL_SCSI_GET_INQUIRY_DATA CTL_CODE( IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
138 #define IOCTL_SCSI_GET_CAPABILITIES CTL_CODE( IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
139 #define IOCTL_SCSI_PASS_THROUGH_DIRECT CTL_CODE( IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS )
140 #define IOCTL_SCSI_GET_ADDRESS CTL_CODE( IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS )
144 #endif