Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenntddstor.h
Go to the documentation of this file.
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 #ifdef __cplusplus 00027 extern "C" { 00028 #endif 00029 00030 #if defined(DEFINE_GUID) 00031 00032 DEFINE_GUID(GUID_DEVINTERFACE_DISK, 00033 0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00034 00035 DEFINE_GUID(GUID_DEVINTERFACE_CDROM, 00036 0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00037 00038 DEFINE_GUID(GUID_DEVINTERFACE_PARTITION, 00039 0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00040 00041 DEFINE_GUID(GUID_DEVINTERFACE_TAPE, 00042 0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00043 00044 DEFINE_GUID(GUID_DEVINTERFACE_WRITEONCEDISK, 00045 0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00046 00047 DEFINE_GUID(GUID_DEVINTERFACE_VOLUME, 00048 0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00049 00050 DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER, 00051 0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00052 00053 DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY, 00054 0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00055 00056 DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER, 00057 0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00058 00059 DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT, 00060 0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b); 00061 00062 DEFINE_GUID(GUID_DEVINTERFACE_HIDDEN_VOLUME, 00063 0x7f108a28L, 0x9833, 0x4b3b, 0xb7, 0x80, 0x2c, 0x6b, 0x5f, 0xa5, 0xc0, 0x62); 00064 00065 #define WDI_STORAGE_PREDICT_FAILURE_DPS_GUID \ 00066 {0xe9f2d03aL, 0x747c, 0x41c2, {0xbb, 0x9a, 0x02, 0xc6, 0x2b, 0x6d, 0x5f, 0xcb}}; 00067 00068 /* Aliases for storage guids */ 00069 #define DiskClassGuid GUID_DEVINTERFACE_DISK 00070 #define CdRomClassGuid GUID_DEVINTERFACE_CDROM 00071 #define PartitionClassGuid GUID_DEVINTERFACE_PARTITION 00072 #define TapeClassGuid GUID_DEVINTERFACE_TAPE 00073 #define WriteOnceDiskClassGuid GUID_DEVINTERFACE_WRITEONCEDISK 00074 #define VolumeClassGuid GUID_DEVINTERFACE_VOLUME 00075 #define MediumChangerClassGuid GUID_DEVINTERFACE_MEDIUMCHANGER 00076 #define FloppyClassGuid GUID_DEVINTERFACE_FLOPPY 00077 #define CdChangerClassGuid GUID_DEVINTERFACE_CDCHANGER 00078 #define StoragePortClassGuid GUID_DEVINTERFACE_STORAGEPORT 00079 #define HiddenVolumeClassGuid GUID_DEVINTERFACE_HIDDEN_VOLUME 00080 00081 #endif /* defined(DEFINE_GUID) */ 00082 00083 #ifndef _WINIOCTL_ 00084 00085 #define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE 00086 00087 #define IOCTL_STORAGE_CHECK_VERIFY \ 00088 CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) 00089 00090 #define IOCTL_STORAGE_CHECK_VERIFY2 \ 00091 CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS) 00092 00093 #define IOCTL_STORAGE_MEDIA_REMOVAL \ 00094 CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) 00095 00096 #define IOCTL_STORAGE_EJECT_MEDIA \ 00097 CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) 00098 00099 #define IOCTL_STORAGE_LOAD_MEDIA \ 00100 CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) 00101 00102 #define IOCTL_STORAGE_LOAD_MEDIA2 \ 00103 CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS) 00104 00105 #define IOCTL_STORAGE_RESERVE \ 00106 CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) 00107 00108 #define IOCTL_STORAGE_RELEASE \ 00109 CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) 00110 00111 #define IOCTL_STORAGE_FIND_NEW_DEVICES \ 00112 CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) 00113 00114 #define IOCTL_STORAGE_EJECTION_CONTROL \ 00115 CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS) 00116 00117 #define IOCTL_STORAGE_MCN_CONTROL \ 00118 CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS) 00119 00120 #define IOCTL_STORAGE_GET_MEDIA_TYPES \ 00121 CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) 00122 00123 #define IOCTL_STORAGE_GET_MEDIA_TYPES_EX \ 00124 CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS) 00125 00126 #define IOCTL_STORAGE_RESET_BUS \ 00127 CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS) 00128 00129 #define IOCTL_STORAGE_RESET_DEVICE \ 00130 CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS) 00131 00132 #define IOCTL_STORAGE_GET_DEVICE_NUMBER \ 00133 CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS) 00134 00135 #define IOCTL_STORAGE_PREDICT_FAILURE \ 00136 CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS) 00137 00138 #endif /* _WINIOCTL_ */ 00139 00140 #define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER \ 00141 CTL_CODE(IOCTL_STORAGE_BASE, 0x0304, METHOD_BUFFERED, FILE_ANY_ACCESS) 00142 00143 #define IOCTL_STORAGE_GET_HOTPLUG_INFO \ 00144 CTL_CODE(IOCTL_STORAGE_BASE, 0x0305, METHOD_BUFFERED, FILE_ANY_ACCESS) 00145 00146 #define IOCTL_STORAGE_SET_HOTPLUG_INFO \ 00147 CTL_CODE(IOCTL_STORAGE_BASE, 0x0306, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00148 00149 #define OBSOLETE_IOCTL_STORAGE_RESET_BUS \ 00150 CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00151 00152 #define OBSOLETE_IOCTL_STORAGE_RESET_DEVICE \ 00153 CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00154 00155 #define IOCTL_STORAGE_BREAK_RESERVATION \ 00156 CTL_CODE(IOCTL_STORAGE_BASE, 0x0405, METHOD_BUFFERED, FILE_READ_ACCESS) 00157 00158 #define IOCTL_STORAGE_PERSISTENT_RESERVE_IN \ 00159 CTL_CODE(IOCTL_STORAGE_BASE, 0x0406, METHOD_BUFFERED, FILE_READ_ACCESS) 00160 00161 #define IOCTL_STORAGE_PERSISTENT_RESERVE_OUT \ 00162 CTL_CODE(IOCTL_STORAGE_BASE, 0x0407, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00163 00164 #define IOCTL_STORAGE_READ_CAPACITY \ 00165 CTL_CODE(IOCTL_STORAGE_BASE, 0x0450, METHOD_BUFFERED, FILE_READ_ACCESS) 00166 00167 #define IOCTL_STORAGE_QUERY_PROPERTY \ 00168 CTL_CODE(IOCTL_STORAGE_BASE, 0x0500, METHOD_BUFFERED, FILE_ANY_ACCESS) 00169 00170 #define IOCTL_STORAGE_MANAGE_DATA_SET_ATTRIBUTES \ 00171 CTL_CODE(IOCTL_STORAGE_BASE, 0x0501, METHOD_BUFFERED, FILE_WRITE_ACCESS) 00172 00173 #define IOCTL_STORAGE_GET_BC_PROPERTIES \ 00174 CTL_CODE(IOCTL_STORAGE_BASE, 0x0600, METHOD_BUFFERED, FILE_READ_ACCESS) 00175 00176 #define IOCTL_STORAGE_ALLOCATE_BC_STREAM \ 00177 CTL_CODE(IOCTL_STORAGE_BASE, 0x0601, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00178 00179 #define IOCTL_STORAGE_FREE_BC_STREAM \ 00180 CTL_CODE(IOCTL_STORAGE_BASE, 0x0602, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00181 00182 #define IOCTL_STORAGE_CHECK_PRIORITY_HINT_SUPPORT \ 00183 CTL_CODE(IOCTL_STORAGE_BASE, 0x0620, METHOD_BUFFERED, FILE_ANY_ACCESS) 00184 00185 #define RECOVERED_WRITES_VALID 0x00000001 00186 #define UNRECOVERED_WRITES_VALID 0x00000002 00187 #define RECOVERED_READS_VALID 0x00000004 00188 #define UNRECOVERED_READS_VALID 0x00000008 00189 #define WRITE_COMPRESSION_INFO_VALID 0x00000010 00190 #define READ_COMPRESSION_INFO_VALID 0x00000020 00191 00192 #define TAPE_RETURN_STATISTICS 0L 00193 #define TAPE_RETURN_ENV_INFO 1L 00194 #define TAPE_RESET_STATISTICS 2L 00195 00196 /* DEVICE_MEDIA_INFO.DeviceSpecific.DiskInfo.MediaCharacteristics constants */ 00197 #define MEDIA_ERASEABLE 0x00000001 00198 #define MEDIA_WRITE_ONCE 0x00000002 00199 #define MEDIA_READ_ONLY 0x00000004 00200 #define MEDIA_READ_WRITE 0x00000008 00201 #define MEDIA_WRITE_PROTECTED 0x00000100 00202 #define MEDIA_CURRENTLY_MOUNTED 0x80000000 00203 00204 #define StorageIdTypeNAA StorageIdTypeFCPHName 00205 00206 #define DeviceDsmActionFlag_NonDestructive 0x80000000 00207 00208 #define IsDsmActionNonDestructive(_Action) ((BOOLEAN)((_Action & DeviceDsmActionFlag_NonDestructive) != 0)) 00209 00210 #define DeviceDsmAction_None 0 00211 #define DeviceDsmAction_Trim 1 00212 #define DeviceDsmAction_Notification (2 | DeviceDsmActionFlag_NonDestructive) 00213 00214 #define DEVICE_DSM_FLAG_ENTIRE_DATA_SET_RANGE 0x00000001 00215 00216 #define DEVICE_DSM_NOTIFY_FLAG_BEGIN 0x00000001 00217 #define DEVICE_DSM_NOTIFY_FLAG_END 0x00000002 00218 00219 #define IOCTL_STORAGE_BC_VERSION 1 00220 00221 #define STORAGE_PRIORITY_HINT_SUPPORTED 0x0001 00222 00223 typedef struct _STORAGE_HOTPLUG_INFO { 00224 ULONG Size; 00225 BOOLEAN MediaRemovable; 00226 BOOLEAN MediaHotplug; 00227 BOOLEAN DeviceHotplug; 00228 BOOLEAN WriteCacheEnableOverride; 00229 } STORAGE_HOTPLUG_INFO, *PSTORAGE_HOTPLUG_INFO; 00230 00231 typedef struct _STORAGE_DEVICE_NUMBER { 00232 DEVICE_TYPE DeviceType; 00233 ULONG DeviceNumber; 00234 ULONG PartitionNumber; 00235 } STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER; 00236 00237 typedef struct _STORAGE_BUS_RESET_REQUEST { 00238 UCHAR PathId; 00239 } STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST; 00240 00241 typedef struct _STORAGE_BREAK_RESERVATION_REQUEST { 00242 ULONG Length; 00243 UCHAR _unused; 00244 UCHAR PathId; 00245 UCHAR TargetId; 00246 UCHAR Lun; 00247 } STORAGE_BREAK_RESERVATION_REQUEST, *PSTORAGE_BREAK_RESERVATION_REQUEST; 00248 00249 #ifndef _WINIOCTL_ 00250 typedef struct _PREVENT_MEDIA_REMOVAL { 00251 BOOLEAN PreventMediaRemoval; 00252 } PREVENT_MEDIA_REMOVAL, *PPREVENT_MEDIA_REMOVAL; 00253 #endif 00254 00255 typedef struct _CLASS_MEDIA_CHANGE_CONTEXT { 00256 ULONG MediaChangeCount; 00257 ULONG NewState; 00258 } CLASS_MEDIA_CHANGE_CONTEXT, *PCLASS_MEDIA_CHANGE_CONTEXT; 00259 00260 typedef struct _TAPE_STATISTICS { 00261 ULONG Version; 00262 ULONG Flags; 00263 LARGE_INTEGER RecoveredWrites; 00264 LARGE_INTEGER UnrecoveredWrites; 00265 LARGE_INTEGER RecoveredReads; 00266 LARGE_INTEGER UnrecoveredReads; 00267 UCHAR CompressionRatioReads; 00268 UCHAR CompressionRatioWrites; 00269 } TAPE_STATISTICS, *PTAPE_STATISTICS; 00270 00271 typedef struct _TAPE_GET_STATISTICS { 00272 ULONG Operation; 00273 } TAPE_GET_STATISTICS, *PTAPE_GET_STATISTICS; 00274 00275 typedef enum _STORAGE_MEDIA_TYPE { 00276 DDS_4mm = 0x20, 00277 MiniQic, 00278 Travan, 00279 QIC, 00280 MP_8mm, 00281 AME_8mm, 00282 AIT1_8mm, 00283 DLT, 00284 NCTP, 00285 IBM_3480, 00286 IBM_3490E, 00287 IBM_Magstar_3590, 00288 IBM_Magstar_MP, 00289 STK_DATA_D3, 00290 SONY_DTF, 00291 DV_6mm, 00292 DMI, 00293 SONY_D2, 00294 CLEANER_CARTRIDGE, 00295 CD_ROM, 00296 CD_R, 00297 CD_RW, 00298 DVD_ROM, 00299 DVD_R, 00300 DVD_RW, 00301 MO_3_RW, 00302 MO_5_WO, 00303 MO_5_RW, 00304 MO_5_LIMDOW, 00305 PC_5_WO, 00306 PC_5_RW, 00307 PD_5_RW, 00308 ABL_5_WO, 00309 PINNACLE_APEX_5_RW, 00310 SONY_12_WO, 00311 PHILIPS_12_WO, 00312 HITACHI_12_WO, 00313 CYGNET_12_WO, 00314 KODAK_14_WO, 00315 MO_NFR_525, 00316 NIKON_12_RW, 00317 IOMEGA_ZIP, 00318 IOMEGA_JAZ, 00319 SYQUEST_EZ135, 00320 SYQUEST_EZFLYER, 00321 SYQUEST_SYJET, 00322 AVATAR_F2, 00323 MP2_8mm, 00324 DST_S, 00325 DST_M, 00326 DST_L, 00327 VXATape_1, 00328 VXATape_2, 00329 #if (NTDDI_VERSION < NTDDI_WINXP) 00330 STK_EAGLE, 00331 #else 00332 STK_9840, 00333 #endif 00334 LTO_Ultrium, 00335 LTO_Accelis, 00336 DVD_RAM, 00337 AIT_8mm, 00338 ADR_1, 00339 ADR_2, 00340 STK_9940, 00341 SAIT, 00342 VXATape 00343 } STORAGE_MEDIA_TYPE, *PSTORAGE_MEDIA_TYPE; 00344 00345 typedef enum _STORAGE_BUS_TYPE { 00346 BusTypeUnknown = 0x00, 00347 BusTypeScsi, 00348 BusTypeAtapi, 00349 BusTypeAta, 00350 BusType1394, 00351 BusTypeSsa, 00352 BusTypeFibre, 00353 BusTypeUsb, 00354 BusTypeRAID, 00355 BusTypeiScsi, 00356 BusTypeSas, 00357 BusTypeSata, 00358 BusTypeSd, 00359 BusTypeMmc, 00360 BusTypeVirtual, 00361 BusTypeFileBackedVirtual, 00362 BusTypeMax, 00363 BusTypeMaxReserved = 0x7F 00364 } STORAGE_BUS_TYPE, *PSTORAGE_BUS_TYPE; 00365 00366 typedef struct _DEVICE_MEDIA_INFO { 00367 union { 00368 struct { 00369 LARGE_INTEGER Cylinders; 00370 STORAGE_MEDIA_TYPE MediaType; 00371 ULONG TracksPerCylinder; 00372 ULONG SectorsPerTrack; 00373 ULONG BytesPerSector; 00374 ULONG NumberMediaSides; 00375 ULONG MediaCharacteristics; 00376 } DiskInfo; 00377 struct { 00378 LARGE_INTEGER Cylinders; 00379 STORAGE_MEDIA_TYPE MediaType; 00380 ULONG TracksPerCylinder; 00381 ULONG SectorsPerTrack; 00382 ULONG BytesPerSector; 00383 ULONG NumberMediaSides; 00384 ULONG MediaCharacteristics; 00385 } RemovableDiskInfo; 00386 struct { 00387 STORAGE_MEDIA_TYPE MediaType; 00388 ULONG MediaCharacteristics; 00389 ULONG CurrentBlockSize; 00390 STORAGE_BUS_TYPE BusType; 00391 union { 00392 struct { 00393 UCHAR MediumType; 00394 UCHAR DensityCode; 00395 } ScsiInformation; 00396 } BusSpecificData; 00397 } TapeInfo; 00398 } DeviceSpecific; 00399 } DEVICE_MEDIA_INFO, *PDEVICE_MEDIA_INFO; 00400 00401 typedef struct _GET_MEDIA_TYPES { 00402 ULONG DeviceType; 00403 ULONG MediaInfoCount; 00404 DEVICE_MEDIA_INFO MediaInfo[1]; 00405 } GET_MEDIA_TYPES, *PGET_MEDIA_TYPES; 00406 00407 typedef struct _STORAGE_PREDICT_FAILURE { 00408 ULONG PredictFailure; 00409 UCHAR VendorSpecific[512]; 00410 } STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE; 00411 00412 typedef enum _STORAGE_QUERY_TYPE { 00413 PropertyStandardQuery = 0, 00414 PropertyExistsQuery, 00415 PropertyMaskQuery, 00416 PropertyQueryMaxDefined 00417 } STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE; 00418 00419 typedef enum _STORAGE_PROPERTY_ID { 00420 StorageDeviceProperty = 0, 00421 StorageAdapterProperty, 00422 StorageDeviceIdProperty, 00423 StorageDeviceUniqueIdProperty, 00424 StorageDeviceWriteCacheProperty, 00425 StorageMiniportProperty, 00426 StorageAccessAlignmentProperty, 00427 StorageDeviceSeekPenaltyProperty, 00428 StorageDeviceTrimProperty, 00429 StorageDeviceWriteAggregationProperty 00430 } STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID; 00431 00432 typedef struct _STORAGE_PROPERTY_QUERY { 00433 STORAGE_PROPERTY_ID PropertyId; 00434 STORAGE_QUERY_TYPE QueryType; 00435 UCHAR AdditionalParameters[1]; 00436 } STORAGE_PROPERTY_QUERY, *PSTORAGE_PROPERTY_QUERY; 00437 00438 typedef struct _STORAGE_DESCRIPTOR_HEADER { 00439 ULONG Version; 00440 ULONG Size; 00441 } STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER; 00442 00443 typedef struct _STORAGE_DEVICE_DESCRIPTOR { 00444 ULONG Version; 00445 ULONG Size; 00446 UCHAR DeviceType; 00447 UCHAR DeviceTypeModifier; 00448 BOOLEAN RemovableMedia; 00449 BOOLEAN CommandQueueing; 00450 ULONG VendorIdOffset; 00451 ULONG ProductIdOffset; 00452 ULONG ProductRevisionOffset; 00453 ULONG SerialNumberOffset; 00454 STORAGE_BUS_TYPE BusType; 00455 ULONG RawPropertiesLength; 00456 UCHAR RawDeviceProperties[1]; 00457 } STORAGE_DEVICE_DESCRIPTOR, *PSTORAGE_DEVICE_DESCRIPTOR; 00458 00459 typedef struct _STORAGE_ADAPTER_DESCRIPTOR { 00460 ULONG Version; 00461 ULONG Size; 00462 ULONG MaximumTransferLength; 00463 ULONG MaximumPhysicalPages; 00464 ULONG AlignmentMask; 00465 BOOLEAN AdapterUsesPio; 00466 BOOLEAN AdapterScansDown; 00467 BOOLEAN CommandQueueing; 00468 BOOLEAN AcceleratedTransfer; 00469 #if (NTDDI_VERSION < NTDDI_WINXP) 00470 BOOLEAN BusType; 00471 #else 00472 UCHAR BusType; 00473 #endif 00474 USHORT BusMajorVersion; 00475 USHORT BusMinorVersion; 00476 } STORAGE_ADAPTER_DESCRIPTOR, *PSTORAGE_ADAPTER_DESCRIPTOR; 00477 00478 typedef struct _STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR { 00479 ULONG Version; 00480 ULONG Size; 00481 ULONG BytesPerCacheLine; 00482 ULONG BytesOffsetForCacheAlignment; 00483 ULONG BytesPerLogicalSector; 00484 ULONG BytesPerPhysicalSector; 00485 ULONG BytesOffsetForSectorAlignment; 00486 } STORAGE_ACCESS_ALIGNMENT_DESCRIPTOR, *PSTORAGE_ACCESS_ALIGNMENT_DESCRIPTOR; 00487 00488 typedef enum _STORAGE_PORT_CODE_SET { 00489 StoragePortCodeSetReserved = 0, 00490 StoragePortCodeSetStorport = 1, 00491 StoragePortCodeSetSCSIport = 2 00492 } STORAGE_PORT_CODE_SET, *PSTORAGE_PORT_CODE_SET; 00493 00494 typedef struct _STORAGE_MINIPORT_DESCRIPTOR { 00495 ULONG Version; 00496 ULONG Size; 00497 STORAGE_PORT_CODE_SET Portdriver; 00498 BOOLEAN LUNResetSupported; 00499 BOOLEAN TargetResetSupported; 00500 } STORAGE_MINIPORT_DESCRIPTOR, *PSTORAGE_MINIPORT_DESCRIPTOR; 00501 00502 typedef enum _STORAGE_IDENTIFIER_CODE_SET { 00503 StorageIdCodeSetReserved = 0, 00504 StorageIdCodeSetBinary = 1, 00505 StorageIdCodeSetAscii = 2, 00506 StorageIdCodeSetUtf8 = 3 00507 } STORAGE_IDENTIFIER_CODE_SET, *PSTORAGE_IDENTIFIER_CODE_SET; 00508 00509 typedef enum _STORAGE_IDENTIFIER_TYPE { 00510 StorageIdTypeVendorSpecific = 0, 00511 StorageIdTypeVendorId = 1, 00512 StorageIdTypeEUI64 = 2, 00513 StorageIdTypeFCPHName = 3, 00514 StorageIdTypePortRelative = 4, 00515 StorageIdTypeTargetPortGroup = 5, 00516 StorageIdTypeLogicalUnitGroup = 6, 00517 StorageIdTypeMD5LogicalUnitIdentifier = 7, 00518 StorageIdTypeScsiNameString = 8 00519 } STORAGE_IDENTIFIER_TYPE, *PSTORAGE_IDENTIFIER_TYPE; 00520 00521 typedef enum _STORAGE_ID_NAA_FORMAT { 00522 StorageIdNAAFormatIEEEExtended = 2, 00523 StorageIdNAAFormatIEEERegistered = 3, 00524 StorageIdNAAFormatIEEEERegisteredExtended = 5 00525 } STORAGE_ID_NAA_FORMAT, *PSTORAGE_ID_NAA_FORMAT; 00526 00527 typedef enum _STORAGE_ASSOCIATION_TYPE { 00528 StorageIdAssocDevice = 0, 00529 StorageIdAssocPort = 1, 00530 StorageIdAssocTarget = 2 00531 } STORAGE_ASSOCIATION_TYPE, *PSTORAGE_ASSOCIATION_TYPE; 00532 00533 typedef struct _STORAGE_IDENTIFIER { 00534 STORAGE_IDENTIFIER_CODE_SET CodeSet; 00535 STORAGE_IDENTIFIER_TYPE Type; 00536 USHORT IdentifierSize; 00537 USHORT NextOffset; 00538 STORAGE_ASSOCIATION_TYPE Association; 00539 UCHAR Identifier[1]; 00540 } STORAGE_IDENTIFIER, *PSTORAGE_IDENTIFIER; 00541 00542 typedef struct _STORAGE_DEVICE_ID_DESCRIPTOR { 00543 ULONG Version; 00544 ULONG Size; 00545 ULONG NumberOfIdentifiers; 00546 UCHAR Identifiers[1]; 00547 } STORAGE_DEVICE_ID_DESCRIPTOR, *PSTORAGE_DEVICE_ID_DESCRIPTOR; 00548 00549 typedef struct _DEVICE_SEEK_PENALTY_DESCRIPTOR { 00550 ULONG Version; 00551 ULONG Size; 00552 BOOLEAN IncursSeekPenalty; 00553 } DEVICE_SEEK_PENALTY_DESCRIPTOR, *PDEVICE_SEEK_PENALTY_DESCRIPTOR; 00554 00555 typedef struct _DEVICE_WRITE_AGGREGATION_DESCRIPTOR { 00556 ULONG Version; 00557 ULONG Size; 00558 BOOLEAN BenefitsFromWriteAggregation; 00559 } DEVICE_WRITE_AGGREGATION_DESCRIPTOR, *PDEVICE_WRITE_AGGREGATION_DESCRIPTOR; 00560 00561 typedef struct _DEVICE_TRIM_DESCRIPTOR { 00562 ULONG Version; 00563 ULONG Size; 00564 BOOLEAN TrimEnabled; 00565 } DEVICE_TRIM_DESCRIPTOR, *PDEVICE_TRIM_DESCRIPTOR; 00566 00567 typedef ULONG DEVICE_DATA_MANAGEMENT_SET_ACTION; 00568 00569 typedef struct _DEVICE_DATA_SET_RANGE { 00570 LONGLONG StartingOffset; 00571 ULONGLONG LengthInBytes; 00572 } DEVICE_DATA_SET_RANGE, *PDEVICE_DATA_SET_RANGE; 00573 00574 typedef struct _DEVICE_MANAGE_DATA_SET_ATTRIBUTES { 00575 ULONG Size; 00576 DEVICE_DATA_MANAGEMENT_SET_ACTION Action; 00577 ULONG Flags; 00578 ULONG ParameterBlockOffset; 00579 ULONG ParameterBlockLength; 00580 ULONG DataSetRangesOffset; 00581 ULONG DataSetRangesLength; 00582 } DEVICE_MANAGE_DATA_SET_ATTRIBUTES, *PDEVICE_MANAGE_DATA_SET_ATTRIBUTES; 00583 00584 typedef struct _DEVICE_DSM_NOTIFICATION_PARAMETERS { 00585 ULONG Size; 00586 ULONG Flags; 00587 ULONG NumFileTypeIDs; 00588 GUID FileTypeID[1]; 00589 } DEVICE_DSM_NOTIFICATION_PARAMETERS, *PDEVICE_DSM_NOTIFICATION_PARAMETERS; 00590 00591 typedef struct _STORAGE_GET_BC_PROPERTIES_OUTPUT { 00592 ULONG MaximumRequestsPerPeriod; 00593 ULONG MinimumPeriod; 00594 ULONGLONG MaximumRequestSize; 00595 ULONG EstimatedTimePerRequest; 00596 ULONG NumOutStandingRequests; 00597 ULONGLONG RequestSize; 00598 } STORAGE_GET_BC_PROPERTIES_OUTPUT, *PSTORAGE_GET_BC_PROPERTIES_OUTPUT; 00599 00600 typedef struct _STORAGE_ALLOCATE_BC_STREAM_INPUT { 00601 ULONG Version; 00602 ULONG RequestsPerPeriod; 00603 ULONG Period; 00604 BOOLEAN RetryFailures; 00605 BOOLEAN Discardable; 00606 BOOLEAN Reserved1[2]; 00607 ULONG AccessType; 00608 ULONG AccessMode; 00609 } STORAGE_ALLOCATE_BC_STREAM_INPUT, *PSTORAGE_ALLOCATE_BC_STREAM_INPUT; 00610 00611 typedef struct _STORAGE_ALLOCATE_BC_STREAM_OUTPUT { 00612 ULONGLONG RequestSize; 00613 ULONG NumOutStandingRequests; 00614 } STORAGE_ALLOCATE_BC_STREAM_OUTPUT, *PSTORAGE_ALLOCATE_BC_STREAM_OUTPUT; 00615 00616 typedef struct _STORAGE_PRIORITY_HINT_SUPPORT { 00617 ULONG SupportFlags; 00618 } STORAGE_PRIORITY_HINT_SUPPORT, *PSTORAGE_PRIORITY_HINT_SUPPORT; 00619 00620 #if defined(_MSC_EXTENSIONS) 00621 00622 typedef struct _STORAGE_MEDIA_SERIAL_NUMBER_DATA { 00623 USHORT Reserved; 00624 USHORT SerialNumberLength; 00625 UCHAR SerialNumber[0]; 00626 } STORAGE_MEDIA_SERIAL_NUMBER_DATA, *PSTORAGE_MEDIA_SERIAL_NUMBER_DATA; 00627 00628 typedef struct _PERSISTENT_RESERVE_COMMAND { 00629 ULONG Version; 00630 ULONG Size; 00631 __MINGW_EXTENSION union { 00632 struct { 00633 UCHAR ServiceAction:5; 00634 UCHAR Reserved1:3; 00635 USHORT AllocationLength; 00636 } PR_IN; 00637 struct { 00638 UCHAR ServiceAction:5; 00639 UCHAR Reserved1:3; 00640 UCHAR Type:4; 00641 UCHAR Scope:4; 00642 UCHAR ParameterList[0]; 00643 } PR_OUT; 00644 } DUMMYUNIONNAME; 00645 } PERSISTENT_RESERVE_COMMAND, *PPERSISTENT_RESERVE_COMMAND; 00646 00647 #endif /* defined(_MSC_EXTENSIONS) */ 00648 00649 typedef struct _STORAGE_READ_CAPACITY { 00650 ULONG Version; 00651 ULONG Size; 00652 ULONG BlockLength; 00653 LARGE_INTEGER NumberOfBlocks; 00654 LARGE_INTEGER DiskLength; 00655 } STORAGE_READ_CAPACITY, *PSTORAGE_READ_CAPACITY; 00656 00657 typedef enum _WRITE_CACHE_TYPE { 00658 WriteCacheTypeUnknown, 00659 WriteCacheTypeNone, 00660 WriteCacheTypeWriteBack, 00661 WriteCacheTypeWriteThrough 00662 } WRITE_CACHE_TYPE; 00663 00664 typedef enum _WRITE_CACHE_ENABLE { 00665 WriteCacheEnableUnknown, 00666 WriteCacheDisabled, 00667 WriteCacheEnabled 00668 } WRITE_CACHE_ENABLE; 00669 00670 typedef enum _WRITE_CACHE_CHANGE { 00671 WriteCacheChangeUnknown, 00672 WriteCacheNotChangeable, 00673 WriteCacheChangeable 00674 } WRITE_CACHE_CHANGE; 00675 00676 typedef enum _WRITE_THROUGH { 00677 WriteThroughUnknown, 00678 WriteThroughNotSupported, 00679 WriteThroughSupported 00680 } WRITE_THROUGH; 00681 00682 typedef struct _STORAGE_WRITE_CACHE_PROPERTY { 00683 ULONG Version; 00684 ULONG Size; 00685 WRITE_CACHE_TYPE WriteCacheType; 00686 WRITE_CACHE_ENABLE WriteCacheEnabled; 00687 WRITE_CACHE_CHANGE WriteCacheChangeable; 00688 WRITE_THROUGH WriteThroughSupported; 00689 BOOLEAN FlushCacheSupported; 00690 BOOLEAN UserDefinedPowerProtection; 00691 BOOLEAN NVCacheEnabled; 00692 } STORAGE_WRITE_CACHE_PROPERTY, *PSTORAGE_WRITE_CACHE_PROPERTY; 00693 00694 #ifdef __cplusplus 00695 } 00696 #endif 00697 00698 #endif /* _NTDDSTOR_H_ */ Generated on Thu May 24 2012 04:32:40 for ReactOS by
1.7.6.1
|