OSDN Git Service

Apply LICENSE to all files as appropriate.
[mingw/mingw-org-wsl.git] / include / ddk / ntddscsi.h
1 /**
2  * @file ntddscsi.h
3  * @copy 2012 MinGW.org project
4  *
5  * Permission is hereby granted, free of charge, to any person obtaining a
6  * copy of this software and associated documentation files (the "Software"),
7  * to deal in the Software without restriction, including without limitation
8  * the rights to use, copy, modify, merge, publish, distribute, sublicense,
9  * and/or sell copies of the Software, and to permit persons to whom the
10  * Software is furnished to do so, subject to the following conditions:
11  * 
12  * The above copyright notice and this permission notice (including the next
13  * paragraph) shall be included in all copies or substantial portions of the
14  * Software.
15  * 
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
19  * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
21  * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
22  * DEALINGS IN THE SOFTWARE.
23  */
24 /*
25  * ntddscsi.h
26  *
27  * SCSI port IOCTL interface.
28  *
29  * This file is part of the w32api package.
30  *
31  * Contributors:
32  *   Created by Casper S. Hornstrup <chorns@users.sourceforge.net>
33  *
34  * THIS SOFTWARE IS NOT COPYRIGHTED
35  *
36  * This source code is offered for use in the public domain. You may
37  * use, modify or distribute it freely.
38  *
39  * This code is distributed in the hope that it will be useful but
40  * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY
41  * DISCLAIMED. This includes but is not limited to warranties of
42  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
43  *
44  */
45
46 #ifndef __NTDDSCSI_H
47 #define __NTDDSCSI_H
48 #pragma GCC system_header
49
50 #ifdef __cplusplus
51 extern "C" {
52 #endif
53
54 #include "ntddk.h"
55
56 #define DD_SCSI_DEVICE_NAME               "\\Device\\ScsiPort"
57 #define DD_SCSI_DEVICE_NAME_U             L"\\Device\\ScsiPort"
58
59 #define IOCTL_SCSI_BASE                   FILE_DEVICE_CONTROLLER
60
61 #define IOCTL_SCSI_GET_INQUIRY_DATA \
62   CTL_CODE(IOCTL_SCSI_BASE, 0x0403, METHOD_BUFFERED, FILE_ANY_ACCESS)
63
64 #define IOCTL_SCSI_GET_CAPABILITIES \
65   CTL_CODE(IOCTL_SCSI_BASE, 0x0404, METHOD_BUFFERED, FILE_ANY_ACCESS)
66
67 #define IOCTL_SCSI_GET_ADDRESS \
68   CTL_CODE(IOCTL_SCSI_BASE, 0x0406, METHOD_BUFFERED, FILE_ANY_ACCESS)
69
70 #define IOCTL_SCSI_MINIPORT \
71   CTL_CODE(IOCTL_SCSI_BASE, 0x0402, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
72
73 #define IOCTL_SCSI_PASS_THROUGH \
74   CTL_CODE(IOCTL_SCSI_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
75
76 #define IOCTL_SCSI_PASS_THROUGH_DIRECT \
77   CTL_CODE(IOCTL_SCSI_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS)
78
79 #define IOCTL_SCSI_RESCAN_BUS \
80   CTL_CODE(IOCTL_SCSI_BASE, 0x0407, METHOD_BUFFERED, FILE_ANY_ACCESS)
81
82
83 DEFINE_GUID(ScsiRawInterfaceGuid, \
84   0x53f56309L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
85
86 DEFINE_GUID(WmiScsiAddressGuid, \
87   0x53f5630fL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b);
88
89 typedef struct _SCSI_PASS_THROUGH {
90   USHORT  Length;
91   UCHAR  ScsiStatus;
92   UCHAR  PathId;
93   UCHAR  TargetId;
94   UCHAR  Lun;
95   UCHAR  CdbLength;
96   UCHAR  SenseInfoLength;
97   UCHAR  DataIn;
98   ULONG  DataTransferLength;
99   ULONG  TimeOutValue;
100   ULONG_PTR DataBufferOffset;
101   ULONG  SenseInfoOffset;
102   UCHAR  Cdb[16];
103 } SCSI_PASS_THROUGH, *PSCSI_PASS_THROUGH;
104
105 typedef struct _SCSI_PASS_THROUGH_DIRECT {
106   USHORT  Length;
107   UCHAR  ScsiStatus;
108   UCHAR  PathId;
109   UCHAR  TargetId;
110   UCHAR  Lun;
111   UCHAR  CdbLength;
112   UCHAR  SenseInfoLength;
113   UCHAR  DataIn;
114   ULONG  DataTransferLength;
115   ULONG  TimeOutValue;
116   PVOID  DataBuffer;
117   ULONG  SenseInfoOffset;
118   UCHAR  Cdb[16];
119 } SCSI_PASS_THROUGH_DIRECT, *PSCSI_PASS_THROUGH_DIRECT;
120
121 typedef struct _SRB_IO_CONTROL { 
122   ULONG  HeaderLength; 
123   UCHAR  Signature[8]; 
124   ULONG  Timeout; 
125   ULONG  ControlCode; 
126   ULONG  ReturnCode; 
127   ULONG  Length; 
128 } SRB_IO_CONTROL, *PSRB_IO_CONTROL; 
129
130 typedef struct _SCSI_ADDRESS {
131         ULONG  Length;
132         UCHAR  PortNumber;
133         UCHAR  PathId;
134         UCHAR  TargetId;
135         UCHAR  Lun;
136 } SCSI_ADDRESS, *PSCSI_ADDRESS;
137
138 typedef struct _SCSI_BUS_DATA {
139         UCHAR  NumberOfLogicalUnits;
140         UCHAR  InitiatorBusId;
141         ULONG  InquiryDataOffset;
142 }SCSI_BUS_DATA, *PSCSI_BUS_DATA;
143
144 typedef struct _SCSI_ADAPTER_BUS_INFO {
145         UCHAR  NumberOfBuses;
146         SCSI_BUS_DATA  BusData[1];
147 } SCSI_ADAPTER_BUS_INFO, *PSCSI_ADAPTER_BUS_INFO;
148
149 typedef struct _IO_SCSI_CAPABILITIES {
150         ULONG  Length;
151         ULONG  MaximumTransferLength;
152         ULONG  MaximumPhysicalPages;
153         ULONG  SupportedAsynchronousEvents;
154         ULONG  AlignmentMask;
155         BOOLEAN  TaggedQueuing;
156         BOOLEAN  AdapterScansDown;
157         BOOLEAN  AdapterUsesPio;
158 } IO_SCSI_CAPABILITIES, *PIO_SCSI_CAPABILITIES;
159
160 typedef struct _SCSI_INQUIRY_DATA {
161         UCHAR  PathId;
162         UCHAR  TargetId;
163         UCHAR  Lun;
164         BOOLEAN  DeviceClaimed;
165         ULONG  InquiryDataLength;
166         ULONG  NextInquiryDataOffset;
167         UCHAR  InquiryData[1];
168 } SCSI_INQUIRY_DATA, *PSCSI_INQUIRY_DATA;
169
170 #define SCSI_IOCTL_DATA_OUT               0
171 #define SCSI_IOCTL_DATA_IN                1
172 #define SCSI_IOCTL_DATA_UNSPECIFIED       2
173
174 typedef struct _DUMP_POINTERS {
175         PADAPTER_OBJECT  AdapterObject;
176         PVOID  MappedRegisterBase;
177         PVOID  DumpData;
178         PVOID  CommonBufferVa;
179         LARGE_INTEGER  CommonBufferPa;
180         ULONG  CommonBufferSize;
181         BOOLEAN  AllocateCommonBuffers;
182         BOOLEAN  UseDiskDump;
183         UCHAR  Spare1[2];
184         PVOID  DeviceObject;
185 } DUMP_POINTERS, *PDUMP_POINTERS;
186
187 #ifdef __cplusplus
188 }
189 #endif
190
191 #endif /* __NTDDSCSI_H */