1 #ifndef _WINIOCTL_ 2 #define _WINIOCTL_ 3 4 #ifdef __cplusplus 5 extern "C" { 6 #endif 7 8 #ifdef _MSC_VER 9 #pragma warning(push) 10 #pragma warning(disable:4201) 11 #pragma warning(disable:4820) 12 #endif 13 14 #define HIST_NO_OF_BUCKETS 24 15 #define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET) 16 #define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM) 17 18 #ifndef _NTDDSTOR_H_ 19 #define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE 20 #define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) 21 #define IOCTL_STORAGE_CHECK_VERIFY2 CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS) 22 #define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) 23 #define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) 24 #define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) 25 #define IOCTL_STORAGE_LOAD_MEDIA2 CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS) 26 #define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) 27 #define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) 28 #define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) 29 #define IOCTL_STORAGE_EJECTION_CONTROL CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS) 30 #define IOCTL_STORAGE_MCN_CONTROL CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS) 31 #define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) 32 #define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS) 33 #define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS) 34 #define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS) 35 #define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS) 36 #define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS) 37 #endif 38 39 #define IOCTL_DISK_BASE FILE_DEVICE_DISK 40 #define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0,METHOD_BUFFERED, FILE_ANY_ACCESS) 41 #define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,1,METHOD_BUFFERED,FILE_READ_ACCESS) 42 #define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,2,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 43 #define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,3,METHOD_BUFFERED,FILE_READ_ACCESS) 44 #define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,4,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 45 #define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE,5,METHOD_BUFFERED,FILE_ANY_ACCESS) 46 #define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE,6,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 47 #define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE,7,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 48 #define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE,8,METHOD_BUFFERED,FILE_ANY_ACCESS) 49 #define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE,9,METHOD_BUFFERED,FILE_ANY_ACCESS) 50 #define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,10,METHOD_BUFFERED,FILE_ANY_ACCESS) 51 #define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE,11,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 52 #define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS) 53 #define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,13,METHOD_BUFFERED,FILE_ANY_ACCESS) 54 #define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS) 55 #define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS) 56 #define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS) 57 #define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x12,METHOD_BUFFERED,FILE_ANY_ACCESS) 58 #define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x13,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 59 #define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x14,METHOD_BUFFERED,FILE_ANY_ACCESS) 60 #define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x15,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 61 #define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x16,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 62 #define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x17,METHOD_BUFFERED,FILE_READ_ACCESS) 63 #define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x18,METHOD_BUFFERED,FILE_ANY_ACCESS) 64 #define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x28,METHOD_BUFFERED,FILE_ANY_ACCESS) 65 #define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x34,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 66 #define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x35,METHOD_BUFFERED,FILE_READ_ACCESS) 67 #define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x36,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 68 #define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x40,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 69 #define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x50,METHOD_BUFFERED,FILE_ANY_ACCESS) 70 #define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x200,METHOD_BUFFERED,FILE_READ_ACCESS) 71 #define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS) 72 #define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS) 73 #define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x203,METHOD_BUFFERED,FILE_READ_ACCESS) 74 #define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE,0x204,METHOD_BUFFERED,FILE_READ_ACCESS) 75 #define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x205,METHOD_BUFFERED,FILE_READ_ACCESS) 76 #define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE,0x206,METHOD_BUFFERED,FILE_READ_ACCESS) 77 #define IOCTL_DISK_REMOVE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x207,METHOD_BUFFERED,FILE_READ_ACCESS) 78 #define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE,0x300,METHOD_BUFFERED,FILE_ANY_ACCESS) 79 #define IOCTL_DISK_UPDATE_DRIVE_SIZE CTL_CODE(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 80 #define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS) 81 #define IOCTL_VOLUME_BASE ((DWORD)'V') 82 #define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) 83 #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS) 84 #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS) 85 #define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) 86 #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS) 87 #define FSCTL_MOUNT_DBLS_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13,METHOD_BUFFERED,FILE_ANY_ACCESS) 88 #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS) 89 #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA) 90 #define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA) 91 #define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA) 92 #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS) 93 #define FSCTL_GET_NTFS_FILE_RECORD CTL_CODE(FILE_DEVICE_FILE_SYSTEM,26,METHOD_BUFFERED,FILE_ANY_ACCESS) 94 #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS) 95 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS) 96 #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS) 97 #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) 98 #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS) 99 #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS) 100 #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) 101 102 #ifndef _DEVIOCTL_ 103 #define _DEVIOCTL_ 104 105 #define DEVICE_TYPE DWORD 106 #define FILE_DEVICE_BEEP 1 107 #define FILE_DEVICE_CD_ROM 2 108 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 3 109 #define FILE_DEVICE_CONTROLLER 4 110 #define FILE_DEVICE_DATALINK 5 111 #define FILE_DEVICE_DFS 6 112 #define FILE_DEVICE_DISK 7 113 #define FILE_DEVICE_DISK_FILE_SYSTEM 8 114 #define FILE_DEVICE_FILE_SYSTEM 9 115 #define FILE_DEVICE_INPORT_PORT 10 116 #define FILE_DEVICE_KEYBOARD 11 117 #define FILE_DEVICE_MAILSLOT 12 118 #define FILE_DEVICE_MIDI_IN 13 119 #define FILE_DEVICE_MIDI_OUT 14 120 #define FILE_DEVICE_MOUSE 15 121 #define FILE_DEVICE_MULTI_UNC_PROVIDER 16 122 #define FILE_DEVICE_NAMED_PIPE 17 123 #define FILE_DEVICE_NETWORK 18 124 #define FILE_DEVICE_NETWORK_BROWSER 19 125 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 20 126 #define FILE_DEVICE_NULL 21 127 #define FILE_DEVICE_PARALLEL_PORT 22 128 #define FILE_DEVICE_PHYSICAL_NETCARD 23 129 #define FILE_DEVICE_PRINTER 24 130 #define FILE_DEVICE_SCANNER 25 131 #define FILE_DEVICE_SERIAL_MOUSE_PORT 26 132 #define FILE_DEVICE_SERIAL_PORT 27 133 #define FILE_DEVICE_SCREEN 28 134 #define FILE_DEVICE_SOUND 29 135 #define FILE_DEVICE_STREAMS 30 136 #define FILE_DEVICE_TAPE 31 137 #define FILE_DEVICE_TAPE_FILE_SYSTEM 32 138 #define FILE_DEVICE_TRANSPORT 33 139 #define FILE_DEVICE_UNKNOWN 34 140 #define FILE_DEVICE_VIDEO 35 141 #define FILE_DEVICE_VIRTUAL_DISK 36 142 #define FILE_DEVICE_WAVE_IN 37 143 #define FILE_DEVICE_WAVE_OUT 38 144 #define FILE_DEVICE_8042_PORT 39 145 #define FILE_DEVICE_NETWORK_REDIRECTOR 40 146 #define FILE_DEVICE_BATTERY 41 147 #define FILE_DEVICE_BUS_EXTENDER 42 148 #define FILE_DEVICE_MODEM 43 149 #define FILE_DEVICE_VDM 44 150 #define FILE_DEVICE_MASS_STORAGE 45 151 #define FILE_DEVICE_SMB 46 152 #define FILE_DEVICE_KS 47 153 #define FILE_DEVICE_CHANGER 48 154 #define FILE_DEVICE_SMARTCARD 49 155 #define FILE_DEVICE_ACPI 50 156 #define FILE_DEVICE_DVD 51 157 #define FILE_DEVICE_FULLSCREEN_VIDEO 52 158 #define FILE_DEVICE_DFS_FILE_SYSTEM 53 159 #define FILE_DEVICE_DFS_VOLUME 54 160 #define FILE_DEVICE_SERENUM 55 161 #define FILE_DEVICE_TERMSRV 56 162 #define FILE_DEVICE_KSEC 57 163 164 /* Also in ddk/winddk.h */ 165 #define FILE_ANY_ACCESS 0x00000000 166 #define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS 167 #define FILE_READ_ACCESS 0x00000001 168 #define FILE_WRITE_ACCESS 0x00000002 169 170 #define METHOD_BUFFERED 0 171 #define METHOD_IN_DIRECT 1 172 #define METHOD_OUT_DIRECT 2 173 #define METHOD_NEITHER 3 174 175 #define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) 176 #define DEVICE_TYPE_FROM_CTL_CODE(c) (((DWORD)((c)&0xffff0000))>>16) 177 178 #endif /* _DEVIOCTL_ */ 179 180 #define PARTITION_ENTRY_UNUSED 0 181 #define PARTITION_FAT_12 1 182 #define PARTITION_XENIX_1 2 183 #define PARTITION_XENIX_2 3 184 #define PARTITION_FAT_16 4 185 #define PARTITION_EXTENDED 5 186 #define PARTITION_HUGE 6 187 #define PARTITION_IFS 7 188 #define PARTITION_FAT32 0x0B 189 #define PARTITION_FAT32_XINT13 0x0C 190 #define PARTITION_XINT13 0x0E 191 #define PARTITION_XINT13_EXTENDED 0x0F 192 #define PARTITION_PREP 0x41 193 #define PARTITION_LDM 0x42 194 #define PARTITION_UNIX 0x63 195 #define PARTITION_NTFT 0x80 196 #define VALID_NTFT 0xC0 197 #ifdef __REACTOS__ 198 #define PARTITION_OLD_LINUX 0x43 199 #define PARTITION_LINUX 0x83 200 #define PARTITION_FREEBSD 0xA5 201 #define PARTITION_OPENBSD 0xA6 202 #define PARTITION_NETBSD 0xA9 203 #endif 204 #define SERIAL_LSRMST_ESCAPE 0 205 #define SERIAL_LSRMST_LSR_DATA 1 206 #define SERIAL_LSRMST_LSR_NODATA 2 207 #define SERIAL_LSRMST_MST 3 208 /* Device GUIDs */ 209 #ifdef DEFINE_GUID 210 211 DEFINE_GUID(GUID_DEVINTERFACE_COMPORT, 0x86E0D1E0L, 0x8089, 212 0x11D0, 0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73); 213 DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR, 0x4D36E978L, 0xE325, 214 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); 215 216 /* obsolete GUID names */ 217 #define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT 218 #define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR 219 220 #endif /* DEFINE_GUID */ 221 222 #define DISK_LOGGING_START 0 223 #define DISK_LOGGING_STOP 1 224 #define DISK_LOGGING_DUMP 2 225 #define DISK_BINNING 3 226 typedef WORD BAD_TRACK_NUMBER,*PBAD_TRACK_NUMBER; 227 typedef enum _BIN_TYPES {RequestSize,RequestLocation} BIN_TYPES; 228 typedef struct _BIN_RANGE { 229 LARGE_INTEGER StartValue; 230 LARGE_INTEGER Length; 231 } BIN_RANGE,*PBIN_RANGE; 232 typedef struct _BIN_COUNT { 233 BIN_RANGE BinRange; 234 DWORD BinCount; 235 } BIN_COUNT,*PBIN_COUNT; 236 typedef struct _BIN_RESULTS { 237 DWORD NumberOfBins; 238 BIN_COUNT BinCounts[1]; 239 } BIN_RESULTS,*PBIN_RESULTS; 240 typedef enum _PARTITION_STYLE { 241 PARTITION_STYLE_MBR, 242 PARTITION_STYLE_GPT, 243 PARTITION_STYLE_RAW 244 } PARTITION_STYLE; 245 typedef struct { 246 GUID DiskId; 247 DWORD MaxPartitionCount; 248 } CREATE_DISK_GPT,*PCREATE_DISK_GPT; 249 typedef struct { 250 DWORD Signature; 251 } CREATE_DISK_MBR,*PCREATE_DISK_MBR; 252 typedef struct { 253 PARTITION_STYLE PartitionStyle; 254 _ANONYMOUS_UNION union { 255 CREATE_DISK_MBR Mbr; 256 CREATE_DISK_GPT Gpt; 257 }; 258 } CREATE_DISK,*PCREATE_DISK; 259 typedef enum { 260 EqualPriority, 261 KeepPrefetchedData, 262 KeepReadData 263 } DISK_CACHE_RETENTION_PRIORITY; 264 typedef struct _DISK_CACHE_INFORMATION { 265 BOOLEAN ParametersSavable; 266 BOOLEAN ReadCacheEnabled; 267 BOOLEAN WriteCacheEnabled; 268 DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; 269 DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; 270 WORD DisablePrefetchTransferLength; 271 BOOLEAN PrefetchScalar; 272 _ANONYMOUS_UNION union { 273 struct { 274 WORD Minimum; 275 WORD Maximum; 276 WORD MaximumBlocks; 277 } ScalarPrefetch; 278 struct { 279 WORD Minimum; 280 WORD Maximum; 281 } BlockPrefetch; 282 }; 283 } DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION; 284 typedef enum _DETECTION_TYPE { 285 DetectNone, 286 DetectInt13, 287 DetectExInt13 288 } DETECTION_TYPE; 289 typedef struct _DISK_INT13_INFO { 290 WORD DriveSelect; 291 DWORD MaxCylinders; 292 WORD SectorsPerTrack; 293 WORD MaxHeads; 294 WORD NumberDrives; 295 } DISK_INT13_INFO,*PDISK_INT13_INFO; 296 typedef struct _DISK_EX_INT13_INFO { 297 WORD ExBufferSize; 298 WORD ExFlags; 299 DWORD ExCylinders; 300 DWORD ExHeads; 301 DWORD ExSectorsPerTrack; 302 DWORD64 ExSectorsPerDrive; 303 WORD ExSectorSize; 304 WORD ExReserved; 305 } DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO; 306 typedef struct _DISK_DETECTION_INFO { 307 DWORD SizeOfDetectInfo; 308 DETECTION_TYPE DetectionType; 309 _ANONYMOUS_UNION union { 310 _ANONYMOUS_STRUCT struct { 311 DISK_INT13_INFO Int13; 312 DISK_EX_INT13_INFO ExInt13; 313 }; 314 }; 315 } DISK_DETECTION_INFO,*PDISK_DETECTION_INFO; 316 typedef enum _MEDIA_TYPE { 317 Unknown, 318 F5_1Pt2_512, 319 F3_1Pt44_512, 320 F3_2Pt88_512, 321 F3_20Pt8_512, 322 F3_720_512, 323 F5_360_512, 324 F5_320_512, 325 F5_320_1024, 326 F5_180_512, 327 F5_160_512, 328 RemovableMedia, 329 FixedMedia, 330 F3_120M_512, 331 F3_640_512, 332 F5_640_512, 333 F5_720_512, 334 F3_1Pt2_512, 335 F3_1Pt23_1024, 336 F5_1Pt23_1024, 337 F3_128Mb_512, 338 F3_230Mb_512, 339 F8_256_128, 340 F3_200Mb_512, 341 F3_240M_512, 342 F3_32M_512 343 } MEDIA_TYPE,*PMEDIA_TYPE; 344 typedef struct _DISK_GEOMETRY { 345 LARGE_INTEGER Cylinders; 346 MEDIA_TYPE MediaType; 347 DWORD TracksPerCylinder; 348 DWORD SectorsPerTrack; 349 DWORD BytesPerSector; 350 } DISK_GEOMETRY,*PDISK_GEOMETRY; 351 typedef struct _DISK_GEOMETRY_EX { 352 DISK_GEOMETRY Geometry; 353 LARGE_INTEGER DiskSize; 354 BYTE Data[1]; 355 } DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX; 356 typedef struct _DISK_GROW_PARTITION { 357 DWORD PartitionNumber; 358 LARGE_INTEGER BytesToGrow; 359 } DISK_GROW_PARTITION, *PDISK_GROW_PARTITION; 360 typedef struct _DISK_PARTITION_INFO { 361 DWORD SizeOfPartitionInfo; 362 PARTITION_STYLE PartitionStyle; 363 _ANONYMOUS_UNION union { 364 struct { 365 DWORD Signature; 366 } Mbr; 367 struct { 368 GUID DiskId; 369 } Gpt; 370 }; 371 } DISK_PARTITION_INFO,*PDISK_PARTITION_INFO; 372 typedef struct _DISK_PERFORMANCE { 373 LARGE_INTEGER BytesRead; 374 LARGE_INTEGER BytesWritten; 375 LARGE_INTEGER ReadTime; 376 LARGE_INTEGER WriteTime; 377 LARGE_INTEGER IdleTime; 378 DWORD ReadCount; 379 DWORD WriteCount; 380 DWORD QueueDepth; 381 DWORD SplitCount; 382 LARGE_INTEGER QueryTime; 383 DWORD StorageDeviceNumber; 384 WCHAR StorageManagerName[8]; 385 } DISK_PERFORMANCE, *PDISK_PERFORMANCE; 386 typedef struct _DISK_RECORD { 387 LARGE_INTEGER ByteOffset; 388 LARGE_INTEGER StartTime; 389 LARGE_INTEGER EndTime; 390 PVOID VirtualAddress; 391 DWORD NumberOfBytes; 392 BYTE DeviceNumber; 393 BOOLEAN ReadRequest; 394 } DISK_RECORD,*PDISK_RECORD; 395 typedef struct _DISK_LOGGING { 396 BYTE Function; 397 PVOID BufferAddress; 398 DWORD BufferSize; 399 } DISK_LOGGING,*PDISK_LOGGING; 400 typedef struct DiskQuotaUserInformation { 401 LONGLONG QuotaUsed; 402 LONGLONG QuotaThreshold; 403 LONGLONG QuotaLimit; 404 } DISKQUOTA_USER_INFORMATION,*PDISKQUOTA_USER_INFORMATION; 405 typedef struct _FORMAT_PARAMETERS { 406 MEDIA_TYPE MediaType; 407 DWORD StartCylinderNumber; 408 DWORD EndCylinderNumber; 409 DWORD StartHeadNumber; 410 DWORD EndHeadNumber; 411 } FORMAT_PARAMETERS,*PFORMAT_PARAMETERS; 412 typedef struct _FORMAT_EX_PARAMETERS { 413 MEDIA_TYPE MediaType; 414 DWORD StartCylinderNumber; 415 DWORD EndCylinderNumber; 416 DWORD StartHeadNumber; 417 DWORD EndHeadNumber; 418 WORD FormatGapLength; 419 WORD SectorsPerTrack; 420 WORD SectorNumber[1]; 421 } FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS; 422 typedef struct { 423 LARGE_INTEGER Length; 424 } GET_LENGTH_INFORMATION; 425 typedef struct _HISTOGRAM_BUCKET { 426 DWORD Reads; 427 DWORD Writes; 428 } HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET; 429 typedef struct _DISK_HISTOGRAM { 430 LARGE_INTEGER DiskSize; 431 LARGE_INTEGER Start; 432 LARGE_INTEGER End; 433 LARGE_INTEGER Average; 434 LARGE_INTEGER AverageRead; 435 LARGE_INTEGER AverageWrite; 436 DWORD Granularity; 437 DWORD Size; 438 DWORD ReadCount; 439 DWORD WriteCount; 440 PHISTOGRAM_BUCKET Histogram; 441 } DISK_HISTOGRAM,*PDISK_HISTOGRAM; 442 typedef struct _DISK_EXTENT { 443 DWORD DiskNumber; 444 LARGE_INTEGER StartingOffset; 445 LARGE_INTEGER ExtentLength; 446 } DISK_EXTENT,*PDISK_EXTENT; 447 typedef struct _VOLUME_DISK_EXTENTS { 448 DWORD NumberOfDiskExtents; 449 DISK_EXTENT Extents[1]; 450 } VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS; 451 typedef struct _PARTITION_INFORMATION { 452 LARGE_INTEGER StartingOffset; 453 LARGE_INTEGER PartitionLength; 454 DWORD HiddenSectors; 455 DWORD PartitionNumber; 456 BYTE PartitionType; 457 BOOLEAN BootIndicator; 458 BOOLEAN RecognizedPartition; 459 BOOLEAN RewritePartition; 460 } PARTITION_INFORMATION,*PPARTITION_INFORMATION; 461 typedef struct _DRIVE_LAYOUT_INFORMATION { 462 DWORD PartitionCount; 463 DWORD Signature; 464 PARTITION_INFORMATION PartitionEntry[1]; 465 } DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION; 466 typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { 467 GUID DiskId; 468 LARGE_INTEGER StartingUsableOffset; 469 LARGE_INTEGER UsableLength; 470 ULONG MaxPartitionCount; 471 } DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT; 472 typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { 473 ULONG Signature; 474 } DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR; 475 typedef struct _PARTITION_INFORMATION_MBR { 476 BYTE PartitionType; 477 BOOLEAN BootIndicator; 478 BOOLEAN RecognizedPartition; 479 DWORD HiddenSectors; 480 } PARTITION_INFORMATION_MBR; 481 typedef struct _PARTITION_INFORMATION_GPT { 482 GUID PartitionType; 483 GUID PartitionId; 484 DWORD64 Attributes; 485 WCHAR Name[36]; 486 } PARTITION_INFORMATION_GPT; 487 typedef struct _PARTITION_INFORMATION_EX { 488 PARTITION_STYLE PartitionStyle; 489 LARGE_INTEGER StartingOffset; 490 LARGE_INTEGER PartitionLength; 491 DWORD PartitionNumber; 492 BOOLEAN RewritePartition; 493 _ANONYMOUS_UNION union { 494 PARTITION_INFORMATION_MBR Mbr; 495 PARTITION_INFORMATION_GPT Gpt; 496 }; 497 } PARTITION_INFORMATION_EX; 498 typedef struct _DRIVE_LAYOUT_INFORMATION_EX { 499 DWORD PartitionStyle; 500 DWORD PartitionCount; 501 _ANONYMOUS_UNION union { 502 DRIVE_LAYOUT_INFORMATION_MBR Mbr; 503 DRIVE_LAYOUT_INFORMATION_GPT Gpt; 504 }; 505 PARTITION_INFORMATION_EX PartitionEntry[1]; 506 } DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX; 507 typedef struct { 508 HANDLE FileHandle; 509 LARGE_INTEGER StartingVcn; 510 LARGE_INTEGER StartingLcn; 511 DWORD ClusterCount; 512 } MOVE_FILE_DATA,*PMOVE_FILE_DATA; 513 typedef struct _PERF_BIN { 514 DWORD NumberOfBins; 515 DWORD TypeOfBin; 516 BIN_RANGE BinsRanges[1]; 517 } PERF_BIN,*PPERF_BIN; 518 519 #ifndef _NTDDSTOR_H_ 520 typedef struct _PREVENT_MEDIA_REMOVAL { 521 BOOLEAN PreventMediaRemoval; 522 } PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL; 523 #endif 524 525 typedef struct RETRIEVAL_POINTERS_BUFFER { 526 DWORD ExtentCount; 527 LARGE_INTEGER StartingVcn; 528 struct { 529 LARGE_INTEGER NextVcn; 530 LARGE_INTEGER Lcn; 531 } Extents[1]; 532 } RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER; 533 typedef struct _REASSIGN_BLOCKS { 534 WORD Reserved; 535 WORD Count; 536 DWORD BlockNumber[1]; 537 } REASSIGN_BLOCKS,*PREASSIGN_BLOCKS; 538 typedef struct _SET_PARTITION_INFORMATION { 539 BYTE PartitionType; 540 } SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION; 541 typedef struct { 542 LARGE_INTEGER StartingLcn; 543 } STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER; 544 typedef struct { 545 LARGE_INTEGER StartingVcn; 546 } STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER; 547 typedef struct _VERIFY_INFORMATION { 548 LARGE_INTEGER StartingOffset; 549 DWORD Length; 550 } VERIFY_INFORMATION,*PVERIFY_INFORMATION; 551 typedef struct { 552 LARGE_INTEGER StartingLcn; 553 LARGE_INTEGER BitmapSize; 554 BYTE Buffer[1]; 555 } VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER; 556 typedef struct { 557 LARGE_INTEGER VolumeSerialNumber; 558 LARGE_INTEGER NumberSectors; 559 LARGE_INTEGER TotalClusters; 560 LARGE_INTEGER FreeClusters; 561 LARGE_INTEGER TotalReserved; 562 DWORD BytesPerSector; 563 DWORD BytesPerCluster; 564 DWORD BytesPerFileRecordSegment; 565 DWORD ClustersPerFileRecordSegment; 566 LARGE_INTEGER MftValidDataLength; 567 LARGE_INTEGER MftStartLcn; 568 LARGE_INTEGER Mft2StartLcn; 569 LARGE_INTEGER MftZoneStart; 570 LARGE_INTEGER MftZoneEnd; 571 } NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER; 572 typedef struct { 573 ULONG ByteCount; 574 USHORT MajorVersion; 575 USHORT MinorVersion; 576 } NTFS_EXTENDED_VOLUME_DATA, *PNTFS_EXTENDED_VOLUME_DATA; 577 typedef struct { 578 LARGE_INTEGER FileReferenceNumber; 579 } NTFS_FILE_RECORD_INPUT_BUFFER, *PNTFS_FILE_RECORD_INPUT_BUFFER; 580 typedef struct { 581 LARGE_INTEGER FileReferenceNumber; 582 ULONG FileRecordLength; 583 UCHAR FileRecordBuffer[1]; 584 } NTFS_FILE_RECORD_OUTPUT_BUFFER, *PNTFS_FILE_RECORD_OUTPUT_BUFFER; 585 586 #ifdef __REACTOS__ 587 #define IsRecognizedPartition(t)\ 588 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ 589 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ 590 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_IFS))||\ 591 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_HUGE))||\ 592 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32))||\ 593 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32_XINT13))||\ 594 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13))||\ 595 ((t)==PARTITION_FAT_12)||\ 596 ((t)==PARTITION_FAT_16)||\ 597 ((t)==PARTITION_IFS)||\ 598 ((t)==PARTITION_HUGE)||\ 599 ((t)==PARTITION_FAT32)||\ 600 ((t)==PARTITION_FAT32_XINT13)||\ 601 ((t)==PARTITION_XINT13)||\ 602 ((t)==PARTITION_LINUX)||\ 603 ((t)==PARTITION_OLD_LINUX)||\ 604 ((t)==PARTITION_FREEBSD)||\ 605 ((t)==PARTITION_OPENBSD)||\ 606 ((t)==PARTITION_NETBSD)) 607 #else 608 #define IsRecognizedPartition(t)\ 609 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ 610 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ 611 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_IFS))||\ 612 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_HUGE))||\ 613 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32))||\ 614 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32_XINT13))||\ 615 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13))||\ 616 ((t)==PARTITION_FAT_12)||\ 617 ((t)==PARTITION_FAT_16)||\ 618 ((t)==PARTITION_IFS)||\ 619 ((t)==PARTITION_HUGE)||\ 620 ((t)==PARTITION_FAT32)||\ 621 ((t)==PARTITION_FAT32_XINT13)||\ 622 ((t)==PARTITION_XINT13)) 623 #endif 624 #define IsContainerPartition(t)\ 625 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_EXTENDED))||\ 626 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13_EXTENDED))||\ 627 ((t)==PARTITION_EXTENDED)||\ 628 ((t)==PARTITION_XINT13_EXTENDED)) 629 630 #ifndef _FILESYSTEMFSCTL_ 631 #define _FILESYSTEMFSCTL_ 632 633 #define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) 634 #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) 635 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4) 636 #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) 637 #endif 638 639 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) 640 #define FSCTL_GET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS) 641 #define FSCTL_SET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) 642 #endif 643 644 #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) 645 #define FSCTL_DUPLICATE_EXTENTS_TO_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 209, METHOD_BUFFERED, FILE_WRITE_DATA) 646 #endif 647 648 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K) 649 #define VOLUME_IS_DIRTY (0x00000001) 650 #define VOLUME_UPGRADE_SCHEDULED (0x00000002) 651 #define VOLUME_SESSION_OPEN (0x00000004) 652 #endif 653 654 typedef struct _FILESYSTEM_STATISTICS { 655 USHORT FileSystemType; 656 USHORT Version; 657 ULONG SizeOfCompleteStructure; 658 ULONG UserFileReads; 659 ULONG UserFileReadBytes; 660 ULONG UserDiskReads; 661 ULONG UserFileWrites; 662 ULONG UserFileWriteBytes; 663 ULONG UserDiskWrites; 664 ULONG MetaDataReads; 665 ULONG MetaDataReadBytes; 666 ULONG MetaDataDiskReads; 667 ULONG MetaDataWrites; 668 ULONG MetaDataWriteBytes; 669 ULONG MetaDataDiskWrites; 670 } FILESYSTEM_STATISTICS, *PFILESYSTEM_STATISTICS; 671 672 #define FILESYSTEM_STATISTICS_TYPE_NTFS 1 673 #define FILESYSTEM_STATISTICS_TYPE_FAT 2 674 #define FILESYSTEM_STATISTICS_TYPE_EXFAT 3 675 676 typedef struct _FAT_STATISTICS { 677 ULONG CreateHits; 678 ULONG SuccessfulCreates; 679 ULONG FailedCreates; 680 ULONG NonCachedReads; 681 ULONG NonCachedReadBytes; 682 ULONG NonCachedWrites; 683 ULONG NonCachedWriteBytes; 684 ULONG NonCachedDiskReads; 685 ULONG NonCachedDiskWrites; 686 } FAT_STATISTICS, *PFAT_STATISTICS; 687 688 typedef struct _EXFAT_STATISTICS { 689 ULONG CreateHits; 690 ULONG SuccessfulCreates; 691 ULONG FailedCreates; 692 ULONG NonCachedReads; 693 ULONG NonCachedReadBytes; 694 ULONG NonCachedWrites; 695 ULONG NonCachedWriteBytes; 696 ULONG NonCachedDiskReads; 697 ULONG NonCachedDiskWrites; 698 } EXFAT_STATISTICS, *PEXFAT_STATISTICS; 699 700 typedef struct _NTFS_STATISTICS { 701 ULONG LogFileFullExceptions; 702 ULONG OtherExceptions; 703 ULONG MftReads; 704 ULONG MftReadBytes; 705 ULONG MftWrites; 706 ULONG MftWriteBytes; 707 struct { 708 USHORT Write; 709 USHORT Create; 710 USHORT SetInfo; 711 USHORT Flush; 712 } MftWritesUserLevel; 713 USHORT MftWritesFlushForLogFileFull; 714 USHORT MftWritesLazyWriter; 715 USHORT MftWritesUserRequest; 716 ULONG Mft2Writes; 717 ULONG Mft2WriteBytes; 718 struct { 719 USHORT Write; 720 USHORT Create; 721 USHORT SetInfo; 722 USHORT Flush; 723 } Mft2WritesUserLevel; 724 USHORT Mft2WritesFlushForLogFileFull; 725 USHORT Mft2WritesLazyWriter; 726 USHORT Mft2WritesUserRequest; 727 ULONG RootIndexReads; 728 ULONG RootIndexReadBytes; 729 ULONG RootIndexWrites; 730 ULONG RootIndexWriteBytes; 731 ULONG BitmapReads; 732 ULONG BitmapReadBytes; 733 ULONG BitmapWrites; 734 ULONG BitmapWriteBytes; 735 USHORT BitmapWritesFlushForLogFileFull; 736 USHORT BitmapWritesLazyWriter; 737 USHORT BitmapWritesUserRequest; 738 struct { 739 USHORT Write; 740 USHORT Create; 741 USHORT SetInfo; 742 } BitmapWritesUserLevel; 743 ULONG MftBitmapReads; 744 ULONG MftBitmapReadBytes; 745 ULONG MftBitmapWrites; 746 ULONG MftBitmapWriteBytes; 747 USHORT MftBitmapWritesFlushForLogFileFull; 748 USHORT MftBitmapWritesLazyWriter; 749 USHORT MftBitmapWritesUserRequest; 750 struct { 751 USHORT Write; 752 USHORT Create; 753 USHORT SetInfo; 754 USHORT Flush; 755 } MftBitmapWritesUserLevel; 756 ULONG UserIndexReads; 757 ULONG UserIndexReadBytes; 758 ULONG UserIndexWrites; 759 ULONG UserIndexWriteBytes; 760 ULONG LogFileReads; 761 ULONG LogFileReadBytes; 762 ULONG LogFileWrites; 763 ULONG LogFileWriteBytes; 764 struct { 765 ULONG Calls; 766 ULONG Clusters; 767 ULONG Hints; 768 ULONG RunsReturned; 769 ULONG HintsHonored; 770 ULONG HintsClusters; 771 ULONG Cache; 772 ULONG CacheClusters; 773 ULONG CacheMiss; 774 ULONG CacheMissClusters; 775 } Allocate; 776 } NTFS_STATISTICS, *PNTFS_STATISTICS; 777 778 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) 779 typedef struct _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER { 780 WORD ChecksumAlgorithm; 781 WORD Reserved; 782 DWORD Flags; 783 DWORD ChecksumChunkSizeInBytes; 784 DWORD ClusterSizeInBytes; 785 } FSCTL_GET_INTEGRITY_INFORMATION_BUFFER, *PFSCTL_GET_INTEGRITY_INFORMATION_BUFFER; 786 787 typedef struct _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER { 788 WORD ChecksumAlgorithm; 789 WORD Reserved; 790 DWORD Flags; 791 } FSCTL_SET_INTEGRITY_INFORMATION_BUFFER, *PFSCTL_SET_INTEGRITY_INFORMATION_BUFFER; 792 #endif 793 794 #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) 795 typedef struct _DUPLICATE_EXTENTS_DATA { 796 HANDLE FileHandle; 797 LARGE_INTEGER SourceFileOffset; 798 LARGE_INTEGER TargetFileOffset; 799 LARGE_INTEGER ByteCount; 800 } DUPLICATE_EXTENTS_DATA, *PDUPLICATE_EXTENTS_DATA; 801 802 #endif 803 804 #endif 805 806 #ifdef _MSC_VER 807 #pragma warning(pop) 808 #endif 809 810 #ifdef __cplusplus 811 } 812 #endif 813 #endif /* _WINIOCTL_ */ 814