| 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 | 
  | 
 
 
 
 
 
 | 76 | 
 typedef | 
 
 
 
 
 
 | 77 | 
 enum _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 | 
  | 
 
 
 
 
 
 | 111 | 
 DEFINE_GUID( GUID_DEVINTERFACE_DISK, | 
 
 
 
 
 
 | 112 | 
     0x53f56307L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 113 | 
   ); | 
 
 
 
 
 
 | 114 | 
 DEFINE_GUID( GUID_DEVINTERFACE_CDROM, | 
 
 
 
 
 
 | 115 | 
     0x53f56308L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 116 | 
   ); | 
 
 
 
 
 
 | 117 | 
 DEFINE_GUID( GUID_DEVINTERFACE_PARTITION, | 
 
 
 
 
 
 | 118 | 
     0x53f5630aL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 119 | 
   ); | 
 
 
 
 
 
 | 120 | 
 DEFINE_GUID( GUID_DEVINTERFACE_TAPE, | 
 
 
 
 
 
 | 121 | 
     0x53f5630bL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 122 | 
   ); | 
 
 
 
 
 
 | 123 | 
 DEFINE_GUID( GUID_DEVINTERFACE_WRITEONCEDISK, | 
 
 
 
 
 
 | 124 | 
     0x53f5630cL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 125 | 
   ); | 
 
 
 
 
 
 | 126 | 
 DEFINE_GUID( GUID_DEVINTERFACE_VOLUME, | 
 
 
 
 
 
 | 127 | 
     0x53f5630dL, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 128 | 
   ); | 
 
 
 
 
 
 | 129 | 
 DEFINE_GUID( GUID_DEVINTERFACE_MEDIUMCHANGER, | 
 
 
 
 
 
 | 130 | 
     0x53f56310L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 131 | 
   ); | 
 
 
 
 
 
 | 132 | 
 DEFINE_GUID( GUID_DEVINTERFACE_FLOPPY, | 
 
 
 
 
 
 | 133 | 
     0x53f56311L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 134 | 
   ); | 
 
 
 
 
 
 | 135 | 
 DEFINE_GUID( GUID_DEVINTERFACE_CDCHANGER, | 
 
 
 
 
 
 | 136 | 
     0x53f56312L, 0xb6bf, 0x11d0, 0x94, 0xf2, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 137 | 
   ); | 
 
 
 
 
 
 | 138 | 
 DEFINE_GUID( GUID_DEVINTERFACE_STORAGEPORT, | 
 
 
 
 
 
 | 139 | 
     0x2accfe60L, 0xc130, 0x11d2, 0xb0, 0x82, 0x00, 0xa0, 0xc9, 0x1e, 0xfb, 0x8b | 
 
 
 
 
 
 | 140 | 
   ); | 
 
 
 
 
 
 | 141 | 
  | 
 
 
 
 
 
 | 142 | 
 typedef | 
 
 
 
 
 
 | 143 | 
 enum _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 | 
  | 
 
 
 
 
 
 | 216 | 
 typedef 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 | 
  | 
 
 
 
 
 
 | 251 | 
 typedef | 
 
 
 
 
 
 | 252 | 
 struct _GET_MEDIA_TYPES | 
 
 
 
 
 
 | 253 | 
 { ULONG                 DeviceType; | 
 
 
 
 
 
 | 254 | 
   ULONG                 MediaInfoCount; | 
 
 
 
 
 
 | 255 | 
   DEVICE_MEDIA_INFO     MediaInfo[1]; | 
 
 
 
 
 
 | 256 | 
 } GET_MEDIA_TYPES, *PGET_MEDIA_TYPES; | 
 
 
 
 
 
 | 257 | 
  | 
 
 
 
 
 
 | 258 | 
 typedef | 
 
 
 
 
 
 | 259 | 
 struct _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 | 
  | 
 
 
 
 
 
 | 274 | 
 typedef | 
 
 
 
 
 
 | 275 | 
 struct _STORAGE_BUS_RESET_REQUEST | 
 
 
 
 
 
 | 276 | 
 { UCHAR                 PathId; | 
 
 
 
 
 
 | 277 | 
 } STORAGE_BUS_RESET_REQUEST, *PSTORAGE_BUS_RESET_REQUEST; | 
 
 
 
 
 
 | 278 | 
  | 
 
 
 
 
 
 | 279 | 
 typedef | 
 
 
 
 
 
 | 280 | 
 struct _STORAGE_DESCRIPTOR_HEADER | 
 
 
 
 
 
 | 281 | 
 { ULONG                 Version; | 
 
 
 
 
 
 | 282 | 
   ULONG                 Size; | 
 
 
 
 
 
 | 283 | 
 } STORAGE_DESCRIPTOR_HEADER, *PSTORAGE_DESCRIPTOR_HEADER; | 
 
 
 
 
 
 | 284 | 
  | 
 
 
 
 
 
 | 285 | 
 typedef | 
 
 
 
 
 
 | 286 | 
 struct _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 | 
  | 
 
 
 
 
 
 | 302 | 
 typedef | 
 
 
 
 
 
 | 303 | 
 struct _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 | 
  | 
 
 
 
 
 
 | 310 | 
 typedef | 
 
 
 
 
 
 | 311 | 
 struct _STORAGE_DEVICE_NUMBER | 
 
 
 
 
 
 | 312 | 
 { DEVICE_TYPE           DeviceType; | 
 
 
 
 
 
 | 313 | 
   ULONG                 DeviceNumber; | 
 
 
 
 
 
 | 314 | 
   ULONG                 PartitionNumber; | 
 
 
 
 
 
 | 315 | 
 } STORAGE_DEVICE_NUMBER, *PSTORAGE_DEVICE_NUMBER; | 
 
 
 
 
 
 | 316 | 
  | 
 
 
 
 
 
 | 317 | 
 typedef | 
 
 
 
 
 
 | 318 | 
 struct _STORAGE_PREDICT_FAILURE | 
 
 
 
 
 
 | 319 | 
 { ULONG                 PredictFailure; | 
 
 
 
 
 
 | 320 | 
   UCHAR                 VendorSpecific[512]; | 
 
 
 
 
 
 | 321 | 
 } STORAGE_PREDICT_FAILURE, *PSTORAGE_PREDICT_FAILURE; | 
 
 
 
 
 
 | 322 | 
  | 
 
 
 
 
 
 | 323 | 
 typedef | 
 
 
 
 
 
 | 324 | 
 enum _STORAGE_PROPERTY_ID | 
 
 
 
 
 
 | 325 | 
 { StorageDeviceProperty         = 0, | 
 
 
 
 
 
 | 326 | 
   StorageAdapterProperty        = 1, | 
 
 
 
 
 
 | 327 | 
   StorageDeviceIdProperty       = 2 | 
 
 
 
 
 
 | 328 | 
 } STORAGE_PROPERTY_ID, *PSTORAGE_PROPERTY_ID; | 
 
 
 
 
 
 | 329 | 
  | 
 
 
 
 
 
 | 330 | 
 typedef | 
 
 
 
 
 
 | 331 | 
 enum _STORAGE_QUERY_TYPE | 
 
 
 
 
 
 | 332 | 
 { PropertyStandardQuery         = 0, | 
 
 
 
 
 
 | 333 | 
   PropertyExistsQuery           = 1, | 
 
 
 
 
 
 | 334 | 
   PropertyMaskQuery             = 2, | 
 
 
 
 
 
 | 335 | 
   PropertyQueryMaxDefined       = 3 | 
 
 
 
 
 
 | 336 | 
 } STORAGE_QUERY_TYPE, *PSTORAGE_QUERY_TYPE; | 
 
 
 
 
 
 | 337 | 
  | 
 
 
 
 
 
 | 338 | 
 typedef | 
 
 
 
 
 
 | 339 | 
 struct _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 */ |