Mercurial > games > semicongine
comparison fuhtark_test/include/winapi/winioctl.h @ 1500:91c8c3b7cbf0
add: futhark tests for generating vulkan api
| author | sam <sam@basx.dev> |
|---|---|
| date | Wed, 26 Nov 2025 21:36:48 +0700 |
| parents | |
| children |
comparison
equal
deleted
inserted
replaced
| 1499:1f58458b7ef7 | 1500:91c8c3b7cbf0 |
|---|---|
| 1 /** | |
| 2 * This file has no copyright assigned and is placed in the Public Domain. | |
| 3 * This file is part of the w64 mingw-runtime package. | |
| 4 * No warranty is given; refer to the file DISCLAIMER within this package. | |
| 5 */ | |
| 6 #ifdef DEFINE_GUID | |
| 7 | |
| 8 #ifndef FAR | |
| 9 #define FAR | |
| 10 #endif | |
| 11 | |
| 12 DEFINE_GUID(GUID_DEVINTERFACE_DISK,0x53f56307L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 13 DEFINE_GUID(GUID_DEVINTERFACE_CDROM,0x53f56308L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 14 DEFINE_GUID(GUID_DEVINTERFACE_PARTITION,0x53f5630aL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 15 DEFINE_GUID(GUID_DEVINTERFACE_TAPE,0x53f5630bL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 16 DEFINE_GUID(GUID_DEVINTERFACE_WRITEONCEDISK,0x53f5630cL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 17 DEFINE_GUID(GUID_DEVINTERFACE_VOLUME,0x53f5630dL,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 18 DEFINE_GUID(GUID_DEVINTERFACE_MEDIUMCHANGER,0x53f56310L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 19 DEFINE_GUID(GUID_DEVINTERFACE_FLOPPY,0x53f56311L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 20 DEFINE_GUID(GUID_DEVINTERFACE_CDCHANGER,0x53f56312L,0xb6bf,0x11d0,0x94,0xf2,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 21 DEFINE_GUID(GUID_DEVINTERFACE_STORAGEPORT,0x2accfe60L,0xc130,0x11d2,0xb0,0x82,0x00,0xa0,0xc9,0x1e,0xfb,0x8b); | |
| 22 DEFINE_GUID(GUID_DEVINTERFACE_COMPORT,0x86e0d1e0L,0x8089,0x11d0,0x9c,0xe4,0x08,0x00,0x3e,0x30,0x1f,0x73); | |
| 23 DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR,0x4D36E978L,0xE325,0x11CE,0xBF,0xC1,0x08,0x00,0x2B,0xE1,0x03,0x18); | |
| 24 | |
| 25 #define DiskClassGuid GUID_DEVINTERFACE_DISK | |
| 26 #define CdRomClassGuid GUID_DEVINTERFACE_CDROM | |
| 27 #define PartitionClassGuid GUID_DEVINTERFACE_PARTITION | |
| 28 #define TapeClassGuid GUID_DEVINTERFACE_TAPE | |
| 29 #define WriteOnceDiskClassGuid GUID_DEVINTERFACE_WRITEONCEDISK | |
| 30 #define VolumeClassGuid GUID_DEVINTERFACE_VOLUME | |
| 31 #define MediumChangerClassGuid GUID_DEVINTERFACE_MEDIUMCHANGER | |
| 32 #define FloppyClassGuid GUID_DEVINTERFACE_FLOPPY | |
| 33 #define CdChangerClassGuid GUID_DEVINTERFACE_CDCHANGER | |
| 34 #define StoragePortClassGuid GUID_DEVINTERFACE_STORAGEPORT | |
| 35 #define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT | |
| 36 #define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR | |
| 37 #endif | |
| 38 | |
| 39 #ifndef _WINIOCTL_ | |
| 40 #define _WINIOCTL_ | |
| 41 | |
| 42 #ifndef _DEVIOCTL_ | |
| 43 #define _DEVIOCTL_ | |
| 44 | |
| 45 #define DEVICE_TYPE DWORD | |
| 46 | |
| 47 #define FILE_DEVICE_BEEP 0x00000001 | |
| 48 #define FILE_DEVICE_CD_ROM 0x00000002 | |
| 49 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 0x00000003 | |
| 50 #define FILE_DEVICE_CONTROLLER 0x00000004 | |
| 51 #define FILE_DEVICE_DATALINK 0x00000005 | |
| 52 #define FILE_DEVICE_DFS 0x00000006 | |
| 53 #define FILE_DEVICE_DISK 0x00000007 | |
| 54 #define FILE_DEVICE_DISK_FILE_SYSTEM 0x00000008 | |
| 55 #define FILE_DEVICE_FILE_SYSTEM 0x00000009 | |
| 56 #define FILE_DEVICE_INPORT_PORT 0x0000000a | |
| 57 #define FILE_DEVICE_KEYBOARD 0x0000000b | |
| 58 #define FILE_DEVICE_MAILSLOT 0x0000000c | |
| 59 #define FILE_DEVICE_MIDI_IN 0x0000000d | |
| 60 #define FILE_DEVICE_MIDI_OUT 0x0000000e | |
| 61 #define FILE_DEVICE_MOUSE 0x0000000f | |
| 62 #define FILE_DEVICE_MULTI_UNC_PROVIDER 0x00000010 | |
| 63 #define FILE_DEVICE_NAMED_PIPE 0x00000011 | |
| 64 #define FILE_DEVICE_NETWORK 0x00000012 | |
| 65 #define FILE_DEVICE_NETWORK_BROWSER 0x00000013 | |
| 66 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 0x00000014 | |
| 67 #define FILE_DEVICE_NULL 0x00000015 | |
| 68 #define FILE_DEVICE_PARALLEL_PORT 0x00000016 | |
| 69 #define FILE_DEVICE_PHYSICAL_NETCARD 0x00000017 | |
| 70 #define FILE_DEVICE_PRINTER 0x00000018 | |
| 71 #define FILE_DEVICE_SCANNER 0x00000019 | |
| 72 #define FILE_DEVICE_SERIAL_MOUSE_PORT 0x0000001a | |
| 73 #define FILE_DEVICE_SERIAL_PORT 0x0000001b | |
| 74 #define FILE_DEVICE_SCREEN 0x0000001c | |
| 75 #define FILE_DEVICE_SOUND 0x0000001d | |
| 76 #define FILE_DEVICE_STREAMS 0x0000001e | |
| 77 #define FILE_DEVICE_TAPE 0x0000001f | |
| 78 #define FILE_DEVICE_TAPE_FILE_SYSTEM 0x00000020 | |
| 79 #define FILE_DEVICE_TRANSPORT 0x00000021 | |
| 80 #define FILE_DEVICE_UNKNOWN 0x00000022 | |
| 81 #define FILE_DEVICE_VIDEO 0x00000023 | |
| 82 #define FILE_DEVICE_VIRTUAL_DISK 0x00000024 | |
| 83 #define FILE_DEVICE_WAVE_IN 0x00000025 | |
| 84 #define FILE_DEVICE_WAVE_OUT 0x00000026 | |
| 85 #define FILE_DEVICE_8042_PORT 0x00000027 | |
| 86 #define FILE_DEVICE_NETWORK_REDIRECTOR 0x00000028 | |
| 87 #define FILE_DEVICE_BATTERY 0x00000029 | |
| 88 #define FILE_DEVICE_BUS_EXTENDER 0x0000002a | |
| 89 #define FILE_DEVICE_MODEM 0x0000002b | |
| 90 #define FILE_DEVICE_VDM 0x0000002c | |
| 91 #define FILE_DEVICE_MASS_STORAGE 0x0000002d | |
| 92 #define FILE_DEVICE_SMB 0x0000002e | |
| 93 #define FILE_DEVICE_KS 0x0000002f | |
| 94 #define FILE_DEVICE_CHANGER 0x00000030 | |
| 95 #define FILE_DEVICE_SMARTCARD 0x00000031 | |
| 96 #define FILE_DEVICE_ACPI 0x00000032 | |
| 97 #define FILE_DEVICE_DVD 0x00000033 | |
| 98 #define FILE_DEVICE_FULLSCREEN_VIDEO 0x00000034 | |
| 99 #define FILE_DEVICE_DFS_FILE_SYSTEM 0x00000035 | |
| 100 #define FILE_DEVICE_DFS_VOLUME 0x00000036 | |
| 101 #define FILE_DEVICE_SERENUM 0x00000037 | |
| 102 #define FILE_DEVICE_TERMSRV 0x00000038 | |
| 103 #define FILE_DEVICE_KSEC 0x00000039 | |
| 104 #define FILE_DEVICE_FIPS 0x0000003A | |
| 105 #define FILE_DEVICE_INFINIBAND 0x0000003B | |
| 106 | |
| 107 #define CTL_CODE(DeviceType,Function,Method,Access) (((DeviceType) << 16) | ((Access) << 14) | ((Function) << 2) | (Method)) | |
| 108 | |
| 109 #define DEVICE_TYPE_FROM_CTL_CODE(ctrlCode) (((DWORD)(ctrlCode & 0xffff0000)) >> 16) | |
| 110 | |
| 111 #define METHOD_BUFFERED 0 | |
| 112 #define METHOD_IN_DIRECT 1 | |
| 113 #define METHOD_OUT_DIRECT 2 | |
| 114 #define METHOD_NEITHER 3 | |
| 115 | |
| 116 #define METHOD_DIRECT_TO_HARDWARE METHOD_IN_DIRECT | |
| 117 #define METHOD_DIRECT_FROM_HARDWARE METHOD_OUT_DIRECT | |
| 118 | |
| 119 #define FILE_ANY_ACCESS 0 | |
| 120 #define FILE_SPECIAL_ACCESS (FILE_ANY_ACCESS) | |
| 121 #define FILE_READ_ACCESS (0x0001) | |
| 122 #define FILE_WRITE_ACCESS (0x0002) | |
| 123 #endif | |
| 124 | |
| 125 #ifndef _NTDDSTOR_H_ | |
| 126 #define _NTDDSTOR_H_ | |
| 127 | |
| 128 #ifdef __cplusplus | |
| 129 extern "C" { | |
| 130 #endif | |
| 131 | |
| 132 #define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE | |
| 133 | |
| 134 #define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 135 #define IOCTL_STORAGE_CHECK_VERIFY2 CTL_CODE(IOCTL_STORAGE_BASE,0x0200,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 136 #define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 137 #define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 138 #define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 139 #define IOCTL_STORAGE_LOAD_MEDIA2 CTL_CODE(IOCTL_STORAGE_BASE,0x0203,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 140 #define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 141 #define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 142 #define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 143 | |
| 144 #define IOCTL_STORAGE_EJECTION_CONTROL CTL_CODE(IOCTL_STORAGE_BASE,0x0250,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 145 #define IOCTL_STORAGE_MCN_CONTROL CTL_CODE(IOCTL_STORAGE_BASE,0x0251,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 146 | |
| 147 #define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 148 #define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE,0x0301,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 149 #define IOCTL_STORAGE_GET_MEDIA_SERIAL_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0304,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 150 #define IOCTL_STORAGE_GET_HOTPLUG_INFO CTL_CODE(IOCTL_STORAGE_BASE,0x0305,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 151 #define IOCTL_STORAGE_SET_HOTPLUG_INFO CTL_CODE(IOCTL_STORAGE_BASE,0x0306,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 152 | |
| 153 #define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 154 #define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 155 #define IOCTL_STORAGE_BREAK_RESERVATION CTL_CODE(IOCTL_STORAGE_BASE,0x0405,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 156 | |
| 157 #define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE,0x0420,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 158 #define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE,0x0440,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 159 #define IOCTL_STORAGE_READ_CAPACITY CTL_CODE(IOCTL_STORAGE_BASE,0x0450,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 160 | |
| 161 #define OBSOLETE_IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE,0x0400,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 162 #define OBSOLETE_IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE,0x0401,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 163 | |
| 164 typedef struct _STORAGE_HOTPLUG_INFO { | |
| 165 DWORD Size; | |
| 166 BOOLEAN MediaRemovable; | |
| 167 BOOLEAN MediaHotplug; | |
| 168 BOOLEAN DeviceHotplug; | |
| 169 BOOLEAN WriteCacheEnableOverride; | |
| 170 } STORAGE_HOTPLUG_INFO,*PSTORAGE_HOTPLUG_INFO; | |
| 171 | |
| 172 typedef struct _STORAGE_DEVICE_NUMBER { | |
| 173 DEVICE_TYPE DeviceType; | |
| 174 DWORD DeviceNumber; | |
| 175 DWORD PartitionNumber; | |
| 176 } STORAGE_DEVICE_NUMBER,*PSTORAGE_DEVICE_NUMBER; | |
| 177 | |
| 178 typedef struct _STORAGE_BUS_RESET_REQUEST { | |
| 179 BYTE PathId; | |
| 180 } STORAGE_BUS_RESET_REQUEST,*PSTORAGE_BUS_RESET_REQUEST; | |
| 181 | |
| 182 typedef struct STORAGE_BREAK_RESERVATION_REQUEST { | |
| 183 DWORD Length; | |
| 184 BYTE _unused; | |
| 185 BYTE PathId; | |
| 186 BYTE TargetId; | |
| 187 BYTE Lun; | |
| 188 } STORAGE_BREAK_RESERVATION_REQUEST,*PSTORAGE_BREAK_RESERVATION_REQUEST; | |
| 189 | |
| 190 typedef struct _PREVENT_MEDIA_REMOVAL { | |
| 191 BOOLEAN PreventMediaRemoval; | |
| 192 } PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL; | |
| 193 | |
| 194 typedef struct _CLASS_MEDIA_CHANGE_CONTEXT { | |
| 195 DWORD MediaChangeCount; | |
| 196 DWORD NewState; | |
| 197 } CLASS_MEDIA_CHANGE_CONTEXT,*PCLASS_MEDIA_CHANGE_CONTEXT; | |
| 198 | |
| 199 typedef struct _TAPE_STATISTICS { | |
| 200 DWORD Version; | |
| 201 DWORD Flags; | |
| 202 LARGE_INTEGER RecoveredWrites; | |
| 203 LARGE_INTEGER UnrecoveredWrites; | |
| 204 LARGE_INTEGER RecoveredReads; | |
| 205 LARGE_INTEGER UnrecoveredReads; | |
| 206 BYTE CompressionRatioReads; | |
| 207 BYTE CompressionRatioWrites; | |
| 208 } TAPE_STATISTICS,*PTAPE_STATISTICS; | |
| 209 | |
| 210 #define RECOVERED_WRITES_VALID 0x00000001 | |
| 211 #define UNRECOVERED_WRITES_VALID 0x00000002 | |
| 212 #define RECOVERED_READS_VALID 0x00000004 | |
| 213 #define UNRECOVERED_READS_VALID 0x00000008 | |
| 214 #define WRITE_COMPRESSION_INFO_VALID 0x00000010 | |
| 215 #define READ_COMPRESSION_INFO_VALID 0x00000020 | |
| 216 | |
| 217 typedef struct _TAPE_GET_STATISTICS { | |
| 218 DWORD Operation; | |
| 219 } TAPE_GET_STATISTICS,*PTAPE_GET_STATISTICS; | |
| 220 | |
| 221 #define TAPE_RETURN_STATISTICS 0L | |
| 222 #define TAPE_RETURN_ENV_INFO 1L | |
| 223 #define TAPE_RESET_STATISTICS 2L | |
| 224 | |
| 225 typedef enum _STORAGE_MEDIA_TYPE { | |
| 226 DDS_4mm = 0x20,MiniQic,Travan,QIC,MP_8mm,AME_8mm,AIT1_8mm,DLT,NCTP,IBM_3480,IBM_3490E,IBM_Magstar_3590,IBM_Magstar_MP,STK_DATA_D3,SONY_DTF, | |
| 227 DV_6mm,DMI,SONY_D2,CLEANER_CARTRIDGE,CD_ROM,CD_R,CD_RW,DVD_ROM,DVD_R,DVD_RW,MO_3_RW,MO_5_WO,MO_5_RW,MO_5_LIMDOW,PC_5_WO,PC_5_RW,PD_5_RW, | |
| 228 ABL_5_WO,PINNACLE_APEX_5_RW,SONY_12_WO,PHILIPS_12_WO,HITACHI_12_WO,CYGNET_12_WO,KODAK_14_WO,MO_NFR_525,NIKON_12_RW,IOMEGA_ZIP,IOMEGA_JAZ, | |
| 229 SYQUEST_EZ135,SYQUEST_EZFLYER,SYQUEST_SYJET,AVATAR_F2,MP2_8mm,DST_S,DST_M,DST_L,VXATape_1,VXATape_2,STK_9840,LTO_Ultrium,LTO_Accelis,DVD_RAM, | |
| 230 AIT_8mm,ADR_1,ADR_2,STK_9940,SAIT | |
| 231 } STORAGE_MEDIA_TYPE,*PSTORAGE_MEDIA_TYPE; | |
| 232 | |
| 233 #define MEDIA_ERASEABLE 0x00000001 | |
| 234 #define MEDIA_WRITE_ONCE 0x00000002 | |
| 235 #define MEDIA_READ_ONLY 0x00000004 | |
| 236 #define MEDIA_READ_WRITE 0x00000008 | |
| 237 | |
| 238 #define MEDIA_WRITE_PROTECTED 0x00000100 | |
| 239 #define MEDIA_CURRENTLY_MOUNTED 0x80000000 | |
| 240 | |
| 241 typedef enum _STORAGE_BUS_TYPE { | |
| 242 BusTypeUnknown = 0x00,BusTypeScsi,BusTypeAtapi,BusTypeAta,BusType1394,BusTypeSsa,BusTypeFibre,BusTypeUsb,BusTypeRAID,BusTypeiScsi, | |
| 243 BusTypeSas,BusTypeSata,BusTypeMaxReserved = 0x7F | |
| 244 } STORAGE_BUS_TYPE,*PSTORAGE_BUS_TYPE; | |
| 245 | |
| 246 typedef struct _DEVICE_MEDIA_INFO { | |
| 247 union { | |
| 248 struct { | |
| 249 LARGE_INTEGER Cylinders; | |
| 250 STORAGE_MEDIA_TYPE MediaType; | |
| 251 DWORD TracksPerCylinder; | |
| 252 DWORD SectorsPerTrack; | |
| 253 DWORD BytesPerSector; | |
| 254 DWORD NumberMediaSides; | |
| 255 DWORD MediaCharacteristics; | |
| 256 } DiskInfo; | |
| 257 struct { | |
| 258 LARGE_INTEGER Cylinders; | |
| 259 STORAGE_MEDIA_TYPE MediaType; | |
| 260 DWORD TracksPerCylinder; | |
| 261 DWORD SectorsPerTrack; | |
| 262 DWORD BytesPerSector; | |
| 263 DWORD NumberMediaSides; | |
| 264 DWORD MediaCharacteristics; | |
| 265 } RemovableDiskInfo; | |
| 266 struct { | |
| 267 STORAGE_MEDIA_TYPE MediaType; | |
| 268 DWORD MediaCharacteristics; | |
| 269 DWORD CurrentBlockSize; | |
| 270 STORAGE_BUS_TYPE BusType; | |
| 271 union { | |
| 272 struct { | |
| 273 BYTE MediumType; | |
| 274 BYTE DensityCode; | |
| 275 } ScsiInformation; | |
| 276 } BusSpecificData; | |
| 277 } TapeInfo; | |
| 278 } DeviceSpecific; | |
| 279 } DEVICE_MEDIA_INFO,*PDEVICE_MEDIA_INFO; | |
| 280 | |
| 281 typedef struct _GET_MEDIA_TYPES { | |
| 282 DWORD DeviceType; | |
| 283 DWORD MediaInfoCount; | |
| 284 DEVICE_MEDIA_INFO MediaInfo[1]; | |
| 285 } GET_MEDIA_TYPES,*PGET_MEDIA_TYPES; | |
| 286 | |
| 287 typedef struct _STORAGE_PREDICT_FAILURE { | |
| 288 DWORD PredictFailure; | |
| 289 BYTE VendorSpecific[512]; | |
| 290 } STORAGE_PREDICT_FAILURE,*PSTORAGE_PREDICT_FAILURE; | |
| 291 | |
| 292 #ifdef __cplusplus | |
| 293 } | |
| 294 #endif | |
| 295 #endif | |
| 296 | |
| 297 #define IOCTL_DISK_BASE FILE_DEVICE_DISK | |
| 298 #define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0x0000,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 299 #define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 300 #define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 301 #define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0003,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 302 #define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 303 #define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x0005,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 304 #define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 305 #define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 306 #define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE,0x0008,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 307 #define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE,0x0009,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 308 #define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,0x000a,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 309 #define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE,0x000b,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 310 #define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,0x000c,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 311 #define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,0x000d,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 312 #define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,0x000e,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 313 #define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,0x000f,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 314 #define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,0x0010,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 315 #define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x0018,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 316 #define IOCTL_DISK_CONTROLLER_NUMBER CTL_CODE(IOCTL_DISK_BASE,0x0011,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 317 | |
| 318 #define SMART_GET_VERSION CTL_CODE(IOCTL_DISK_BASE,0x0020,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 319 #define SMART_SEND_DRIVE_COMMAND CTL_CODE(IOCTL_DISK_BASE,0x0021,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 320 #define SMART_RCV_DRIVE_DATA CTL_CODE(IOCTL_DISK_BASE,0x0022,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 321 | |
| 322 #define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x0012,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 323 #define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x0013,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 324 #define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x0014,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 325 #define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x0015,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 326 #define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x0016,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 327 #define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x0017,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 328 #define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x0028,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 329 | |
| 330 #define IOCTL_DISK_REASSIGN_BLOCKS_EX CTL_CODE(IOCTL_DISK_BASE,0x0029,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 331 #define IOCTL_DISK_UPDATE_DRIVE_SIZE CTL_CODE(IOCTL_DISK_BASE,0x0032,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 332 #define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x0034,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 333 #define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x0035,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 334 #define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x0036,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 335 #define OBSOLETE_DISK_GET_WRITE_CACHE_STATE CTL_CODE(IOCTL_DISK_BASE,0x0037,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 336 #define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x0040,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 337 #define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x0050,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 338 #define IOCTL_DISK_FORMAT_DRIVE CTL_CODE(IOCTL_DISK_BASE,0x00f3,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 339 #define IOCTL_DISK_SENSE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x00f8,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 340 #define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x0200,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 341 #define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x0201,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 342 #define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x0202,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 343 #define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x0203,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 344 #define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE,0x0204,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 345 #define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x0205,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 346 #define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE,0x0206,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 347 #define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE,0x0300,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 348 | |
| 349 #define PARTITION_ENTRY_UNUSED 0x00 | |
| 350 #define PARTITION_FAT_12 0x01 | |
| 351 #define PARTITION_XENIX_1 0x02 | |
| 352 #define PARTITION_XENIX_2 0x03 | |
| 353 #define PARTITION_FAT_16 0x04 | |
| 354 #define PARTITION_EXTENDED 0x05 | |
| 355 #define PARTITION_HUGE 0x06 | |
| 356 #define PARTITION_IFS 0x07 | |
| 357 #define PARTITION_OS2BOOTMGR 0x0A | |
| 358 #define PARTITION_FAT32 0x0B | |
| 359 #define PARTITION_FAT32_XINT13 0x0C | |
| 360 #define PARTITION_XINT13 0x0E | |
| 361 #define PARTITION_XINT13_EXTENDED 0x0F | |
| 362 #define PARTITION_PREP 0x41 | |
| 363 #define PARTITION_LDM 0x42 | |
| 364 #define PARTITION_UNIX 0x63 | |
| 365 | |
| 366 #define VALID_NTFT 0xC0 | |
| 367 | |
| 368 #define PARTITION_NTFT 0x80 | |
| 369 | |
| 370 #define IsRecognizedPartition(PartitionType) (((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT_12)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_IFS)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_HUGE)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT32)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_FAT32_XINT13)) || ((PartitionType & PARTITION_NTFT) && ((PartitionType & ~0xC0)==PARTITION_XINT13)) || ((PartitionType)==PARTITION_FAT_12) || ((PartitionType)==PARTITION_FAT_16) || ((PartitionType)==PARTITION_IFS) || ((PartitionType)==PARTITION_HUGE) || ((PartitionType)==PARTITION_FAT32) || ((PartitionType)==PARTITION_FAT32_XINT13) || ((PartitionType)==PARTITION_XINT13)) | |
| 371 #define IsContainerPartition(PartitionType) ((PartitionType==PARTITION_EXTENDED) || (PartitionType==PARTITION_XINT13_EXTENDED)) | |
| 372 #define IsFTPartition(PartitionType) (((PartitionType)&PARTITION_NTFT) && IsRecognizedPartition(PartitionType)) | |
| 373 | |
| 374 typedef enum _MEDIA_TYPE { | |
| 375 Unknown,F5_1Pt2_512,F3_1Pt44_512,F3_2Pt88_512,F3_20Pt8_512,F3_720_512,F5_360_512,F5_320_512,F5_320_1024,F5_180_512,F5_160_512, | |
| 376 RemovableMedia,FixedMedia,F3_120M_512,F3_640_512,F5_640_512,F5_720_512,F3_1Pt2_512,F3_1Pt23_1024,F5_1Pt23_1024,F3_128Mb_512, | |
| 377 F3_230Mb_512,F8_256_128,F3_200Mb_512,F3_240M_512,F3_32M_512 | |
| 378 } MEDIA_TYPE,*PMEDIA_TYPE; | |
| 379 | |
| 380 typedef struct _FORMAT_PARAMETERS { | |
| 381 MEDIA_TYPE MediaType; | |
| 382 DWORD StartCylinderNumber; | |
| 383 DWORD EndCylinderNumber; | |
| 384 DWORD StartHeadNumber; | |
| 385 DWORD EndHeadNumber; | |
| 386 } FORMAT_PARAMETERS,*PFORMAT_PARAMETERS; | |
| 387 | |
| 388 typedef WORD BAD_TRACK_NUMBER; | |
| 389 typedef WORD *PBAD_TRACK_NUMBER; | |
| 390 | |
| 391 typedef struct _FORMAT_EX_PARAMETERS { | |
| 392 MEDIA_TYPE MediaType; | |
| 393 DWORD StartCylinderNumber; | |
| 394 DWORD EndCylinderNumber; | |
| 395 DWORD StartHeadNumber; | |
| 396 DWORD EndHeadNumber; | |
| 397 WORD FormatGapLength; | |
| 398 WORD SectorsPerTrack; | |
| 399 WORD SectorNumber[1]; | |
| 400 } FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS; | |
| 401 | |
| 402 typedef struct _DISK_GEOMETRY { | |
| 403 LARGE_INTEGER Cylinders; | |
| 404 MEDIA_TYPE MediaType; | |
| 405 DWORD TracksPerCylinder; | |
| 406 DWORD SectorsPerTrack; | |
| 407 DWORD BytesPerSector; | |
| 408 } DISK_GEOMETRY,*PDISK_GEOMETRY; | |
| 409 | |
| 410 #define WMI_DISK_GEOMETRY_GUID { 0x25007f51,0x57c2,0x11d1,{ 0xa5,0x28,0x0,0xa0,0xc9,0x6,0x29,0x10 } } | |
| 411 | |
| 412 typedef struct _PARTITION_INFORMATION { | |
| 413 LARGE_INTEGER StartingOffset; | |
| 414 LARGE_INTEGER PartitionLength; | |
| 415 DWORD HiddenSectors; | |
| 416 DWORD PartitionNumber; | |
| 417 BYTE PartitionType; | |
| 418 BOOLEAN BootIndicator; | |
| 419 BOOLEAN RecognizedPartition; | |
| 420 BOOLEAN RewritePartition; | |
| 421 } PARTITION_INFORMATION,*PPARTITION_INFORMATION; | |
| 422 | |
| 423 typedef struct _SET_PARTITION_INFORMATION { | |
| 424 BYTE PartitionType; | |
| 425 } SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION; | |
| 426 | |
| 427 typedef struct _DRIVE_LAYOUT_INFORMATION { | |
| 428 DWORD PartitionCount; | |
| 429 DWORD Signature; | |
| 430 PARTITION_INFORMATION PartitionEntry[1]; | |
| 431 } DRIVE_LAYOUT_INFORMATION,*PDRIVE_LAYOUT_INFORMATION; | |
| 432 | |
| 433 typedef struct _VERIFY_INFORMATION { | |
| 434 LARGE_INTEGER StartingOffset; | |
| 435 DWORD Length; | |
| 436 } VERIFY_INFORMATION,*PVERIFY_INFORMATION; | |
| 437 | |
| 438 typedef struct _REASSIGN_BLOCKS { | |
| 439 WORD Reserved; | |
| 440 WORD Count; | |
| 441 DWORD BlockNumber[1]; | |
| 442 } REASSIGN_BLOCKS,*PREASSIGN_BLOCKS; | |
| 443 | |
| 444 #include <pshpack1.h> | |
| 445 typedef struct _REASSIGN_BLOCKS_EX { | |
| 446 WORD Reserved; | |
| 447 WORD Count; | |
| 448 LARGE_INTEGER BlockNumber[1]; | |
| 449 } REASSIGN_BLOCKS_EX,*PREASSIGN_BLOCKS_EX; | |
| 450 #include <poppack.h> | |
| 451 | |
| 452 typedef enum _PARTITION_STYLE { | |
| 453 PARTITION_STYLE_MBR,PARTITION_STYLE_GPT,PARTITION_STYLE_RAW | |
| 454 } PARTITION_STYLE; | |
| 455 | |
| 456 typedef struct _PARTITION_INFORMATION_GPT { | |
| 457 GUID PartitionType; | |
| 458 GUID PartitionId; | |
| 459 DWORD64 Attributes; | |
| 460 WCHAR Name [36]; | |
| 461 } PARTITION_INFORMATION_GPT,*PPARTITION_INFORMATION_GPT; | |
| 462 | |
| 463 #define GPT_ATTRIBUTE_PLATFORM_REQUIRED (0x0000000000000001) | |
| 464 | |
| 465 #define GPT_BASIC_DATA_ATTRIBUTE_NO_DRIVE_LETTER (0x8000000000000000) | |
| 466 #define GPT_BASIC_DATA_ATTRIBUTE_HIDDEN (0x4000000000000000) | |
| 467 #define GPT_BASIC_DATA_ATTRIBUTE_SHADOW_COPY (0x2000000000000000) | |
| 468 #define GPT_BASIC_DATA_ATTRIBUTE_READ_ONLY (0x1000000000000000) | |
| 469 | |
| 470 typedef struct _PARTITION_INFORMATION_MBR { | |
| 471 BYTE PartitionType; | |
| 472 BOOLEAN BootIndicator; | |
| 473 BOOLEAN RecognizedPartition; | |
| 474 DWORD HiddenSectors; | |
| 475 } PARTITION_INFORMATION_MBR,*PPARTITION_INFORMATION_MBR; | |
| 476 | |
| 477 typedef SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION_MBR; | |
| 478 typedef PARTITION_INFORMATION_GPT SET_PARTITION_INFORMATION_GPT; | |
| 479 | |
| 480 typedef struct _SET_PARTITION_INFORMATION_EX { | |
| 481 PARTITION_STYLE PartitionStyle; | |
| 482 __MINGW_EXTENSION union { | |
| 483 SET_PARTITION_INFORMATION_MBR Mbr; | |
| 484 SET_PARTITION_INFORMATION_GPT Gpt; | |
| 485 }; | |
| 486 } SET_PARTITION_INFORMATION_EX,*PSET_PARTITION_INFORMATION_EX; | |
| 487 | |
| 488 typedef struct _CREATE_DISK_GPT { | |
| 489 GUID DiskId; | |
| 490 DWORD MaxPartitionCount; | |
| 491 } CREATE_DISK_GPT,*PCREATE_DISK_GPT; | |
| 492 | |
| 493 typedef struct _CREATE_DISK_MBR { | |
| 494 DWORD Signature; | |
| 495 } CREATE_DISK_MBR,*PCREATE_DISK_MBR; | |
| 496 | |
| 497 typedef struct _CREATE_DISK { | |
| 498 PARTITION_STYLE PartitionStyle; | |
| 499 __MINGW_EXTENSION union { | |
| 500 CREATE_DISK_MBR Mbr; | |
| 501 CREATE_DISK_GPT Gpt; | |
| 502 }; | |
| 503 } CREATE_DISK,*PCREATE_DISK; | |
| 504 | |
| 505 typedef struct _GET_LENGTH_INFORMATION { | |
| 506 LARGE_INTEGER Length; | |
| 507 } GET_LENGTH_INFORMATION,*PGET_LENGTH_INFORMATION; | |
| 508 | |
| 509 typedef struct _PARTITION_INFORMATION_EX { | |
| 510 PARTITION_STYLE PartitionStyle; | |
| 511 LARGE_INTEGER StartingOffset; | |
| 512 LARGE_INTEGER PartitionLength; | |
| 513 DWORD PartitionNumber; | |
| 514 BOOLEAN RewritePartition; | |
| 515 __MINGW_EXTENSION union { | |
| 516 PARTITION_INFORMATION_MBR Mbr; | |
| 517 PARTITION_INFORMATION_GPT Gpt; | |
| 518 }; | |
| 519 } PARTITION_INFORMATION_EX,*PPARTITION_INFORMATION_EX; | |
| 520 | |
| 521 typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { | |
| 522 GUID DiskId; | |
| 523 LARGE_INTEGER StartingUsableOffset; | |
| 524 LARGE_INTEGER UsableLength; | |
| 525 DWORD MaxPartitionCount; | |
| 526 } DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT; | |
| 527 | |
| 528 typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { | |
| 529 DWORD Signature; | |
| 530 } DRIVE_LAYOUT_INFORMATION_MBR,*PDRIVE_LAYOUT_INFORMATION_MBR; | |
| 531 | |
| 532 typedef struct _DRIVE_LAYOUT_INFORMATION_EX { | |
| 533 DWORD PartitionStyle; | |
| 534 DWORD PartitionCount; | |
| 535 __MINGW_EXTENSION union { | |
| 536 DRIVE_LAYOUT_INFORMATION_MBR Mbr; | |
| 537 DRIVE_LAYOUT_INFORMATION_GPT Gpt; | |
| 538 }; | |
| 539 PARTITION_INFORMATION_EX PartitionEntry[1]; | |
| 540 } DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX; | |
| 541 | |
| 542 typedef enum _DETECTION_TYPE { | |
| 543 DetectNone,DetectInt13,DetectExInt13 | |
| 544 } DETECTION_TYPE; | |
| 545 | |
| 546 typedef struct _DISK_INT13_INFO { | |
| 547 WORD DriveSelect; | |
| 548 DWORD MaxCylinders; | |
| 549 WORD SectorsPerTrack; | |
| 550 WORD MaxHeads; | |
| 551 WORD NumberDrives; | |
| 552 } DISK_INT13_INFO,*PDISK_INT13_INFO; | |
| 553 | |
| 554 typedef struct _DISK_EX_INT13_INFO { | |
| 555 WORD ExBufferSize; | |
| 556 WORD ExFlags; | |
| 557 DWORD ExCylinders; | |
| 558 DWORD ExHeads; | |
| 559 DWORD ExSectorsPerTrack; | |
| 560 DWORD64 ExSectorsPerDrive; | |
| 561 WORD ExSectorSize; | |
| 562 WORD ExReserved; | |
| 563 } DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO; | |
| 564 | |
| 565 typedef struct _DISK_DETECTION_INFO { | |
| 566 DWORD SizeOfDetectInfo; | |
| 567 DETECTION_TYPE DetectionType; | |
| 568 __MINGW_EXTENSION union { | |
| 569 __MINGW_EXTENSION struct { | |
| 570 DISK_INT13_INFO Int13; | |
| 571 DISK_EX_INT13_INFO ExInt13; | |
| 572 }; | |
| 573 }; | |
| 574 } DISK_DETECTION_INFO,*PDISK_DETECTION_INFO; | |
| 575 | |
| 576 typedef struct _DISK_PARTITION_INFO { | |
| 577 DWORD SizeOfPartitionInfo; | |
| 578 PARTITION_STYLE PartitionStyle; | |
| 579 __MINGW_EXTENSION union { | |
| 580 struct { | |
| 581 DWORD Signature; | |
| 582 DWORD CheckSum; | |
| 583 } Mbr; | |
| 584 struct { | |
| 585 GUID DiskId; | |
| 586 } Gpt; | |
| 587 }; | |
| 588 } DISK_PARTITION_INFO,*PDISK_PARTITION_INFO; | |
| 589 | |
| 590 #define DiskGeometryGetPartition(Geometry) ((PDISK_PARTITION_INFO)((Geometry)->Data)) | |
| 591 #define DiskGeometryGetDetect(Geometry) ((PDISK_DETECTION_INFO)(((DWORD_PTR)DiskGeometryGetPartition(Geometry)+ DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo))) | |
| 592 | |
| 593 typedef struct _DISK_GEOMETRY_EX { | |
| 594 DISK_GEOMETRY Geometry; | |
| 595 LARGE_INTEGER DiskSize; | |
| 596 BYTE Data[1]; | |
| 597 } DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX; | |
| 598 | |
| 599 typedef struct _DISK_CONTROLLER_NUMBER { | |
| 600 DWORD ControllerNumber; | |
| 601 DWORD DiskNumber; | |
| 602 } DISK_CONTROLLER_NUMBER,*PDISK_CONTROLLER_NUMBER; | |
| 603 | |
| 604 typedef enum { | |
| 605 EqualPriority,KeepPrefetchedData,KeepReadData | |
| 606 } DISK_CACHE_RETENTION_PRIORITY; | |
| 607 | |
| 608 typedef struct _DISK_CACHE_INFORMATION { | |
| 609 BOOLEAN ParametersSavable; | |
| 610 BOOLEAN ReadCacheEnabled; | |
| 611 BOOLEAN WriteCacheEnabled; | |
| 612 DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; | |
| 613 DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; | |
| 614 WORD DisablePrefetchTransferLength; | |
| 615 BOOLEAN PrefetchScalar; | |
| 616 __MINGW_EXTENSION union { | |
| 617 struct { | |
| 618 WORD Minimum; | |
| 619 WORD Maximum; | |
| 620 WORD MaximumBlocks; | |
| 621 } ScalarPrefetch; | |
| 622 struct { | |
| 623 WORD Minimum; | |
| 624 WORD Maximum; | |
| 625 } BlockPrefetch; | |
| 626 }; | |
| 627 } DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION; | |
| 628 | |
| 629 typedef struct _DISK_GROW_PARTITION { | |
| 630 DWORD PartitionNumber; | |
| 631 LARGE_INTEGER BytesToGrow; | |
| 632 } DISK_GROW_PARTITION,*PDISK_GROW_PARTITION; | |
| 633 | |
| 634 #define HIST_NO_OF_BUCKETS 24 | |
| 635 | |
| 636 typedef struct _HISTOGRAM_BUCKET { | |
| 637 DWORD Reads; | |
| 638 DWORD Writes; | |
| 639 } HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET; | |
| 640 | |
| 641 #define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET) | |
| 642 | |
| 643 typedef struct _DISK_HISTOGRAM { | |
| 644 LARGE_INTEGER DiskSize; | |
| 645 LARGE_INTEGER Start; | |
| 646 LARGE_INTEGER End; | |
| 647 LARGE_INTEGER Average; | |
| 648 LARGE_INTEGER AverageRead; | |
| 649 LARGE_INTEGER AverageWrite; | |
| 650 DWORD Granularity; | |
| 651 DWORD Size; | |
| 652 DWORD ReadCount; | |
| 653 DWORD WriteCount; | |
| 654 PHISTOGRAM_BUCKET Histogram; | |
| 655 } DISK_HISTOGRAM,*PDISK_HISTOGRAM; | |
| 656 | |
| 657 #define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM) | |
| 658 | |
| 659 typedef struct _DISK_PERFORMANCE { | |
| 660 LARGE_INTEGER BytesRead; | |
| 661 LARGE_INTEGER BytesWritten; | |
| 662 LARGE_INTEGER ReadTime; | |
| 663 LARGE_INTEGER WriteTime; | |
| 664 LARGE_INTEGER IdleTime; | |
| 665 DWORD ReadCount; | |
| 666 DWORD WriteCount; | |
| 667 DWORD QueueDepth; | |
| 668 DWORD SplitCount; | |
| 669 LARGE_INTEGER QueryTime; | |
| 670 DWORD StorageDeviceNumber; | |
| 671 WCHAR StorageManagerName[8]; | |
| 672 } DISK_PERFORMANCE,*PDISK_PERFORMANCE; | |
| 673 | |
| 674 typedef struct _DISK_RECORD { | |
| 675 LARGE_INTEGER ByteOffset; | |
| 676 LARGE_INTEGER StartTime; | |
| 677 LARGE_INTEGER EndTime; | |
| 678 PVOID VirtualAddress; | |
| 679 DWORD NumberOfBytes; | |
| 680 BYTE DeviceNumber; | |
| 681 BOOLEAN ReadRequest; | |
| 682 } DISK_RECORD,*PDISK_RECORD; | |
| 683 | |
| 684 typedef struct _DISK_LOGGING { | |
| 685 BYTE Function; | |
| 686 PVOID BufferAddress; | |
| 687 DWORD BufferSize; | |
| 688 } DISK_LOGGING,*PDISK_LOGGING; | |
| 689 | |
| 690 #define DISK_LOGGING_START 0 | |
| 691 #define DISK_LOGGING_STOP 1 | |
| 692 #define DISK_LOGGING_DUMP 2 | |
| 693 #define DISK_BINNING 3 | |
| 694 | |
| 695 typedef enum _BIN_TYPES { | |
| 696 RequestSize,RequestLocation | |
| 697 } BIN_TYPES; | |
| 698 | |
| 699 typedef struct _BIN_RANGE { | |
| 700 LARGE_INTEGER StartValue; | |
| 701 LARGE_INTEGER Length; | |
| 702 } BIN_RANGE,*PBIN_RANGE; | |
| 703 | |
| 704 typedef struct _PERF_BIN { | |
| 705 DWORD NumberOfBins; | |
| 706 DWORD TypeOfBin; | |
| 707 BIN_RANGE BinsRanges[1]; | |
| 708 } PERF_BIN,*PPERF_BIN; | |
| 709 | |
| 710 typedef struct _BIN_COUNT { | |
| 711 BIN_RANGE BinRange; | |
| 712 DWORD BinCount; | |
| 713 } BIN_COUNT,*PBIN_COUNT; | |
| 714 | |
| 715 typedef struct _BIN_RESULTS { | |
| 716 DWORD NumberOfBins; | |
| 717 BIN_COUNT BinCounts[1]; | |
| 718 } BIN_RESULTS,*PBIN_RESULTS; | |
| 719 | |
| 720 #include <pshpack1.h> | |
| 721 typedef struct _GETVERSIONINPARAMS { | |
| 722 BYTE bVersion; | |
| 723 BYTE bRevision; | |
| 724 BYTE bReserved; | |
| 725 BYTE bIDEDeviceMap; | |
| 726 DWORD fCapabilities; | |
| 727 DWORD dwReserved[4]; | |
| 728 } GETVERSIONINPARAMS,*PGETVERSIONINPARAMS,*LPGETVERSIONINPARAMS; | |
| 729 #include <poppack.h> | |
| 730 | |
| 731 #define CAP_ATA_ID_CMD 1 | |
| 732 #define CAP_ATAPI_ID_CMD 2 | |
| 733 #define CAP_SMART_CMD 4 | |
| 734 | |
| 735 #include <pshpack1.h> | |
| 736 typedef struct _IDEREGS { | |
| 737 BYTE bFeaturesReg; | |
| 738 BYTE bSectorCountReg; | |
| 739 BYTE bSectorNumberReg; | |
| 740 BYTE bCylLowReg; | |
| 741 BYTE bCylHighReg; | |
| 742 BYTE bDriveHeadReg; | |
| 743 BYTE bCommandReg; | |
| 744 BYTE bReserved; | |
| 745 } IDEREGS,*PIDEREGS,*LPIDEREGS; | |
| 746 #include <poppack.h> | |
| 747 | |
| 748 #define ATAPI_ID_CMD 0xA1 | |
| 749 #define ID_CMD 0xEC | |
| 750 #define SMART_CMD 0xB0 | |
| 751 | |
| 752 #define SMART_CYL_LOW 0x4F | |
| 753 #define SMART_CYL_HI 0xC2 | |
| 754 | |
| 755 #include <pshpack1.h> | |
| 756 typedef struct _SENDCMDINPARAMS { | |
| 757 DWORD cBufferSize; | |
| 758 IDEREGS irDriveRegs; | |
| 759 BYTE bDriveNumber; | |
| 760 BYTE bReserved[3]; | |
| 761 DWORD dwReserved[4]; | |
| 762 BYTE bBuffer[1]; | |
| 763 } SENDCMDINPARAMS,*PSENDCMDINPARAMS,*LPSENDCMDINPARAMS; | |
| 764 #include <poppack.h> | |
| 765 | |
| 766 #include <pshpack1.h> | |
| 767 typedef struct _DRIVERSTATUS { | |
| 768 BYTE bDriverError; | |
| 769 BYTE bIDEError; | |
| 770 BYTE bReserved[2]; | |
| 771 DWORD dwReserved[2]; | |
| 772 } DRIVERSTATUS,*PDRIVERSTATUS,*LPDRIVERSTATUS; | |
| 773 #include <poppack.h> | |
| 774 | |
| 775 #define SMART_NO_ERROR 0 | |
| 776 #define SMART_IDE_ERROR 1 | |
| 777 #define SMART_INVALID_FLAG 2 | |
| 778 #define SMART_INVALID_COMMAND 3 | |
| 779 #define SMART_INVALID_BUFFER 4 | |
| 780 #define SMART_INVALID_DRIVE 5 | |
| 781 #define SMART_INVALID_IOCTL 6 | |
| 782 #define SMART_ERROR_NO_MEM 7 | |
| 783 #define SMART_INVALID_REGISTER 8 | |
| 784 #define SMART_NOT_SUPPORTED 9 | |
| 785 #define SMART_NO_IDE_DEVICE 10 | |
| 786 | |
| 787 #define SMART_OFFLINE_ROUTINE_OFFLINE 0 | |
| 788 #define SMART_SHORT_SELFTEST_OFFLINE 1 | |
| 789 #define SMART_EXTENDED_SELFTEST_OFFLINE 2 | |
| 790 #define SMART_ABORT_OFFLINE_SELFTEST 127 | |
| 791 #define SMART_SHORT_SELFTEST_CAPTIVE 129 | |
| 792 #define SMART_EXTENDED_SELFTEST_CAPTIVE 130 | |
| 793 | |
| 794 #include <pshpack1.h> | |
| 795 typedef struct _SENDCMDOUTPARAMS { | |
| 796 DWORD cBufferSize; | |
| 797 DRIVERSTATUS DriverStatus; | |
| 798 BYTE bBuffer[1]; | |
| 799 } SENDCMDOUTPARAMS,*PSENDCMDOUTPARAMS,*LPSENDCMDOUTPARAMS; | |
| 800 #include <poppack.h> | |
| 801 | |
| 802 #define READ_ATTRIBUTE_BUFFER_SIZE 512 | |
| 803 #define IDENTIFY_BUFFER_SIZE 512 | |
| 804 #define READ_THRESHOLD_BUFFER_SIZE 512 | |
| 805 #define SMART_LOG_SECTOR_SIZE 512 | |
| 806 | |
| 807 #define READ_ATTRIBUTES 0xD0 | |
| 808 #define READ_THRESHOLDS 0xD1 | |
| 809 #define ENABLE_DISABLE_AUTOSAVE 0xD2 | |
| 810 #define SAVE_ATTRIBUTE_VALUES 0xD3 | |
| 811 #define EXECUTE_OFFLINE_DIAGS 0xD4 | |
| 812 #define SMART_READ_LOG 0xD5 | |
| 813 #define SMART_WRITE_LOG 0xd6 | |
| 814 #define ENABLE_SMART 0xD8 | |
| 815 #define DISABLE_SMART 0xD9 | |
| 816 #define RETURN_SMART_STATUS 0xDA | |
| 817 #define ENABLE_DISABLE_AUTO_OFFLINE 0xDB | |
| 818 | |
| 819 #define IOCTL_CHANGER_BASE FILE_DEVICE_CHANGER | |
| 820 #define IOCTL_CHANGER_GET_PARAMETERS CTL_CODE(IOCTL_CHANGER_BASE,0x0000,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 821 #define IOCTL_CHANGER_GET_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0001,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 822 #define IOCTL_CHANGER_GET_PRODUCT_DATA CTL_CODE(IOCTL_CHANGER_BASE,0x0002,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 823 #define IOCTL_CHANGER_SET_ACCESS CTL_CODE(IOCTL_CHANGER_BASE,0x0004,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 824 #define IOCTL_CHANGER_GET_ELEMENT_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0005,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 825 #define IOCTL_CHANGER_INITIALIZE_ELEMENT_STATUS CTL_CODE(IOCTL_CHANGER_BASE,0x0006,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 826 #define IOCTL_CHANGER_SET_POSITION CTL_CODE(IOCTL_CHANGER_BASE,0x0007,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 827 #define IOCTL_CHANGER_EXCHANGE_MEDIUM CTL_CODE(IOCTL_CHANGER_BASE,0x0008,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 828 #define IOCTL_CHANGER_MOVE_MEDIUM CTL_CODE(IOCTL_CHANGER_BASE,0x0009,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 829 #define IOCTL_CHANGER_REINITIALIZE_TRANSPORT CTL_CODE(IOCTL_CHANGER_BASE,0x000A,METHOD_BUFFERED,FILE_READ_ACCESS) | |
| 830 #define IOCTL_CHANGER_QUERY_VOLUME_TAGS CTL_CODE(IOCTL_CHANGER_BASE,0x000B,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) | |
| 831 | |
| 832 #define MAX_VOLUME_ID_SIZE 36 | |
| 833 #define MAX_VOLUME_TEMPLATE_SIZE 40 | |
| 834 | |
| 835 #define VENDOR_ID_LENGTH 8 | |
| 836 #define PRODUCT_ID_LENGTH 16 | |
| 837 #define REVISION_LENGTH 4 | |
| 838 #define SERIAL_NUMBER_LENGTH 32 | |
| 839 | |
| 840 typedef enum _ELEMENT_TYPE { | |
| 841 AllElements,ChangerTransport,ChangerSlot,ChangerIEPort,ChangerDrive,ChangerDoor,ChangerKeypad,ChangerMaxElement | |
| 842 } ELEMENT_TYPE,*PELEMENT_TYPE; | |
| 843 | |
| 844 typedef struct _CHANGER_ELEMENT { | |
| 845 ELEMENT_TYPE ElementType; | |
| 846 DWORD ElementAddress; | |
| 847 } CHANGER_ELEMENT,*PCHANGER_ELEMENT; | |
| 848 | |
| 849 typedef struct _CHANGER_ELEMENT_LIST { | |
| 850 CHANGER_ELEMENT Element; | |
| 851 DWORD NumberOfElements; | |
| 852 } CHANGER_ELEMENT_LIST ,*PCHANGER_ELEMENT_LIST; | |
| 853 | |
| 854 #define CHANGER_BAR_CODE_SCANNER_INSTALLED 0x00000001 | |
| 855 #define CHANGER_INIT_ELEM_STAT_WITH_RANGE 0x00000002 | |
| 856 #define CHANGER_CLOSE_IEPORT 0x00000004 | |
| 857 #define CHANGER_OPEN_IEPORT 0x00000008 | |
| 858 | |
| 859 #define CHANGER_STATUS_NON_VOLATILE 0x00000010 | |
| 860 #define CHANGER_EXCHANGE_MEDIA 0x00000020 | |
| 861 #define CHANGER_CLEANER_SLOT 0x00000040 | |
| 862 #define CHANGER_LOCK_UNLOCK 0x00000080 | |
| 863 | |
| 864 #define CHANGER_CARTRIDGE_MAGAZINE 0x00000100 | |
| 865 #define CHANGER_MEDIUM_FLIP 0x00000200 | |
| 866 #define CHANGER_POSITION_TO_ELEMENT 0x00000400 | |
| 867 #define CHANGER_REPORT_IEPORT_STATE 0x00000800 | |
| 868 | |
| 869 #define CHANGER_STORAGE_DRIVE 0x00001000 | |
| 870 #define CHANGER_STORAGE_IEPORT 0x00002000 | |
| 871 #define CHANGER_STORAGE_SLOT 0x00004000 | |
| 872 #define CHANGER_STORAGE_TRANSPORT 0x00008000 | |
| 873 | |
| 874 #define CHANGER_DRIVE_CLEANING_REQUIRED 0x00010000 | |
| 875 | |
| 876 #define CHANGER_PREDISMOUNT_EJECT_REQUIRED 0x00020000 | |
| 877 | |
| 878 #define CHANGER_CLEANER_ACCESS_NOT_VALID 0x00040000 | |
| 879 #define CHANGER_PREMOUNT_EJECT_REQUIRED 0x00080000 | |
| 880 | |
| 881 #define CHANGER_VOLUME_IDENTIFICATION 0x00100000 | |
| 882 #define CHANGER_VOLUME_SEARCH 0x00200000 | |
| 883 #define CHANGER_VOLUME_ASSERT 0x00400000 | |
| 884 #define CHANGER_VOLUME_REPLACE 0x00800000 | |
| 885 #define CHANGER_VOLUME_UNDEFINE 0x01000000 | |
| 886 | |
| 887 #define CHANGER_SERIAL_NUMBER_VALID 0x04000000 | |
| 888 | |
| 889 #define CHANGER_DEVICE_REINITIALIZE_CAPABLE 0x08000000 | |
| 890 #define CHANGER_KEYPAD_ENABLE_DISABLE 0x10000000 | |
| 891 #define CHANGER_DRIVE_EMPTY_ON_DOOR_ACCESS 0x20000000 | |
| 892 | |
| 893 #define CHANGER_RESERVED_BIT 0x80000000 | |
| 894 | |
| 895 #define CHANGER_PREDISMOUNT_ALIGN_TO_SLOT 0x80000001 | |
| 896 #define CHANGER_PREDISMOUNT_ALIGN_TO_DRIVE 0x80000002 | |
| 897 #define CHANGER_CLEANER_AUTODISMOUNT 0x80000004 | |
| 898 #define CHANGER_TRUE_EXCHANGE_CAPABLE 0x80000008 | |
| 899 #define CHANGER_SLOTS_USE_TRAYS 0x80000010 | |
| 900 #define CHANGER_RTN_MEDIA_TO_ORIGINAL_ADDR 0x80000020 | |
| 901 #define CHANGER_CLEANER_OPS_NOT_SUPPORTED 0x80000040 | |
| 902 #define CHANGER_IEPORT_USER_CONTROL_OPEN 0x80000080 | |
| 903 #define CHANGER_IEPORT_USER_CONTROL_CLOSE 0x80000100 | |
| 904 #define CHANGER_MOVE_EXTENDS_IEPORT 0x80000200 | |
| 905 #define CHANGER_MOVE_RETRACTS_IEPORT 0x80000400 | |
| 906 | |
| 907 #define CHANGER_TO_TRANSPORT 0x01 | |
| 908 #define CHANGER_TO_SLOT 0x02 | |
| 909 #define CHANGER_TO_IEPORT 0x04 | |
| 910 #define CHANGER_TO_DRIVE 0x08 | |
| 911 | |
| 912 #define LOCK_UNLOCK_IEPORT 0x01 | |
| 913 #define LOCK_UNLOCK_DOOR 0x02 | |
| 914 #define LOCK_UNLOCK_KEYPAD 0x04 | |
| 915 | |
| 916 typedef struct _GET_CHANGER_PARAMETERS { | |
| 917 DWORD Size; | |
| 918 WORD NumberTransportElements; | |
| 919 WORD NumberStorageElements; | |
| 920 WORD NumberCleanerSlots; | |
| 921 WORD NumberIEElements; | |
| 922 WORD NumberDataTransferElements; | |
| 923 WORD NumberOfDoors; | |
| 924 WORD FirstSlotNumber; | |
| 925 WORD FirstDriveNumber; | |
| 926 WORD FirstTransportNumber; | |
| 927 WORD FirstIEPortNumber; | |
| 928 WORD FirstCleanerSlotAddress; | |
| 929 WORD MagazineSize; | |
| 930 DWORD DriveCleanTimeout; | |
| 931 DWORD Features0; | |
| 932 DWORD Features1; | |
| 933 BYTE MoveFromTransport; | |
| 934 BYTE MoveFromSlot; | |
| 935 BYTE MoveFromIePort; | |
| 936 BYTE MoveFromDrive; | |
| 937 BYTE ExchangeFromTransport; | |
| 938 BYTE ExchangeFromSlot; | |
| 939 BYTE ExchangeFromIePort; | |
| 940 BYTE ExchangeFromDrive; | |
| 941 BYTE LockUnlockCapabilities; | |
| 942 BYTE PositionCapabilities; | |
| 943 BYTE Reserved1[2]; | |
| 944 DWORD Reserved2[2]; | |
| 945 } GET_CHANGER_PARAMETERS,*PGET_CHANGER_PARAMETERS; | |
| 946 | |
| 947 typedef struct _CHANGER_PRODUCT_DATA { | |
| 948 BYTE VendorId[VENDOR_ID_LENGTH]; | |
| 949 BYTE ProductId[PRODUCT_ID_LENGTH]; | |
| 950 BYTE Revision[REVISION_LENGTH]; | |
| 951 BYTE SerialNumber[SERIAL_NUMBER_LENGTH]; | |
| 952 BYTE DeviceType; | |
| 953 } CHANGER_PRODUCT_DATA,*PCHANGER_PRODUCT_DATA; | |
| 954 | |
| 955 #define LOCK_ELEMENT 0 | |
| 956 #define UNLOCK_ELEMENT 1 | |
| 957 #define EXTEND_IEPORT 2 | |
| 958 #define RETRACT_IEPORT 3 | |
| 959 | |
| 960 typedef struct _CHANGER_SET_ACCESS { | |
| 961 CHANGER_ELEMENT Element; | |
| 962 DWORD Control; | |
| 963 } CHANGER_SET_ACCESS,*PCHANGER_SET_ACCESS; | |
| 964 | |
| 965 typedef struct _CHANGER_READ_ELEMENT_STATUS { | |
| 966 CHANGER_ELEMENT_LIST ElementList; | |
| 967 BOOLEAN VolumeTagInfo; | |
| 968 } CHANGER_READ_ELEMENT_STATUS,*PCHANGER_READ_ELEMENT_STATUS; | |
| 969 | |
| 970 typedef struct _CHANGER_ELEMENT_STATUS { | |
| 971 CHANGER_ELEMENT Element; | |
| 972 CHANGER_ELEMENT SrcElementAddress; | |
| 973 DWORD Flags; | |
| 974 DWORD ExceptionCode; | |
| 975 BYTE TargetId; | |
| 976 BYTE Lun; | |
| 977 WORD Reserved; | |
| 978 BYTE PrimaryVolumeID[MAX_VOLUME_ID_SIZE]; | |
| 979 BYTE AlternateVolumeID[MAX_VOLUME_ID_SIZE]; | |
| 980 } CHANGER_ELEMENT_STATUS,*PCHANGER_ELEMENT_STATUS; | |
| 981 | |
| 982 typedef struct _CHANGER_ELEMENT_STATUS_EX { | |
| 983 CHANGER_ELEMENT Element; | |
| 984 CHANGER_ELEMENT SrcElementAddress; | |
| 985 DWORD Flags; | |
| 986 DWORD ExceptionCode; | |
| 987 BYTE TargetId; | |
| 988 BYTE Lun; | |
| 989 WORD Reserved; | |
| 990 BYTE PrimaryVolumeID[MAX_VOLUME_ID_SIZE]; | |
| 991 BYTE AlternateVolumeID[MAX_VOLUME_ID_SIZE]; | |
| 992 BYTE VendorIdentification[VENDOR_ID_LENGTH]; | |
| 993 BYTE ProductIdentification[PRODUCT_ID_LENGTH]; | |
| 994 BYTE SerialNumber[SERIAL_NUMBER_LENGTH]; | |
| 995 } CHANGER_ELEMENT_STATUS_EX,*PCHANGER_ELEMENT_STATUS_EX; | |
| 996 | |
| 997 #define ELEMENT_STATUS_FULL 0x00000001 | |
| 998 #define ELEMENT_STATUS_IMPEXP 0x00000002 | |
| 999 #define ELEMENT_STATUS_EXCEPT 0x00000004 | |
| 1000 #define ELEMENT_STATUS_ACCESS 0x00000008 | |
| 1001 #define ELEMENT_STATUS_EXENAB 0x00000010 | |
| 1002 #define ELEMENT_STATUS_INENAB 0x00000020 | |
| 1003 | |
| 1004 #define ELEMENT_STATUS_PRODUCT_DATA 0x00000040 | |
| 1005 | |
| 1006 #define ELEMENT_STATUS_LUN_VALID 0x00001000 | |
| 1007 #define ELEMENT_STATUS_ID_VALID 0x00002000 | |
| 1008 #define ELEMENT_STATUS_NOT_BUS 0x00008000 | |
| 1009 #define ELEMENT_STATUS_INVERT 0x00400000 | |
| 1010 #define ELEMENT_STATUS_SVALID 0x00800000 | |
| 1011 | |
| 1012 #define ELEMENT_STATUS_PVOLTAG 0x10000000 | |
| 1013 #define ELEMENT_STATUS_AVOLTAG 0x20000000 | |
| 1014 | |
| 1015 #define ERROR_LABEL_UNREADABLE 0x00000001 | |
| 1016 #define ERROR_LABEL_QUESTIONABLE 0x00000002 | |
| 1017 #define ERROR_SLOT_NOT_PRESENT 0x00000004 | |
| 1018 #define ERROR_DRIVE_NOT_INSTALLED 0x00000008 | |
| 1019 #define ERROR_TRAY_MALFUNCTION 0x00000010 | |
| 1020 #define ERROR_INIT_STATUS_NEEDED 0x00000011 | |
| 1021 #define ERROR_UNHANDLED_ERROR 0xFFFFFFFF | |
| 1022 | |
| 1023 typedef struct _CHANGER_INITIALIZE_ELEMENT_STATUS { | |
| 1024 CHANGER_ELEMENT_LIST ElementList; | |
| 1025 BOOLEAN BarCodeScan; | |
| 1026 } CHANGER_INITIALIZE_ELEMENT_STATUS,*PCHANGER_INITIALIZE_ELEMENT_STATUS; | |
| 1027 | |
| 1028 typedef struct _CHANGER_SET_POSITION { | |
| 1029 CHANGER_ELEMENT Transport; | |
| 1030 CHANGER_ELEMENT Destination; | |
| 1031 BOOLEAN Flip; | |
| 1032 } CHANGER_SET_POSITION,*PCHANGER_SET_POSITION; | |
| 1033 | |
| 1034 typedef struct _CHANGER_EXCHANGE_MEDIUM { | |
| 1035 CHANGER_ELEMENT Transport; | |
| 1036 CHANGER_ELEMENT Source; | |
| 1037 CHANGER_ELEMENT Destination1; | |
| 1038 CHANGER_ELEMENT Destination2; | |
| 1039 BOOLEAN Flip1; | |
| 1040 BOOLEAN Flip2; | |
| 1041 } CHANGER_EXCHANGE_MEDIUM,*PCHANGER_EXCHANGE_MEDIUM; | |
| 1042 | |
| 1043 typedef struct _CHANGER_MOVE_MEDIUM { | |
| 1044 CHANGER_ELEMENT Transport; | |
| 1045 CHANGER_ELEMENT Source; | |
| 1046 CHANGER_ELEMENT Destination; | |
| 1047 BOOLEAN Flip; | |
| 1048 } CHANGER_MOVE_MEDIUM,*PCHANGER_MOVE_MEDIUM; | |
| 1049 | |
| 1050 typedef struct _CHANGER_SEND_VOLUME_TAG_INFORMATION { | |
| 1051 CHANGER_ELEMENT StartingElement; | |
| 1052 DWORD ActionCode; | |
| 1053 BYTE VolumeIDTemplate[MAX_VOLUME_TEMPLATE_SIZE]; | |
| 1054 } CHANGER_SEND_VOLUME_TAG_INFORMATION,*PCHANGER_SEND_VOLUME_TAG_INFORMATION; | |
| 1055 | |
| 1056 typedef struct _READ_ELEMENT_ADDRESS_INFO { | |
| 1057 DWORD NumberOfElements; | |
| 1058 CHANGER_ELEMENT_STATUS ElementStatus[1]; | |
| 1059 } READ_ELEMENT_ADDRESS_INFO,*PREAD_ELEMENT_ADDRESS_INFO; | |
| 1060 | |
| 1061 #define SEARCH_ALL 0x0 | |
| 1062 #define SEARCH_PRIMARY 0x1 | |
| 1063 #define SEARCH_ALTERNATE 0x2 | |
| 1064 #define SEARCH_ALL_NO_SEQ 0x4 | |
| 1065 #define SEARCH_PRI_NO_SEQ 0x5 | |
| 1066 #define SEARCH_ALT_NO_SEQ 0x6 | |
| 1067 | |
| 1068 #define ASSERT_PRIMARY 0x8 | |
| 1069 #define ASSERT_ALTERNATE 0x9 | |
| 1070 | |
| 1071 #define REPLACE_PRIMARY 0xA | |
| 1072 #define REPLACE_ALTERNATE 0xB | |
| 1073 | |
| 1074 #define UNDEFINE_PRIMARY 0xC | |
| 1075 #define UNDEFINE_ALTERNATE 0xD | |
| 1076 | |
| 1077 typedef enum _CHANGER_DEVICE_PROBLEM_TYPE { | |
| 1078 DeviceProblemNone,DeviceProblemHardware,DeviceProblemCHMError,DeviceProblemDoorOpen,DeviceProblemCalibrationError,DeviceProblemTargetFailure, | |
| 1079 DeviceProblemCHMMoveError,DeviceProblemCHMZeroError,DeviceProblemCartridgeInsertError,DeviceProblemPositionError,DeviceProblemSensorError, | |
| 1080 DeviceProblemCartridgeEjectError,DeviceProblemGripperError,DeviceProblemDriveError | |
| 1081 } CHANGER_DEVICE_PROBLEM_TYPE,*PCHANGER_DEVICE_PROBLEM_TYPE; | |
| 1082 | |
| 1083 #define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1084 | |
| 1085 #define IOCTL_SERENUM_EXPOSE_HARDWARE CTL_CODE(FILE_DEVICE_SERENUM,128,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1086 #define IOCTL_SERENUM_REMOVE_HARDWARE CTL_CODE(FILE_DEVICE_SERENUM,129,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1087 #define IOCTL_SERENUM_PORT_DESC CTL_CODE(FILE_DEVICE_SERENUM,130,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1088 #define IOCTL_SERENUM_GET_PORT_NAME CTL_CODE(FILE_DEVICE_SERENUM,131,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1089 | |
| 1090 #define SERIAL_LSRMST_ESCAPE ((BYTE)0x00) | |
| 1091 | |
| 1092 #define SERIAL_LSRMST_LSR_DATA ((BYTE)0x01) | |
| 1093 | |
| 1094 #define SERIAL_LSRMST_LSR_NODATA ((BYTE)0x02) | |
| 1095 | |
| 1096 #define SERIAL_LSRMST_MST ((BYTE)0x03) | |
| 1097 | |
| 1098 #define SERIAL_IOC_FCR_FIFO_ENABLE ((DWORD)0x00000001) | |
| 1099 #define SERIAL_IOC_FCR_RCVR_RESET ((DWORD)0x00000002) | |
| 1100 #define SERIAL_IOC_FCR_XMIT_RESET ((DWORD)0x00000004) | |
| 1101 #define SERIAL_IOC_FCR_DMA_MODE ((DWORD)0x00000008) | |
| 1102 #define SERIAL_IOC_FCR_RES1 ((DWORD)0x00000010) | |
| 1103 #define SERIAL_IOC_FCR_RES2 ((DWORD)0x00000020) | |
| 1104 #define SERIAL_IOC_FCR_RCVR_TRIGGER_LSB ((DWORD)0x00000040) | |
| 1105 #define SERIAL_IOC_FCR_RCVR_TRIGGER_MSB ((DWORD)0x00000080) | |
| 1106 | |
| 1107 #define SERIAL_IOC_MCR_DTR ((DWORD)0x00000001) | |
| 1108 #define SERIAL_IOC_MCR_RTS ((DWORD)0x00000002) | |
| 1109 #define SERIAL_IOC_MCR_OUT1 ((DWORD)0x00000004) | |
| 1110 #define SERIAL_IOC_MCR_OUT2 ((DWORD)0x00000008) | |
| 1111 #define SERIAL_IOC_MCR_LOOP ((DWORD)0x00000010) | |
| 1112 | |
| 1113 #ifndef _FILESYSTEMFSCTL_ | |
| 1114 #define _FILESYSTEMFSCTL_ | |
| 1115 | |
| 1116 #define FSCTL_REQUEST_OPLOCK_LEVEL_1 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,0,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1117 #define FSCTL_REQUEST_OPLOCK_LEVEL_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,1,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1118 #define FSCTL_REQUEST_BATCH_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,2,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1119 #define FSCTL_OPLOCK_BREAK_ACKNOWLEDGE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,3,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1120 #define FSCTL_OPBATCH_ACK_CLOSE_PENDING CTL_CODE(FILE_DEVICE_FILE_SYSTEM,4,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1121 #define FSCTL_OPLOCK_BREAK_NOTIFY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,5,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1122 #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1123 #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1124 #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1125 | |
| 1126 #define FSCTL_IS_VOLUME_MOUNTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,10,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1127 #define FSCTL_IS_PATHNAME_VALID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,11,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1128 #define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,12,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1129 | |
| 1130 #define FSCTL_QUERY_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,14,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1131 #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1132 #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA) | |
| 1133 | |
| 1134 #define FSCTL_MARK_AS_SYSTEM_HIVE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,19,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1135 #define FSCTL_OPLOCK_BREAK_ACK_NO_2 CTL_CODE(FILE_DEVICE_FILE_SYSTEM,20,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1136 #define FSCTL_INVALIDATE_VOLUMES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,21,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1137 #define FSCTL_QUERY_FAT_BPB CTL_CODE(FILE_DEVICE_FILE_SYSTEM,22,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1138 #define FSCTL_REQUEST_FILTER_OPLOCK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,23,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1139 #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,24,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1140 #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1141 #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1142 #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1143 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1144 #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1145 #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM,30,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1146 #define FSCTL_ALLOW_EXTENDED_DASD_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,32,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1147 #define FSCTL_FIND_FILES_BY_SID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,35,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1148 #define FSCTL_SET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,38,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1149 #define FSCTL_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,39,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1150 #define FSCTL_DELETE_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,40,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1151 #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,41,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1152 #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,42,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1153 #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM,43,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1154 #define FSCTL_ENUM_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,44,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1155 #define FSCTL_SECURITY_ID_CHECK CTL_CODE(FILE_DEVICE_FILE_SYSTEM,45,METHOD_NEITHER,FILE_READ_DATA) | |
| 1156 #define FSCTL_READ_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,46,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1157 #define FSCTL_SET_OBJECT_ID_EXTENDED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,47,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1158 #define FSCTL_CREATE_OR_GET_OBJECT_ID CTL_CODE(FILE_DEVICE_FILE_SYSTEM,48,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1159 #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,49,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1160 #define FSCTL_SET_ZERO_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,50,METHOD_BUFFERED,FILE_WRITE_DATA) | |
| 1161 #define FSCTL_QUERY_ALLOCATED_RANGES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,51,METHOD_NEITHER,FILE_READ_DATA) | |
| 1162 #define FSCTL_SET_ENCRYPTION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,53,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1163 #define FSCTL_ENCRYPTION_FSCTL_IO CTL_CODE(FILE_DEVICE_FILE_SYSTEM,54,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1164 #define FSCTL_WRITE_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,55,METHOD_NEITHER,FILE_SPECIAL_ACCESS) | |
| 1165 #define FSCTL_READ_RAW_ENCRYPTED CTL_CODE(FILE_DEVICE_FILE_SYSTEM,56,METHOD_NEITHER,FILE_SPECIAL_ACCESS) | |
| 1166 #define FSCTL_CREATE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,57,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1167 #define FSCTL_READ_FILE_USN_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,58,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1168 #define FSCTL_WRITE_USN_CLOSE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,59,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1169 #define FSCTL_EXTEND_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,60,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1170 #define FSCTL_QUERY_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,61,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1171 #define FSCTL_DELETE_USN_JOURNAL CTL_CODE(FILE_DEVICE_FILE_SYSTEM,62,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1172 #define FSCTL_MARK_HANDLE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,63,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1173 #define FSCTL_SIS_COPYFILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,64,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1174 #define FSCTL_SIS_LINK_FILES CTL_CODE(FILE_DEVICE_FILE_SYSTEM,65,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA) | |
| 1175 #define FSCTL_HSM_MSG CTL_CODE(FILE_DEVICE_FILE_SYSTEM,66,METHOD_BUFFERED,FILE_READ_DATA | FILE_WRITE_DATA) | |
| 1176 #define FSCTL_HSM_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,68,METHOD_NEITHER,FILE_READ_DATA | FILE_WRITE_DATA) | |
| 1177 #define FSCTL_RECALL_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,69,METHOD_NEITHER,FILE_ANY_ACCESS) | |
| 1178 #define FSCTL_READ_FROM_PLEX CTL_CODE(FILE_DEVICE_FILE_SYSTEM,71,METHOD_OUT_DIRECT,FILE_READ_DATA) | |
| 1179 #define FSCTL_FILE_PREFETCH CTL_CODE(FILE_DEVICE_FILE_SYSTEM,72,METHOD_BUFFERED,FILE_SPECIAL_ACCESS) | |
| 1180 | |
| 1181 typedef struct _PATHNAME_BUFFER { | |
| 1182 DWORD PathNameLength; | |
| 1183 WCHAR Name[1]; | |
| 1184 } PATHNAME_BUFFER,*PPATHNAME_BUFFER; | |
| 1185 | |
| 1186 typedef struct _FSCTL_QUERY_FAT_BPB_BUFFER { | |
| 1187 BYTE First0x24BytesOfBootSector[0x24]; | |
| 1188 } FSCTL_QUERY_FAT_BPB_BUFFER,*PFSCTL_QUERY_FAT_BPB_BUFFER; | |
| 1189 | |
| 1190 typedef struct { | |
| 1191 LARGE_INTEGER VolumeSerialNumber; | |
| 1192 LARGE_INTEGER NumberSectors; | |
| 1193 LARGE_INTEGER TotalClusters; | |
| 1194 LARGE_INTEGER FreeClusters; | |
| 1195 LARGE_INTEGER TotalReserved; | |
| 1196 DWORD BytesPerSector; | |
| 1197 DWORD BytesPerCluster; | |
| 1198 DWORD BytesPerFileRecordSegment; | |
| 1199 DWORD ClustersPerFileRecordSegment; | |
| 1200 LARGE_INTEGER MftValidDataLength; | |
| 1201 LARGE_INTEGER MftStartLcn; | |
| 1202 LARGE_INTEGER Mft2StartLcn; | |
| 1203 LARGE_INTEGER MftZoneStart; | |
| 1204 LARGE_INTEGER MftZoneEnd; | |
| 1205 } NTFS_VOLUME_DATA_BUFFER,*PNTFS_VOLUME_DATA_BUFFER; | |
| 1206 | |
| 1207 typedef struct { | |
| 1208 DWORD ByteCount; | |
| 1209 WORD MajorVersion; | |
| 1210 WORD MinorVersion; | |
| 1211 } NTFS_EXTENDED_VOLUME_DATA,*PNTFS_EXTENDED_VOLUME_DATA; | |
| 1212 | |
| 1213 typedef struct { | |
| 1214 LARGE_INTEGER StartingLcn; | |
| 1215 } STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER; | |
| 1216 | |
| 1217 typedef struct { | |
| 1218 LARGE_INTEGER StartingLcn; | |
| 1219 LARGE_INTEGER BitmapSize; | |
| 1220 BYTE Buffer[1]; | |
| 1221 } VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER; | |
| 1222 | |
| 1223 typedef struct { | |
| 1224 LARGE_INTEGER StartingVcn; | |
| 1225 } STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER; | |
| 1226 | |
| 1227 typedef struct RETRIEVAL_POINTERS_BUFFER { | |
| 1228 DWORD ExtentCount; | |
| 1229 LARGE_INTEGER StartingVcn; | |
| 1230 struct { | |
| 1231 LARGE_INTEGER NextVcn; | |
| 1232 LARGE_INTEGER Lcn; | |
| 1233 } Extents[1]; | |
| 1234 } RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER; | |
| 1235 | |
| 1236 typedef struct { | |
| 1237 LARGE_INTEGER FileReferenceNumber; | |
| 1238 } NTFS_FILE_RECORD_INPUT_BUFFER,*PNTFS_FILE_RECORD_INPUT_BUFFER; | |
| 1239 | |
| 1240 typedef struct { | |
| 1241 LARGE_INTEGER FileReferenceNumber; | |
| 1242 DWORD FileRecordLength; | |
| 1243 BYTE FileRecordBuffer[1]; | |
| 1244 } NTFS_FILE_RECORD_OUTPUT_BUFFER,*PNTFS_FILE_RECORD_OUTPUT_BUFFER; | |
| 1245 | |
| 1246 typedef struct { | |
| 1247 HANDLE FileHandle; | |
| 1248 LARGE_INTEGER StartingVcn; | |
| 1249 LARGE_INTEGER StartingLcn; | |
| 1250 DWORD ClusterCount; | |
| 1251 } MOVE_FILE_DATA,*PMOVE_FILE_DATA; | |
| 1252 | |
| 1253 #ifdef _WIN64 | |
| 1254 typedef struct _MOVE_FILE_DATA32 { | |
| 1255 UINT32 FileHandle; | |
| 1256 LARGE_INTEGER StartingVcn; | |
| 1257 LARGE_INTEGER StartingLcn; | |
| 1258 DWORD ClusterCount; | |
| 1259 } MOVE_FILE_DATA32,*PMOVE_FILE_DATA32; | |
| 1260 #endif | |
| 1261 | |
| 1262 typedef struct { | |
| 1263 DWORD Restart; | |
| 1264 SID Sid; | |
| 1265 } FIND_BY_SID_DATA,*PFIND_BY_SID_DATA; | |
| 1266 | |
| 1267 typedef struct { | |
| 1268 DWORD NextEntryOffset; | |
| 1269 DWORD FileIndex; | |
| 1270 DWORD FileNameLength; | |
| 1271 WCHAR FileName[1]; | |
| 1272 } FIND_BY_SID_OUTPUT,*PFIND_BY_SID_OUTPUT; | |
| 1273 | |
| 1274 typedef struct { | |
| 1275 DWORDLONG StartFileReferenceNumber; | |
| 1276 USN LowUsn; | |
| 1277 USN HighUsn; | |
| 1278 } MFT_ENUM_DATA,*PMFT_ENUM_DATA; | |
| 1279 | |
| 1280 typedef struct { | |
| 1281 DWORDLONG MaximumSize; | |
| 1282 DWORDLONG AllocationDelta; | |
| 1283 } CREATE_USN_JOURNAL_DATA,*PCREATE_USN_JOURNAL_DATA; | |
| 1284 | |
| 1285 typedef struct { | |
| 1286 USN StartUsn; | |
| 1287 DWORD ReasonMask; | |
| 1288 DWORD ReturnOnlyOnClose; | |
| 1289 DWORDLONG Timeout; | |
| 1290 DWORDLONG BytesToWaitFor; | |
| 1291 DWORDLONG UsnJournalID; | |
| 1292 } READ_USN_JOURNAL_DATA,*PREAD_USN_JOURNAL_DATA; | |
| 1293 | |
| 1294 typedef struct { | |
| 1295 DWORD RecordLength; | |
| 1296 WORD MajorVersion; | |
| 1297 WORD MinorVersion; | |
| 1298 DWORDLONG FileReferenceNumber; | |
| 1299 DWORDLONG ParentFileReferenceNumber; | |
| 1300 USN Usn; | |
| 1301 LARGE_INTEGER TimeStamp; | |
| 1302 DWORD Reason; | |
| 1303 DWORD SourceInfo; | |
| 1304 DWORD SecurityId; | |
| 1305 DWORD FileAttributes; | |
| 1306 WORD FileNameLength; | |
| 1307 WORD FileNameOffset; | |
| 1308 WCHAR FileName[1]; | |
| 1309 } USN_RECORD,*PUSN_RECORD; | |
| 1310 | |
| 1311 #define USN_PAGE_SIZE (0x1000) | |
| 1312 | |
| 1313 #define USN_REASON_DATA_OVERWRITE (0x00000001) | |
| 1314 #define USN_REASON_DATA_EXTEND (0x00000002) | |
| 1315 #define USN_REASON_DATA_TRUNCATION (0x00000004) | |
| 1316 #define USN_REASON_NAMED_DATA_OVERWRITE (0x00000010) | |
| 1317 #define USN_REASON_NAMED_DATA_EXTEND (0x00000020) | |
| 1318 #define USN_REASON_NAMED_DATA_TRUNCATION (0x00000040) | |
| 1319 #define USN_REASON_FILE_CREATE (0x00000100) | |
| 1320 #define USN_REASON_FILE_DELETE (0x00000200) | |
| 1321 #define USN_REASON_EA_CHANGE (0x00000400) | |
| 1322 #define USN_REASON_SECURITY_CHANGE (0x00000800) | |
| 1323 #define USN_REASON_RENAME_OLD_NAME (0x00001000) | |
| 1324 #define USN_REASON_RENAME_NEW_NAME (0x00002000) | |
| 1325 #define USN_REASON_INDEXABLE_CHANGE (0x00004000) | |
| 1326 #define USN_REASON_BASIC_INFO_CHANGE (0x00008000) | |
| 1327 #define USN_REASON_HARD_LINK_CHANGE (0x00010000) | |
| 1328 #define USN_REASON_COMPRESSION_CHANGE (0x00020000) | |
| 1329 #define USN_REASON_ENCRYPTION_CHANGE (0x00040000) | |
| 1330 #define USN_REASON_OBJECT_ID_CHANGE (0x00080000) | |
| 1331 #define USN_REASON_REPARSE_POINT_CHANGE (0x00100000) | |
| 1332 #define USN_REASON_STREAM_CHANGE (0x00200000) | |
| 1333 | |
| 1334 #define USN_REASON_CLOSE (0x80000000) | |
| 1335 | |
| 1336 typedef struct { | |
| 1337 DWORDLONG UsnJournalID; | |
| 1338 USN FirstUsn; | |
| 1339 USN NextUsn; | |
| 1340 USN LowestValidUsn; | |
| 1341 USN MaxUsn; | |
| 1342 DWORDLONG MaximumSize; | |
| 1343 DWORDLONG AllocationDelta; | |
| 1344 } USN_JOURNAL_DATA,*PUSN_JOURNAL_DATA; | |
| 1345 | |
| 1346 typedef struct { | |
| 1347 DWORDLONG UsnJournalID; | |
| 1348 DWORD DeleteFlags; | |
| 1349 } DELETE_USN_JOURNAL_DATA,*PDELETE_USN_JOURNAL_DATA; | |
| 1350 | |
| 1351 #define USN_DELETE_FLAG_DELETE (0x00000001) | |
| 1352 #define USN_DELETE_FLAG_NOTIFY (0x00000002) | |
| 1353 | |
| 1354 #define USN_DELETE_VALID_FLAGS (0x00000003) | |
| 1355 | |
| 1356 typedef struct { | |
| 1357 DWORD UsnSourceInfo; | |
| 1358 HANDLE VolumeHandle; | |
| 1359 DWORD HandleInfo; | |
| 1360 } MARK_HANDLE_INFO,*PMARK_HANDLE_INFO; | |
| 1361 | |
| 1362 #ifdef _WIN64 | |
| 1363 | |
| 1364 typedef struct { | |
| 1365 DWORD UsnSourceInfo; | |
| 1366 UINT32 VolumeHandle; | |
| 1367 DWORD HandleInfo; | |
| 1368 | |
| 1369 } MARK_HANDLE_INFO32,*PMARK_HANDLE_INFO32; | |
| 1370 #endif | |
| 1371 | |
| 1372 #define USN_SOURCE_DATA_MANAGEMENT (0x00000001) | |
| 1373 #define USN_SOURCE_AUXILIARY_DATA (0x00000002) | |
| 1374 #define USN_SOURCE_REPLICATION_MANAGEMENT (0x00000004) | |
| 1375 | |
| 1376 #define MARK_HANDLE_PROTECT_CLUSTERS (0x00000001) | |
| 1377 #define MARK_HANDLE_TXF_SYSTEM_LOG (0x00000004) | |
| 1378 #define MARK_HANDLE_NOT_TXF_SYSTEM_LOG (0x00000008) | |
| 1379 | |
| 1380 typedef struct { | |
| 1381 ACCESS_MASK DesiredAccess; | |
| 1382 DWORD SecurityIds[1]; | |
| 1383 } BULK_SECURITY_TEST_DATA,*PBULK_SECURITY_TEST_DATA; | |
| 1384 | |
| 1385 #define VOLUME_IS_DIRTY (0x00000001) | |
| 1386 #define VOLUME_UPGRADE_SCHEDULED (0x00000002) | |
| 1387 | |
| 1388 typedef struct _FILE_PREFETCH { | |
| 1389 DWORD Type; | |
| 1390 DWORD Count; | |
| 1391 DWORDLONG Prefetch[1]; | |
| 1392 } FILE_PREFETCH,*PFILE_PREFETCH; | |
| 1393 | |
| 1394 #define FILE_PREFETCH_TYPE_FOR_CREATE 0x1 | |
| 1395 | |
| 1396 typedef struct _FILESYSTEM_STATISTICS { | |
| 1397 WORD FileSystemType; | |
| 1398 WORD Version; | |
| 1399 DWORD SizeOfCompleteStructure; | |
| 1400 DWORD UserFileReads; | |
| 1401 DWORD UserFileReadBytes; | |
| 1402 DWORD UserDiskReads; | |
| 1403 DWORD UserFileWrites; | |
| 1404 DWORD UserFileWriteBytes; | |
| 1405 DWORD UserDiskWrites; | |
| 1406 DWORD MetaDataReads; | |
| 1407 DWORD MetaDataReadBytes; | |
| 1408 DWORD MetaDataDiskReads; | |
| 1409 DWORD MetaDataWrites; | |
| 1410 DWORD MetaDataWriteBytes; | |
| 1411 DWORD MetaDataDiskWrites; | |
| 1412 } FILESYSTEM_STATISTICS,*PFILESYSTEM_STATISTICS; | |
| 1413 | |
| 1414 #define FILESYSTEM_STATISTICS_TYPE_NTFS 1 | |
| 1415 #define FILESYSTEM_STATISTICS_TYPE_FAT 2 | |
| 1416 | |
| 1417 typedef struct _FAT_STATISTICS { | |
| 1418 DWORD CreateHits; | |
| 1419 DWORD SuccessfulCreates; | |
| 1420 DWORD FailedCreates; | |
| 1421 DWORD NonCachedReads; | |
| 1422 DWORD NonCachedReadBytes; | |
| 1423 DWORD NonCachedWrites; | |
| 1424 DWORD NonCachedWriteBytes; | |
| 1425 DWORD NonCachedDiskReads; | |
| 1426 DWORD NonCachedDiskWrites; | |
| 1427 } FAT_STATISTICS,*PFAT_STATISTICS; | |
| 1428 | |
| 1429 typedef struct _NTFS_STATISTICS { | |
| 1430 DWORD LogFileFullExceptions; | |
| 1431 DWORD OtherExceptions; | |
| 1432 DWORD MftReads; | |
| 1433 DWORD MftReadBytes; | |
| 1434 DWORD MftWrites; | |
| 1435 DWORD MftWriteBytes; | |
| 1436 struct { | |
| 1437 WORD Write; | |
| 1438 WORD Create; | |
| 1439 WORD SetInfo; | |
| 1440 WORD Flush; | |
| 1441 } MftWritesUserLevel; | |
| 1442 WORD MftWritesFlushForLogFileFull; | |
| 1443 WORD MftWritesLazyWriter; | |
| 1444 WORD MftWritesUserRequest; | |
| 1445 DWORD Mft2Writes; | |
| 1446 DWORD Mft2WriteBytes; | |
| 1447 struct { | |
| 1448 WORD Write; | |
| 1449 WORD Create; | |
| 1450 WORD SetInfo; | |
| 1451 WORD Flush; | |
| 1452 } Mft2WritesUserLevel; | |
| 1453 WORD Mft2WritesFlushForLogFileFull; | |
| 1454 WORD Mft2WritesLazyWriter; | |
| 1455 WORD Mft2WritesUserRequest; | |
| 1456 DWORD RootIndexReads; | |
| 1457 DWORD RootIndexReadBytes; | |
| 1458 DWORD RootIndexWrites; | |
| 1459 DWORD RootIndexWriteBytes; | |
| 1460 DWORD BitmapReads; | |
| 1461 DWORD BitmapReadBytes; | |
| 1462 DWORD BitmapWrites; | |
| 1463 DWORD BitmapWriteBytes; | |
| 1464 WORD BitmapWritesFlushForLogFileFull; | |
| 1465 WORD BitmapWritesLazyWriter; | |
| 1466 WORD BitmapWritesUserRequest; | |
| 1467 struct { | |
| 1468 WORD Write; | |
| 1469 WORD Create; | |
| 1470 WORD SetInfo; | |
| 1471 } BitmapWritesUserLevel; | |
| 1472 DWORD MftBitmapReads; | |
| 1473 DWORD MftBitmapReadBytes; | |
| 1474 DWORD MftBitmapWrites; | |
| 1475 DWORD MftBitmapWriteBytes; | |
| 1476 WORD MftBitmapWritesFlushForLogFileFull; | |
| 1477 WORD MftBitmapWritesLazyWriter; | |
| 1478 WORD MftBitmapWritesUserRequest; | |
| 1479 struct { | |
| 1480 WORD Write; | |
| 1481 WORD Create; | |
| 1482 WORD SetInfo; | |
| 1483 WORD Flush; | |
| 1484 } MftBitmapWritesUserLevel; | |
| 1485 DWORD UserIndexReads; | |
| 1486 DWORD UserIndexReadBytes; | |
| 1487 DWORD UserIndexWrites; | |
| 1488 DWORD UserIndexWriteBytes; | |
| 1489 DWORD LogFileReads; | |
| 1490 DWORD LogFileReadBytes; | |
| 1491 DWORD LogFileWrites; | |
| 1492 DWORD LogFileWriteBytes; | |
| 1493 struct { | |
| 1494 DWORD Calls; | |
| 1495 DWORD Clusters; | |
| 1496 DWORD Hints; | |
| 1497 DWORD RunsReturned; | |
| 1498 DWORD HintsHonored; | |
| 1499 DWORD HintsClusters; | |
| 1500 DWORD Cache; | |
| 1501 DWORD CacheClusters; | |
| 1502 DWORD CacheMiss; | |
| 1503 DWORD CacheMissClusters; | |
| 1504 } Allocate; | |
| 1505 } NTFS_STATISTICS,*PNTFS_STATISTICS; | |
| 1506 | |
| 1507 typedef struct _FILE_OBJECTID_BUFFER { | |
| 1508 BYTE ObjectId[16]; | |
| 1509 __MINGW_EXTENSION union { | |
| 1510 __MINGW_EXTENSION struct { | |
| 1511 BYTE BirthVolumeId[16]; | |
| 1512 BYTE BirthObjectId[16]; | |
| 1513 BYTE DomainId[16]; | |
| 1514 }; | |
| 1515 BYTE ExtendedInfo[48]; | |
| 1516 }; | |
| 1517 } FILE_OBJECTID_BUFFER,*PFILE_OBJECTID_BUFFER; | |
| 1518 | |
| 1519 typedef struct _FILE_SET_SPARSE_BUFFER { | |
| 1520 BOOLEAN SetSparse; | |
| 1521 } FILE_SET_SPARSE_BUFFER,*PFILE_SET_SPARSE_BUFFER; | |
| 1522 | |
| 1523 typedef struct _FILE_ZERO_DATA_INFORMATION { | |
| 1524 LARGE_INTEGER FileOffset; | |
| 1525 LARGE_INTEGER BeyondFinalZero; | |
| 1526 } FILE_ZERO_DATA_INFORMATION,*PFILE_ZERO_DATA_INFORMATION; | |
| 1527 | |
| 1528 typedef struct _FILE_ALLOCATED_RANGE_BUFFER { | |
| 1529 LARGE_INTEGER FileOffset; | |
| 1530 LARGE_INTEGER Length; | |
| 1531 } FILE_ALLOCATED_RANGE_BUFFER,*PFILE_ALLOCATED_RANGE_BUFFER; | |
| 1532 | |
| 1533 typedef struct _ENCRYPTION_BUFFER { | |
| 1534 DWORD EncryptionOperation; | |
| 1535 BYTE Private[1]; | |
| 1536 } ENCRYPTION_BUFFER,*PENCRYPTION_BUFFER; | |
| 1537 | |
| 1538 #define FILE_SET_ENCRYPTION 0x00000001 | |
| 1539 #define FILE_CLEAR_ENCRYPTION 0x00000002 | |
| 1540 #define STREAM_SET_ENCRYPTION 0x00000003 | |
| 1541 #define STREAM_CLEAR_ENCRYPTION 0x00000004 | |
| 1542 | |
| 1543 #define MAXIMUM_ENCRYPTION_VALUE 0x00000004 | |
| 1544 | |
| 1545 typedef struct _DECRYPTION_STATUS_BUFFER { | |
| 1546 BOOLEAN NoEncryptedStreams; | |
| 1547 } DECRYPTION_STATUS_BUFFER,*PDECRYPTION_STATUS_BUFFER; | |
| 1548 | |
| 1549 #define ENCRYPTION_FORMAT_DEFAULT (0x01) | |
| 1550 #define COMPRESSION_FORMAT_SPARSE (0x4000) | |
| 1551 | |
| 1552 typedef struct _REQUEST_RAW_ENCRYPTED_DATA { | |
| 1553 LONGLONG FileOffset; | |
| 1554 DWORD Length; | |
| 1555 } REQUEST_RAW_ENCRYPTED_DATA,*PREQUEST_RAW_ENCRYPTED_DATA; | |
| 1556 | |
| 1557 typedef struct _ENCRYPTED_DATA_INFO { | |
| 1558 DWORDLONG StartingFileOffset; | |
| 1559 DWORD OutputBufferOffset; | |
| 1560 DWORD BytesWithinFileSize; | |
| 1561 DWORD BytesWithinValidDataLength; | |
| 1562 WORD CompressionFormat; | |
| 1563 BYTE DataUnitShift; | |
| 1564 BYTE ChunkShift; | |
| 1565 BYTE ClusterShift; | |
| 1566 BYTE EncryptionFormat; | |
| 1567 WORD NumberOfDataBlocks; | |
| 1568 DWORD DataBlockSize[ANYSIZE_ARRAY]; | |
| 1569 } ENCRYPTED_DATA_INFO; | |
| 1570 typedef ENCRYPTED_DATA_INFO *PENCRYPTED_DATA_INFO; | |
| 1571 | |
| 1572 typedef struct _PLEX_READ_DATA_REQUEST { | |
| 1573 LARGE_INTEGER ByteOffset; | |
| 1574 DWORD ByteLength; | |
| 1575 DWORD PlexNumber; | |
| 1576 } PLEX_READ_DATA_REQUEST,*PPLEX_READ_DATA_REQUEST; | |
| 1577 | |
| 1578 typedef struct _SI_COPYFILE { | |
| 1579 DWORD SourceFileNameLength; | |
| 1580 DWORD DestinationFileNameLength; | |
| 1581 DWORD Flags; | |
| 1582 WCHAR FileNameBuffer[1]; | |
| 1583 } SI_COPYFILE,*PSI_COPYFILE; | |
| 1584 | |
| 1585 #define COPYFILE_SIS_LINK 0x0001 | |
| 1586 #define COPYFILE_SIS_REPLACE 0x0002 | |
| 1587 #define COPYFILE_SIS_FLAGS 0x0003 | |
| 1588 #endif | |
| 1589 | |
| 1590 #define IOCTL_VOLUME_BASE ((DWORD) 'V') | |
| 1591 | |
| 1592 #define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE,0,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1593 #define IOCTL_VOLUME_IS_CLUSTERED CTL_CODE(IOCTL_VOLUME_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS) | |
| 1594 | |
| 1595 typedef struct _DISK_EXTENT { | |
| 1596 DWORD DiskNumber; | |
| 1597 LARGE_INTEGER StartingOffset; | |
| 1598 LARGE_INTEGER ExtentLength; | |
| 1599 } DISK_EXTENT,*PDISK_EXTENT; | |
| 1600 | |
| 1601 typedef struct _VOLUME_DISK_EXTENTS { | |
| 1602 DWORD NumberOfDiskExtents; | |
| 1603 DISK_EXTENT Extents[1]; | |
| 1604 } VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS; | |
| 1605 #endif |
