ReactOS Fundraising Campaign 2012
 
€ 4,410 / € 30,000

Information | Donate

Home | Info | Community | Development | myReactOS | Contact Us

  1. Home
  2. Community
  3. Development
  4. myReactOS
  5. Fundraiser 2012

  1. Main Page
  2. Alphabetical List
  3. Data Structures
  4. Directories
  5. File List
  6. Data Fields
  7. Globals
  8. Related Pages

ReactOS Development > Doxygen

ntddstor.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 doxygen 1.7.6.1

ReactOS is a registered trademark or a trademark of ReactOS Foundation in the United States and other countries.