Embed:
(wiki syntax)
Show/hide line numbers
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