source: Daodan/MinGW/include/ddk/ntddstor.h@ 1098

Last change on this file since 1098 was 1046, checked in by alloc, 8 years ago

Daodan: Added Windows MinGW and build batch file

File size: 10.9 KB
Line 
1/*
2 * ddk/ntddstor.h
3 *
4 * Windows Device Driver Kit -- storage class IOCTL interface.
5 *
6 * $Id: ntddstor.h,v 6d2220f53104 2016/07/21 21:20:34 keithmarshall $
7 *
8 * Written by Casper S. Hornstrup <chorns@users.sourceforge.net>
9 * Copyright (C) 2002, 2004, 2015, 2016, MinGW.org Project.
10 *
11 *
12 * Permission is hereby granted, free of charge, to any person obtaining a
13 * copy of this software and associated documentation files (the "Software"),
14 * to deal in the Software without restriction, including without limitation
15 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
16 * and/or sell copies of the Software, and to permit persons to whom the
17 * Software is furnished to do so, subject to the following conditions:
18 *
19 * The above copyright notice, this permission notice, and the following
20 * disclaimer shall be included in all copies or substantial portions of
21 * the Software.
22 *
23 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
24 * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
25 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
26 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
27 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
28 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OF OR OTHER
29 * DEALINGS IN THE SOFTWARE.
30 *
31 */
32#ifndef _DDK_NTDDSTOR_H
33#pragma GCC system_header
34
35/* This file supports partial inclusion by <winioctl.h>; defer definition
36 * of its normal repeat inclusion guard macro...
37 */
38#ifndef __WINIOCTL_H_SOURCED__
39/* ...until we've ascertained that this is NOT such partial inclusion.
40 */
41#define _DDK_NTDDSTOR_H
42
43/* In case of full inclusion, we must also include the full content of:
44 */
45#include "ntddk.h"
46#endif
47
48#if ! (defined _DDK_NTDDSTOR_H && defined _WINIOCTL_H)
49/* The majority of the IOCTL_STORAGE control code generator macros,
50 * structural type STORAGE_BUS_TYPE, and its associated pointer type,
51 * are required to be defined by both <ddk/ntddstor.h> and <winioctl.h>,
52 * but if both repeat inclusion guards are already defined, then we've
53 * already seen this; there is no need to process it again.
54 */
55#define __IOCTL_STORAGE_(FN,M,A) CTL_CODE(IOCTL_STORAGE_BASE,(FN),(M),(A))
56
57#define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE
58#define IOCTL_STORAGE_CHECK_VERIFY __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0200)
59#define IOCTL_STORAGE_CHECK_VERIFY2 __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0200)
60#define IOCTL_STORAGE_MEDIA_REMOVAL __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0201)
61#define IOCTL_STORAGE_EJECT_MEDIA __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0202)
62#define IOCTL_STORAGE_LOAD_MEDIA __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0203)
63#define IOCTL_STORAGE_LOAD_MEDIA2 __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0203)
64#define IOCTL_STORAGE_RESERVE __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0204)
65#define IOCTL_STORAGE_RELEASE __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0205)
66#define IOCTL_STORAGE_FIND_NEW_DEVICES __FILE_RD_BUFFERED(__IOCTL_STORAGE_,0x0206)
67#define IOCTL_STORAGE_EJECTION_CONTROL __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0250)
68#define IOCTL_STORAGE_MCN_CONTROL __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0251)
69#define IOCTL_STORAGE_GET_MEDIA_TYPES __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0300)
70#define IOCTL_STORAGE_GET_MEDIA_TYPES_EX __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0301)
71#define IOCTL_STORAGE_RESET_BUS __FILE_RW_BUFFERED(__IOCTL_STORAGE_,0x0400)
72#define IOCTL_STORAGE_RESET_DEVICE __FILE_RW_BUFFERED(__IOCTL_STORAGE_,0x0401)
73#define IOCTL_STORAGE_GET_DEVICE_NUMBER __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0420)
74#define IOCTL_STORAGE_PREDICT_FAILURE __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0440)
75
76typedef
77enum _STORAGE_BUS_TYPE
78/* https://msdn.microsoft.com/en-us/library/windows/hardware/ff566356(v=vs.85).aspx */
79{ BusTypeUnknown = 0x00,
80 BusTypeScsi = 0x01,
81 BusTypeAtapi = 0x02,
82 BusTypeAta = 0x03,
83 BusType1394 = 0x04,
84 BusTypeSsa = 0x05,
85 BusTypeFibre = 0x06,
86 BusTypeUsb = 0x07,
87 BusTypeRAID = 0x08,
88 BusTypeiScsi = 0x09,
89 BusTypeSas = 0x0A,
90 BusTypeSata = 0x0B,
91 BusTypeSd = 0x0C,
92 BusTypeMmc = 0x0D,
93 BusTypeVirtual = 0x0E,
94 BusTypeFileBackedVirtual = 0x0F,
95 BusTypeSpaces = 0x10,
96 BusTypeMax /* variant; number of bus types */,
97 BusTypeMaxReserved = 0x7F
98} STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE;
99
100/* End of _DDK_NTDDSTOR_H and _WINIOCTL_H common declarations.
101 */
102#endif
103#ifdef _DDK_NTDDSTOR_H
104/* Declarations specific to _DDK_NTDDSTOR_H alone.
105 */
106_BEGIN_C_DECLS
107
108#define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0304)
109#define IOCTL_STORAGE_QUERY_PROPERTY __FILE_AM_BUFFERED(__IOCTL_STORAGE_,0x0500)
110
111DEFINE_GUID( GUID_DEVINTERFACE_DISK,
112 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
113 );
114DEFINE_GUID( GUID_DEVINTERFACE_CDROM,
115 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
116 );
117DEFINE_GUID( GUID_DEVINTERFACE_PARTITION,
118 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
119 );
120DEFINE_GUID( GUID_DEVINTERFACE_TAPE,
121 0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
122 );
123DEFINE_GUID( GUID_DEVINTERFACE_WRITEONCEDISK,
124 0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
125 );
126DEFINE_GUID( GUID_DEVINTERFACE_VOLUME,
127 0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
128 );
129DEFINE_GUID( GUID_DEVINTERFACE_MEDIUMCHANGER,
130 0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
131 );
132DEFINE_GUID( GUID_DEVINTERFACE_FLOPPY,
133 0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
134 );
135DEFINE_GUID( GUID_DEVINTERFACE_CDCHANGER,
136 0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
137 );
138DEFINE_GUID( GUID_DEVINTERFACE_STORAGEPORT,
139 0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b
140 );
141
142typedef
143enum _STORAGE_MEDIA_TYPE
144{ DDS_4mm = 0x20,
145 MiniQic = 0x21,
146 Travan = 0x22,
147 QIC = 0x23,
148 MP_8mm = 0x24,
149 AME_8mm = 0x25,
150 AIT1_8mm = 0x26,
151 DLT = 0x27,
152 NCTP = 0x28,
153 IBM_3480 = 0x29,
154 IBM_3490E = 0x2A,
155 IBM_Magstar_3590 = 0x2B,
156 IBM_Magstar_MP = 0x2C,
157 STK_DATA_D3 = 0x2D,
158 SONY_DTF = 0x2E,
159 DV_6mm = 0x2F,
160 DMI = 0x30,
161 SONY_D2 = 0x31,
162 CLEANER_CARTRIDGE = 0x32,
163 CD_ROM = 0x33,
164 CD_R = 0x34,
165 CD_RW = 0x35,
166 DVD_ROM = 0x36,
167 DVD_R = 0x37,
168 DVD_RW = 0x38,
169 MO_3_RW = 0x39,
170 MO_5_WO = 0x3A,
171 MO_5_RW = 0x3B,
172 MO_5_LIMDOW = 0x3C,
173 PC_5_WO = 0x3D,
174 PC_5_RW = 0x3E,
175 PD_5_RW = 0x3F,
176 ABL_5_WO = 0x40,
177 PINNACLE_APEX_5_RW = 0x41,
178 SONY_12_WO = 0x42,
179 PHILIPS_12_WO = 0x43,
180 HITACHI_12_WO = 0x44,
181 CYGNET_12_WO = 0x45,
182 KODAK_14_WO = 0x46,
183 MO_NFR_525 = 0x47,
184 NIKON_12_RW = 0x48,
185 IOMEGA_ZIP = 0x49,
186 IOMEGA_JAZ = 0x4A,
187 SYQUEST_EZ135 = 0x4B,
188 SYQUEST_EZFLYER = 0x4C,
189 SYQUEST_SYJET = 0x4D,
190 AVATAR_F2 = 0x4E,
191 MP2_8mm = 0x4F,
192 DST_S = 0x50,
193 DST_M = 0x51,
194 DST_L = 0x52,
195 VXATape_1 = 0x53,
196 VXATape_2 = 0x54,
197 STK_9840 = 0x55,
198 LTO_Ultrium = 0x56,
199 LTO_Accelis = 0x57,
200 DVD_RAM = 0x58,
201 AIT_8mm = 0x59,
202 ADR_1 = 0x5A,
203 ADR_2 = 0x5B
204} STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE;
205
206
207/* DEVICE_MEDIA_INFO.DeviceSpecific.DiskInfo.MediaCharacteristics constants
208 */
209#define MEDIA_ERASEABLE 0x00000001
210#define MEDIA_WRITE_ONCE 0x00000002
211#define MEDIA_READ_ONLY 0x00000004
212#define MEDIA_READ_WRITE 0x00000008
213#define MEDIA_WRITE_PROTECTED 0x00000100
214#define MEDIA_CURRENTLY_MOUNTED 0x80000000
215
216typedef struct _DEVICE_MEDIA_INFO
217{ union
218 { struct
219 { LARGE_INTEGER Cylinders;
220 STORAGE_MEDIA_TYPE MediaType;
221 ULONG TracksPerCylinder;
222 ULONG SectorsPerTrack;
223 ULONG BytesPerSector;
224 ULONG NumberMediaSides;
225 ULONG MediaCharacteristics;
226 } DiskInfo;
227 struct
228 { LARGE_INTEGER Cylinders;
229 STORAGE_MEDIA_TYPE MediaType;
230 ULONG TracksPerCylinder;
231 ULONG SectorsPerTrack;
232 ULONG BytesPerSector;
233 ULONG NumberMediaSides;
234 ULONG MediaCharacteristics;
235 } RemovableDiskInfo;
236 struct
237 { STORAGE_MEDIA_TYPE MediaType;
238 ULONG MediaCharacteristics;
239 ULONG CurrentBlockSize;
240 STORAGE_BUS_TYPE BusType;
241 union
242 { struct
243 { UCHAR MediumType;
244 UCHAR DensityCode;
245 } ScsiInformation;
246 } BusSpecificData;
247 } TapeInfo;
248 } DeviceSpecific;
249} DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO;
250
251typedef
252struct _GET_MEDIA_TYPES
253{ ULONG DeviceType;
254 ULONG MediaInfoCount;
255 DEVICE_MEDIA_INFO MediaInfo[1];
256} GET_MEDIA_TYPES, *PGET_MEDIA_TYPES;
257
258typedef
259struct _STORAGE_ADAPTER_DESCRIPTOR
260{ ULONG Version;
261 ULONG Size;
262 ULONG MaximumTransferLength;
263 ULONG MaximumPhysicalPages;
264 ULONG AlignmentMask;
265 BOOLEAN AdapterUsesPio;
266 BOOLEAN AdapterScansDown;
267 BOOLEAN CommandQueueing;
268 BOOLEAN AcceleratedTransfer;
269 STORAGE_BUS_TYPE BusType;
270 USHORT BusMajorVersion;
271 USHORT BusMinorVersion;
272} STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR;
273
274typedef
275struct _STORAGE_BUS_RESET_REQUEST
276{ UCHAR PathId;
277} STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST;
278
279typedef
280struct _STORAGE_DESCRIPTOR_HEADER
281{ ULONG Version;
282 ULONG Size;
283} STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER;
284
285typedef
286struct _STORAGE_DEVICE_DESCRIPTOR
287{ ULONG Version;
288 ULONG Size;
289 UCHAR DeviceType;
290 UCHAR DeviceTypeModifier;
291 BOOLEAN RemovableMedia;
292 BOOLEAN CommandQueueing;
293 ULONG VendorIdOffset;
294 ULONG ProductIdOffset;
295 ULONG ProductRevisionOffset;
296 ULONG SerialNumberOffset;
297 STORAGE_BUS_TYPE BusType;
298 ULONG RawPropertiesLength;
299 UCHAR RawDeviceProperties[1];
300} STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR;
301
302typedef
303struct _STORAGE_DEVICE_ID_DESCRIPTOR
304{ ULONG Version;
305 ULONG Size;
306 ULONG NumberOfIdentifiers;
307 UCHAR Identifiers[1];
308} STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR;
309
310typedef
311struct _STORAGE_DEVICE_NUMBER
312{ DEVICE_TYPE DeviceType;
313 ULONG DeviceNumber;
314 ULONG PartitionNumber;
315} STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER;
316
317typedef
318struct _STORAGE_PREDICT_FAILURE
319{ ULONG PredictFailure;
320 UCHAR VendorSpecific[512];
321} STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE;
322
323typedef
324enum _STORAGE_PROPERTY_ID
325{ StorageDeviceProperty = 0,
326 StorageAdapterProperty = 1,
327 StorageDeviceIdProperty = 2
328} STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID;
329
330typedef
331enum _STORAGE_QUERY_TYPE
332{ PropertyStandardQuery = 0,
333 PropertyExistsQuery = 1,
334 PropertyMaskQuery = 2,
335 PropertyQueryMaxDefined = 3
336} STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE;
337
338typedef
339struct _STORAGE_PROPERTY_QUERY
340{ STORAGE_PROPERTY_ID PropertyId;
341 STORAGE_QUERY_TYPE QueryType;
342 UCHAR AdditionalParameters[1];
343} STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY;
344
345_END_C_DECLS
346
347#endif /* _DDK_NTDDSTOR_H */
348#endif /* !_DDK_NTDDSTOR_H: $RCSfile: ntddstor.h,v $: end of file */
Note: See TracBrowser for help on using the repository browser.