Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ntddstor.h
00001 /* 00002 * ntddstor.h 00003 * 00004 * Storage class IOCTL interface. 00005 * 00006 * This file is part of the w32api package. 00007 * 00008 * Contributors: 00009 * Created by Casper S. Hornstrup <chorns@users.sourceforge.net> 00010 * 00011 * THIS SOFTWARE IS NOT COPYRIGHTED 00012 * 00013 * This source code is offered for use in the public domain. You may 00014 * use, modify or distribute it freely. 00015 * 00016 * This code is distributed in the hope that it will be useful but 00017 * WITHOUT ANY WARRANTY. ALL WARRANTIES, EXPRESS OR IMPLIED ARE HEREBY 00018 * DISCLAIMED. This includes but is not limited to warranties of 00019 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00020 * 00021 */ 00022 00023 #ifndef __NTDDSTOR_H 00024 #define __NTDDSTOR_H 00025 00026 #if __GNUC__ >=3 00027 #pragma GCC system_header 00028 #endif 00029 00030 #ifdef __cplusplus 00031 extern "C" { 00032 #endif 00033 00034 #include "ntddk.h" 00035 00036 #define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE 00037 00038 #define IOCTL_STORAGE_CHECK_VERIFY \ 00039 CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) 00040 00041 #define IOCTL_STORAGE_CHECK_VERIFY2 \ 00042 CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS) 00043 00044 #define IOCTL_STORAGE_EJECT_MEDIA \ 00045 CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) 00046 00047 #define IOCTL_STORAGE_EJECTION_CONTROL \ 00048 CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS) 00049 00050 #define IOCTL_STORAGE_FIND_NEW_DEVICES \ 00051 CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) 00052 00053 #define IOCTL_STORAGE_GET_DEVICE_NUMBER \ 00054 CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS) 00055 00056 #define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER \ 00057 CTL_CODE(IOCTL_STORAGE_BASE, 0x0304, METHOD_BUFFERED, FILE_ANY_ACCESS) 00058 00059 #define IOCTL_STORAGE_GET_MEDIA_TYPES \ 00060 CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) 00061 00062 #define IOCTL_STORAGE_GET_MEDIA_TYPES_EX \ 00063 CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS) 00064 00065 #define IOCTL_STORAGE_LOAD_MEDIA \ 00066 CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) 00067 00068 #define IOCTL_STORAGE_LOAD_MEDIA2 \ 00069 CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS) 00070 00071 #define IOCTL_STORAGE_MCN_CONTROL \ 00072 CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS) 00073 00074 #define IOCTL_STORAGE_MEDIA_REMOVAL \ 00075 CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) 00076 00077 #define IOCTL_STORAGE_PREDICT_FAILURE \ 00078 CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS) 00079 00080 #define IOCTL_STORAGE_QUERY_PROPERTY \ 00081 CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) 00082 00083 #define IOCTL_STORAGE_RELEASE \ 00084 CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) 00085 00086 #define IOCTL_STORAGE_RESERVE \ 00087 CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) 00088 00089 #define IOCTL_STORAGE_RESET_BUS \ 00090 CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00091 00092 #define IOCTL_STORAGE_RESET_DEVICE \ 00093 CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00094 00095 00096 DEFINE_GUID(GUID_DEVINTERFACE_DISK, 00097 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00098 00099 DEFINE_GUID(GUID_DEVINTERFACE_CDROM, 00100 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00101 00102 DEFINE_GUID(GUID_DEVINTERFACE_PARTITION, 00103 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00104 00105 DEFINE_GUID(GUID_DEVINTERFACE_TAPE, 00106 0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00107 00108 DEFINE_GUID(GUID_DEVINTERFACE_WRITEONCEDISK, 00109 0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00110 00111 DEFINE_GUID(GUID_DEVINTERFACE_VOLUME, 00112 0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00113 00114 DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER, 00115 0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00116 00117 DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY, 00118 0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00119 00120 DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER, 00121 0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00122 00123 DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT, 00124 0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00125 00126 00127 typedef enum _STORAGE_MEDIA_TYPE { 00128 DDS_4mm = 0x20, 00129 MiniQic, 00130 Travan, 00131 QIC, 00132 MP_8mm, 00133 AME_8mm, 00134 AIT1_8mm, 00135 DLT, 00136 NCTP, 00137 IBM_3480, 00138 IBM_3490E, 00139 IBM_Magstar_3590, 00140 IBM_Magstar_MP, 00141 STK_DATA_D3, 00142 SONY_DTF, 00143 DV_6mm, 00144 DMI, 00145 SONY_D2, 00146 CLEANER_CARTRIDGE, 00147 CD_ROM, 00148 CD_R, 00149 CD_RW, 00150 DVD_ROM, 00151 DVD_R, 00152 DVD_RW, 00153 MO_3_RW, 00154 MO_5_WO, 00155 MO_5_RW, 00156 MO_5_LIMDOW, 00157 PC_5_WO, 00158 PC_5_RW, 00159 PD_5_RW, 00160 ABL_5_WO, 00161 PINNACLE_APEX_5_RW, 00162 SONY_12_WO, 00163 PHILIPS_12_WO, 00164 HITACHI_12_WO, 00165 CYGNET_12_WO, 00166 KODAK_14_WO, 00167 MO_NFR_525, 00168 NIKON_12_RW, 00169 IOMEGA_ZIP, 00170 IOMEGA_JAZ, 00171 SYQUEST_EZ135, 00172 SYQUEST_EZFLYER, 00173 SYQUEST_SYJET, 00174 AVATAR_F2, 00175 MP2_8mm, 00176 DST_S, 00177 DST_M, 00178 DST_L, 00179 VXATape_1, 00180 VXATape_2, 00181 STK_9840, 00182 LTO_Ultrium, 00183 LTO_Accelis, 00184 DVD_RAM, 00185 AIT_8mm, 00186 ADR_1, 00187 ADR_2 00188 } STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE; 00189 00190 typedef enum _STORAGE_BUS_TYPE { 00191 BusTypeUnknown = 0x00, 00192 BusTypeScsi, 00193 BusTypeAtapi, 00194 BusTypeAta, 00195 BusType1394, 00196 BusTypeSsa, 00197 BusTypeFibre, 00198 BusTypeUsb, 00199 BusTypeRAID, 00200 BusTypeMaxReserved = 0x7F 00201 } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE; 00202 00203 /* DEVICE_MEDIA_INFO.DeviceSpecific.DiskInfo.MediaCharacteristics constants */ 00204 #define MEDIA_ERASEABLE 0x00000001 00205 #define MEDIA_WRITE_ONCE 0x00000002 00206 #define MEDIA_READ_ONLY 0x00000004 00207 #define MEDIA_READ_WRITE 0x00000008 00208 #define MEDIA_WRITE_PROTECTED 0x00000100 00209 #define MEDIA_CURRENTLY_MOUNTED 0x80000000 00210 00211 typedef struct _DEVICE_MEDIA_INFO { 00212 union { 00213 struct { 00214 LARGE_INTEGER Cylinders; 00215 STORAGE_MEDIA_TYPE MediaType; 00216 ULONG TracksPerCylinder; 00217 ULONG SectorsPerTrack; 00218 ULONG BytesPerSector; 00219 ULONG NumberMediaSides; 00220 ULONG MediaCharacteristics; 00221 } DiskInfo; 00222 struct { 00223 LARGE_INTEGER Cylinders; 00224 STORAGE_MEDIA_TYPE MediaType; 00225 ULONG TracksPerCylinder; 00226 ULONG SectorsPerTrack; 00227 ULONG BytesPerSector; 00228 ULONG NumberMediaSides; 00229 ULONG MediaCharacteristics; 00230 } RemovableDiskInfo; 00231 struct { 00232 STORAGE_MEDIA_TYPE MediaType; 00233 ULONG MediaCharacteristics; 00234 ULONG CurrentBlockSize; 00235 STORAGE_BUS_TYPE BusType; 00236 union { 00237 struct { 00238 UCHAR MediumType; 00239 UCHAR DensityCode; 00240 } ScsiInformation; 00241 } BusSpecificData; 00242 } TapeInfo; 00243 } DeviceSpecific; 00244 } DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO; 00245 00246 typedef struct _GET_MEDIA_TYPES { 00247 ULONG DeviceType; 00248 ULONG MediaInfoCount; 00249 DEVICE_MEDIA_INFO MediaInfo[1]; 00250 } GET_MEDIA_TYPES, *PGET_MEDIA_TYPES; 00251 00252 typedef struct _STORAGE_ADAPTER_DESCRIPTOR { 00253 ULONG Version; 00254 ULONG Size; 00255 ULONG MaximumTransferLength; 00256 ULONG MaximumPhysicalPages; 00257 ULONG AlignmentMask; 00258 BOOLEAN AdapterUsesPio; 00259 BOOLEAN AdapterScansDown; 00260 BOOLEAN CommandQueueing; 00261 BOOLEAN AcceleratedTransfer; 00262 STORAGE_BUS_TYPE BusType; 00263 USHORT BusMajorVersion; 00264 USHORT BusMinorVersion; 00265 } STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR; 00266 00267 typedef struct _STORAGE_BUS_RESET_REQUEST { 00268 UCHAR PathId; 00269 } STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST; 00270 00271 typedef struct _STORAGE_DESCRIPTOR_HEADER { 00272 ULONG Version; 00273 ULONG Size; 00274 } STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER; 00275 00276 typedef struct _STORAGE_DEVICE_DESCRIPTOR { 00277 ULONG Version; 00278 ULONG Size; 00279 UCHAR DeviceType; 00280 UCHAR DeviceTypeModifier; 00281 BOOLEAN RemovableMedia; 00282 BOOLEAN CommandQueueing; 00283 ULONG VendorIdOffset; 00284 ULONG ProductIdOffset; 00285 ULONG ProductRevisionOffset; 00286 ULONG SerialNumberOffset; 00287 STORAGE_BUS_TYPE BusType; 00288 ULONG RawPropertiesLength; 00289 UCHAR RawDeviceProperties[1]; 00290 } STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR; 00291 00292 typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR { 00293 ULONG Version; 00294 ULONG Size; 00295 ULONG NumberOfIdentifiers; 00296 UCHAR Identifiers[1]; 00297 } STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR; 00298 00299 typedef struct _STORAGE_DEVICE_NUMBER { 00300 DEVICE_TYPE DeviceType; 00301 ULONG DeviceNumber; 00302 ULONG PartitionNumber; 00303 } STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER; 00304 00305 typedef struct _STORAGE_PREDICT_FAILURE { 00306 ULONG PredictFailure; 00307 UCHAR VendorSpecific[512]; 00308 } STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE; 00309 00310 typedef enum _STORAGE_PROPERTY_ID { 00311 StorageDeviceProperty = 0, 00312 StorageAdapterProperty, 00313 StorageDeviceIdProperty 00314 } STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID; 00315 00316 typedef enum _STORAGE_QUERY_TYPE { 00317 PropertyStandardQuery = 0, 00318 PropertyExistsQuery, 00319 PropertyMaskQuery, 00320 PropertyQueryMaxDefined 00321 } STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE; 00322 00323 typedef struct _STORAGE_PROPERTY_QUERY { 00324 STORAGE_PROPERTY_ID PropertyId; 00325 STORAGE_QUERY_TYPE QueryType; 00326 UCHAR AdditionalParameters[1]; 00327 } STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY; 00328 00329 #ifdef __cplusplus 00330 } 00331 #endif 00332 00333 #endif /* __NTDDSTOR_H */
Generated on Tue Jul 12 2022 19:59:55 by
1.7.2