Imported Upstream version 1.1.11
[platform/upstream/cdrkit.git] / libusal / usal / spti-wnt.h
1 /*
2  * This file has been modified for the cdrkit suite.
3  *
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).
6  *
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.
10  *
11  */
12
13 /*
14  * distilled information from various header files from Microsoft's
15  * DDK for Windows NT 4.0
16  */
17 #ifndef _SCSIPT_H_INC
18 #define _SCSIPT_H_INC
19
20 #include <windows.h>
21
22 typedef struct {
23         USHORT          Length;
24         UCHAR           ScsiStatus;
25         UCHAR           PathId;
26         UCHAR           TargetId;
27         UCHAR           Lun;
28         UCHAR           CdbLength;
29         UCHAR           SenseInfoLength;
30         UCHAR           DataIn;
31         ULONG           DataTransferLength;
32         ULONG           TimeOutValue;
33         ULONG           DataBufferOffset;
34         ULONG           SenseInfoOffset;
35         UCHAR           Cdb[16];
36 } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
37
38
39 typedef struct {
40         USHORT          Length;
41         UCHAR           ScsiStatus;
42         UCHAR           PathId;
43         UCHAR           TargetId;
44         UCHAR           Lun;
45         UCHAR           CdbLength;
46         UCHAR           SenseInfoLength;
47         UCHAR           DataIn;
48         ULONG           DataTransferLength;
49         ULONG           TimeOutValue;
50         PVOID           DataBuffer;
51         ULONG           SenseInfoOffset;
52         UCHAR           Cdb[16];
53 } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
54
55
56 typedef struct {
57         SCSI_PASS_THROUGH spt;
58         ULONG           Filler;
59         UCHAR           ucSenseBuf[32];
60         UCHAR           ucDataBuf[512];
61 } SCSI_PASS_THROUGH_WITH_BUFFERS, *PSCSI_PASS_THROUGH_WITH_BUFFERS;
62
63
64 typedef struct {
65         SCSI_PASS_THROUGH_DIRECT spt;
66         ULONG           Filler;
67         UCHAR           ucSenseBuf[32];
68 } SCSI_PASS_THROUGH_DIRECT_WITH_BUFFER, *PSCSI_PASS_THROUGH_DIRECT_WITH_BUFFER;
69
70
71
72 typedef struct {
73         UCHAR           NumberOfLogicalUnits;
74         UCHAR           InitiatorBusId;
75         ULONG           InquiryDataOffset;
76 } SCSI_BUS_DATA, *PSCSI_BUS_DATA;
77
78
79 typedef struct {
80         UCHAR           NumberOfBusses;
81         SCSI_BUS_DATA   BusData[1];
82 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
83
84
85 typedef struct {
86         UCHAR           PathId;
87         UCHAR           TargetId;
88         UCHAR           Lun;
89         BOOLEAN         DeviceClaimed;
90         ULONG           InquiryDataLength;
91         ULONG           NextInquiryDataOffset;
92         UCHAR           InquiryData[1];
93 } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
94
95
96 typedef struct {
97         ULONG           Length;
98         UCHAR           PortNumber;
99         UCHAR           PathId;
100         UCHAR           TargetId;
101         UCHAR           Lun;
102 } SCSI_ADDRESS, *PSCSI_ADDRESS;
103
104
105 /*
106  * method codes
107  */
108 #define METHOD_BUFFERED         0
109 #define METHOD_IN_DIRECT        1
110 #define METHOD_OUT_DIRECT       2
111 #define METHOD_NEITHER          3
112
113 /*
114  * file access values
115  */
116 #define FILE_ANY_ACCESS         0
117 #define FILE_READ_ACCESS        0x0001
118 #define FILE_WRITE_ACCESS       0x0002
119
120
121 #define IOCTL_SCSI_BASE    0x00000004
122
123 /*
124  * constants for DataIn member of SCSI_PASS_THROUGH* structures
125  */
126 #define SCSI_IOCTL_DATA_OUT             0
127 #define SCSI_IOCTL_DATA_IN              1
128 #define SCSI_IOCTL_DATA_UNSPECIFIED     2
129
130 /*
131  * Standard IOCTL define
132  */
133 #define CTL_CODE(DevType, Function, Method, Access)             \
134         (((DevType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method))
135
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)
142
143 #endif