10 #pragma warning(disable:4201) 11 #pragma warning(disable:4820) 14 #define HIST_NO_OF_BUCKETS 24 15 #define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET) 16 #define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM) 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) 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) 105 #define DEVICE_TYPE DWORD 107 #define FILE_DEVICE_BEEP 1 108 #define FILE_DEVICE_CD_ROM 2 109 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 3 110 #define FILE_DEVICE_CONTROLLER 4 111 #define FILE_DEVICE_DATALINK 5 112 #define FILE_DEVICE_DFS 6 113 #define FILE_DEVICE_DISK 7 114 #define FILE_DEVICE_DISK_FILE_SYSTEM 8 115 #define FILE_DEVICE_FILE_SYSTEM 9 116 #define FILE_DEVICE_INPORT_PORT 10 117 #define FILE_DEVICE_KEYBOARD 11 118 #define FILE_DEVICE_MAILSLOT 12 119 #define FILE_DEVICE_MIDI_IN 13 120 #define FILE_DEVICE_MIDI_OUT 14 121 #define FILE_DEVICE_MOUSE 15 122 #define FILE_DEVICE_MULTI_UNC_PROVIDER 16 123 #define FILE_DEVICE_NAMED_PIPE 17 124 #define FILE_DEVICE_NETWORK 18 125 #define FILE_DEVICE_NETWORK_BROWSER 19 126 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 20 127 #define FILE_DEVICE_NULL 21 128 #define FILE_DEVICE_PARALLEL_PORT 22 129 #define FILE_DEVICE_PHYSICAL_NETCARD 23 130 #define FILE_DEVICE_PRINTER 24 131 #define FILE_DEVICE_SCANNER 25 132 #define FILE_DEVICE_SERIAL_MOUSE_PORT 26 133 #define FILE_DEVICE_SERIAL_PORT 27 134 #define FILE_DEVICE_SCREEN 28 135 #define FILE_DEVICE_SOUND 29 136 #define FILE_DEVICE_STREAMS 30 137 #define FILE_DEVICE_TAPE 31 138 #define FILE_DEVICE_TAPE_FILE_SYSTEM 32 139 #define FILE_DEVICE_TRANSPORT 33 140 #define FILE_DEVICE_UNKNOWN 34 141 #define FILE_DEVICE_VIDEO 35 142 #define FILE_DEVICE_VIRTUAL_DISK 36 143 #define FILE_DEVICE_WAVE_IN 37 144 #define FILE_DEVICE_WAVE_OUT 38 145 #define FILE_DEVICE_8042_PORT 39 146 #define FILE_DEVICE_NETWORK_REDIRECTOR 40 147 #define FILE_DEVICE_BATTERY 41 148 #define FILE_DEVICE_BUS_EXTENDER 42 149 #define FILE_DEVICE_MODEM 43 150 #define FILE_DEVICE_VDM 44 151 #define FILE_DEVICE_MASS_STORAGE 45 152 #define FILE_DEVICE_SMB 46 153 #define FILE_DEVICE_KS 47 154 #define FILE_DEVICE_CHANGER 48 155 #define FILE_DEVICE_SMARTCARD 49 156 #define FILE_DEVICE_ACPI 50 157 #define FILE_DEVICE_DVD 51 158 #define FILE_DEVICE_FULLSCREEN_VIDEO 52 159 #define FILE_DEVICE_DFS_FILE_SYSTEM 53 160 #define FILE_DEVICE_DFS_VOLUME 54 161 #define FILE_DEVICE_SERENUM 55 162 #define FILE_DEVICE_TERMSRV 56 163 #define FILE_DEVICE_KSEC 57 164 #define FILE_DEVICE_FIPS 58 165 #define FILE_DEVICE_INFINIBAND 59 166 #define FILE_DEVICE_VMBUS 62 167 #define FILE_DEVICE_CRYPT_PROVIDER 63 168 #define FILE_DEVICE_WPD 64 169 #define FILE_DEVICE_BLUETOOTH 65 170 #define FILE_DEVICE_MT_COMPOSITE 66 171 #define FILE_DEVICE_MT_TRANSPORT 67 172 #define FILE_DEVICE_BIOMETRIC 68 173 #define FILE_DEVICE_PMI 69 174 #define FILE_DEVICE_EHSTOR 70 175 #define FILE_DEVICE_DEVAPI 71 176 #define FILE_DEVICE_GPIO 72 177 #define FILE_DEVICE_USBEX 73 178 #define FILE_DEVICE_CONSOLE 80 179 #define FILE_DEVICE_NFP 81 180 #define FILE_DEVICE_SYSENV 82 181 #define FILE_DEVICE_VIRTUAL_BLOCK 83 182 #define FILE_DEVICE_POINT_OF_SERVICE 84 183 #define FILE_DEVICE_STORAGE_REPLICATION 85 184 #define FILE_DEVICE_TRUST_ENV 86 185 #define FILE_DEVICE_UCM 87 186 #define FILE_DEVICE_UCMTCPCI 88 187 #define FILE_DEVICE_PERSISTENT_MEMORY 89 188 #define FILE_DEVICE_NVDIMM 90 189 #define FILE_DEVICE_HOLOGRAPHIC 91 190 #define FILE_DEVICE_SDFXHCI 92 191 #define FILE_DEVICE_UCMUCSI 93 194 #define FILE_ANY_ACCESS 0x00000000 195 #define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS 196 #define FILE_READ_ACCESS 0x00000001 197 #define FILE_WRITE_ACCESS 0x00000002 199 #define METHOD_BUFFERED 0 200 #define METHOD_IN_DIRECT 1 201 #define METHOD_OUT_DIRECT 2 202 #define METHOD_NEITHER 3 204 #define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) 205 #define DEVICE_TYPE_FROM_CTL_CODE(c) (((DWORD)((c)&0xffff0000))>>16) 209 #define PARTITION_ENTRY_UNUSED 0 210 #define PARTITION_FAT_12 1 211 #define PARTITION_XENIX_1 2 212 #define PARTITION_XENIX_2 3 213 #define PARTITION_FAT_16 4 214 #define PARTITION_EXTENDED 5 215 #define PARTITION_HUGE 6 216 #define PARTITION_IFS 7 217 #define PARTITION_FAT32 0x0B 218 #define PARTITION_FAT32_XINT13 0x0C 219 #define PARTITION_XINT13 0x0E 220 #define PARTITION_XINT13_EXTENDED 0x0F 221 #define PARTITION_PREP 0x41 222 #define PARTITION_LDM 0x42 223 #define PARTITION_UNIX 0x63 224 #define PARTITION_NTFT 0x80 225 #define VALID_NTFT 0xC0 227 #define PARTITION_OLD_LINUX 0x43 228 #define PARTITION_LINUX 0x83 229 #define PARTITION_FREEBSD 0xA5 230 #define PARTITION_OPENBSD 0xA6 231 #define PARTITION_NETBSD 0xA9 233 #define SERIAL_LSRMST_ESCAPE 0 234 #define SERIAL_LSRMST_LSR_DATA 1 235 #define SERIAL_LSRMST_LSR_NODATA 2 236 #define SERIAL_LSRMST_MST 3 240 DEFINE_GUID(GUID_DEVINTERFACE_COMPORT, 0x86E0D1E0L, 0x8089,
241 0x11D0, 0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73);
242 DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR, 0x4D36E978L, 0xE325,
243 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18);
246 #define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT 247 #define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR 251 #define DISK_LOGGING_START 0 252 #define DISK_LOGGING_STOP 1 253 #define DISK_LOGGING_DUMP 2 254 #define DISK_BINNING 3 325 #if (_WIN32_WINNT >= 0x0500) 335 typedef struct _CREATE_DISK_GPT {
337 DWORD MaxPartitionCount;
338 } CREATE_DISK_GPT, *PCREATE_DISK_GPT;
339 typedef struct _CREATE_DISK_MBR {
341 } CREATE_DISK_MBR, *PCREATE_DISK_MBR;
342 typedef struct _CREATE_DISK {
348 } CREATE_DISK, *PCREATE_DISK;
350 typedef enum _DETECTION_TYPE {
355 typedef struct _DISK_INT13_INFO {
361 } DISK_INT13_INFO, *PDISK_INT13_INFO;
362 typedef struct _DISK_EX_INT13_INFO {
367 DWORD ExSectorsPerTrack;
371 } DISK_EX_INT13_INFO, *PDISK_EX_INT13_INFO;
372 typedef struct _DISK_DETECTION_INFO {
373 DWORD SizeOfDetectInfo;
374 DETECTION_TYPE DetectionType;
377 DISK_INT13_INFO Int13;
378 DISK_EX_INT13_INFO ExInt13;
381 } DISK_DETECTION_INFO, *PDISK_DETECTION_INFO;
382 typedef struct _DISK_PARTITION_INFO {
383 DWORD SizeOfPartitionInfo;
394 } DISK_PARTITION_INFO, *PDISK_PARTITION_INFO;
401 #if (NTDDI_VERSION < NTDDI_WS03) 402 #define DiskGeometryGetPartition(Geometry) \ 403 ((PDISK_PARTITION_INFO)((Geometry) + 1)) 405 #define DiskGeometryGetDetect(Geometry)\ 406 ((PDISK_DETECTION_INFO)(((PBYTE)DiskGeometryGetPartition(Geometry) + \ 407 DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo))) 409 #define DiskGeometryGetPartition(Geometry) \ 410 ((PDISK_PARTITION_INFO)((Geometry)->Data)) 412 #define DiskGeometryGetDetect(Geometry)\ 413 ((PDISK_DETECTION_INFO)(((ULONG_PTR)DiskGeometryGetPartition(Geometry) + \ 414 DiskGeometryGetPartition(Geometry)->SizeOfPartitionInfo))) 435 #if (NTDDI_VERSION >= NTDDI_WIN10_RS3) 444 typedef struct _DRIVE_LAYOUT_INFORMATION_GPT {
448 DWORD MaxPartitionCount;
449 } DRIVE_LAYOUT_INFORMATION_GPT, *PDRIVE_LAYOUT_INFORMATION_GPT;
450 typedef struct _DRIVE_LAYOUT_INFORMATION_MBR {
452 #if (NTDDI_VERSION >= NTDDI_WIN10_RS1) 455 } DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR;
456 typedef struct _DRIVE_LAYOUT_INFORMATION_EX {
457 DWORD PartitionStyle;
458 DWORD PartitionCount;
460 DRIVE_LAYOUT_INFORMATION_MBR Mbr;
461 DRIVE_LAYOUT_INFORMATION_GPT Gpt;
464 } DRIVE_LAYOUT_INFORMATION_EX, *PDRIVE_LAYOUT_INFORMATION_EX;
469 typedef struct _SET_PARTITION_INFORMATION_EX {
472 SET_PARTITION_INFORMATION_MBR Mbr;
473 SET_PARTITION_INFORMATION_GPT Gpt;
475 } SET_PARTITION_INFORMATION_EX, *PSET_PARTITION_INFORMATION_EX;
477 #endif // (_WIN32_WINNT >= 0x0500) 665 #define IsRecognizedPartition(t)\ 666 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ 667 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ 668 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_IFS))||\ 669 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_HUGE))||\ 670 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32))||\ 671 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32_XINT13))||\ 672 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13))||\ 673 ((t)==PARTITION_FAT_12)||\ 674 ((t)==PARTITION_FAT_16)||\ 675 ((t)==PARTITION_IFS)||\ 676 ((t)==PARTITION_HUGE)||\ 677 ((t)==PARTITION_FAT32)||\ 678 ((t)==PARTITION_FAT32_XINT13)||\ 679 ((t)==PARTITION_XINT13)||\ 680 ((t)==PARTITION_LINUX)||\ 681 ((t)==PARTITION_OLD_LINUX)||\ 682 ((t)==PARTITION_FREEBSD)||\ 683 ((t)==PARTITION_OPENBSD)||\ 684 ((t)==PARTITION_NETBSD)) 686 #define IsRecognizedPartition(t)\ 687 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ 688 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ 689 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_IFS))||\ 690 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_HUGE))||\ 691 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32))||\ 692 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32_XINT13))||\ 693 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13))||\ 694 ((t)==PARTITION_FAT_12)||\ 695 ((t)==PARTITION_FAT_16)||\ 696 ((t)==PARTITION_IFS)||\ 697 ((t)==PARTITION_HUGE)||\ 698 ((t)==PARTITION_FAT32)||\ 699 ((t)==PARTITION_FAT32_XINT13)||\ 700 ((t)==PARTITION_XINT13)) 702 #define IsContainerPartition(t)\ 703 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_EXTENDED))||\ 704 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13_EXTENDED))||\ 705 ((t)==PARTITION_EXTENDED)||\ 706 ((t)==PARTITION_XINT13_EXTENDED)) 708 #ifndef _FILESYSTEMFSCTL_ 709 #define _FILESYSTEMFSCTL_ 711 #define FSCTL_MARK_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 12, METHOD_BUFFERED, FILE_ANY_ACCESS) 712 #define FSCTL_FILESYSTEM_GET_STATISTICS CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 24, METHOD_BUFFERED, FILE_ANY_ACCESS) 713 #if (_WIN32_WINNT >= _WIN32_WINNT_NT4) 714 #define FSCTL_IS_VOLUME_DIRTY CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 30, METHOD_BUFFERED, FILE_ANY_ACCESS) 717 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) 718 #define FSCTL_GET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 159, METHOD_BUFFERED, FILE_ANY_ACCESS) 719 #define FSCTL_SET_INTEGRITY_INFORMATION CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 160, METHOD_BUFFERED, FILE_READ_DATA | FILE_WRITE_DATA) 722 #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE) 723 #define FSCTL_DUPLICATE_EXTENTS_TO_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 209, METHOD_BUFFERED, FILE_WRITE_DATA) 726 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN2K) 727 #define VOLUME_IS_DIRTY (0x00000001) 728 #define VOLUME_UPGRADE_SCHEDULED (0x00000002) 729 #define VOLUME_SESSION_OPEN (0x00000004) 750 #define FILESYSTEM_STATISTICS_TYPE_NTFS 1 751 #define FILESYSTEM_STATISTICS_TYPE_FAT 2 752 #define FILESYSTEM_STATISTICS_TYPE_EXFAT 3 856 #if (_WIN32_WINNT >= _WIN32_WINNT_WIN8) 872 #if (_WIN32_WINNT >= _WIN32_WINNT_WINBLUE)
struct _DUPLICATE_EXTENTS_DATA DUPLICATE_EXTENTS_DATA
struct _BIN_RESULTS * PBIN_RESULTS
LARGE_INTEGER ExtentLength
USHORT MftBitmapWritesUserRequest
DWORD BytesPerFileRecordSegment
struct STARTING_VCN_INPUT_BUFFER * PSTARTING_VCN_INPUT_BUFFER
struct _NTFS_STATISTICS::@3293 Mft2WritesUserLevel
USHORT BitmapWritesLazyWriter
struct _BIN_RANGE BIN_RANGE
struct _DISK_EXTENT * PDISK_EXTENT
struct _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER * PFSCTL_SET_INTEGRITY_INFORMATION_BUFFER
struct RETRIEVAL_POINTERS_BUFFER::@3291 Extents[1]
ULONG LogFileFullExceptions
struct _DRIVE_LAYOUT_INFORMATION * PDRIVE_LAYOUT_INFORMATION
struct _PARTITION_INFORMATION_GPT * PPARTITION_INFORMATION_GPT
struct _FAT_STATISTICS * PFAT_STATISTICS
struct _BIN_RESULTS BIN_RESULTS
USHORT MftWritesUserRequest
struct _NTFS_STATISTICS::@3296 Allocate
struct _FSCTL_SET_INTEGRITY_INFORMATION_BUFFER FSCTL_SET_INTEGRITY_INFORMATION_BUFFER
enum _MEDIA_TYPE MEDIA_TYPE
struct _VOLUME_DISK_EXTENTS VOLUME_DISK_EXTENTS
struct _SET_PARTITION_INFORMATION * PSET_PARTITION_INFORMATION
struct _SET_PARTITION_INFORMATION SET_PARTITION_INFORMATION
struct VOLUME_BITMAP_BUFFER * PVOLUME_BITMAP_BUFFER
enum _MEDIA_TYPE MEDIA_TYPE
struct _DISK_GEOMETRY_EX * PDISK_GEOMETRY_EX
struct _PREVENT_MEDIA_REMOVAL PREVENT_MEDIA_REMOVAL
struct _FILESYSTEM_STATISTICS * PFILESYSTEM_STATISTICS
ULONG MftBitmapWriteBytes
LARGE_INTEGER MftStartLcn
struct _BIN_COUNT * PBIN_COUNT
struct _DISK_CACHE_INFORMATION DISK_CACHE_INFORMATION
USHORT MftWritesLazyWriter
struct _VERIFY_INFORMATION * PVERIFY_INFORMATION
USHORT MftBitmapWritesFlushForLogFileFull
struct _PARTITION_INFORMATION PARTITION_INFORMATION
ULONG NonCachedDiskWrites
struct _NTFS_STATISTICS NTFS_STATISTICS
struct _DISK_GEOMETRY DISK_GEOMETRY
ULONG NonCachedWriteBytes
struct STARTING_LCN_INPUT_BUFFER * PSTARTING_LCN_INPUT_BUFFER
struct _PARTITION_INFORMATION_GPT PARTITION_INFORMATION_GPT
struct _VOLUME_DISK_EXTENTS * PVOLUME_DISK_EXTENTS
struct _REASSIGN_BLOCKS REASSIGN_BLOCKS
struct _PARTITION_INFORMATION_MBR * PPARTITION_INFORMATION_MBR
struct _PARTITION_INFORMATION_EX PARTITION_INFORMATION_EX
_In_ ULONG _In_ ULONG SectorsPerTrack
LARGE_INTEGER AverageWrite
struct _PERF_BIN PERF_BIN
USHORT Mft2WritesLazyWriter
struct _FORMAT_EX_PARAMETERS FORMAT_EX_PARAMETERS
struct _GET_LENGTH_INFORMATION GET_LENGTH_INFORMATION
LARGE_INTEGER Mft2StartLcn
LARGE_INTEGER StartingVcn
struct RETRIEVAL_POINTERS_BUFFER * PRETRIEVAL_POINTERS_BUFFER
LARGE_INTEGER StartingVcn
LARGE_INTEGER TotalClusters
struct _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER FSCTL_GET_INTEGRITY_INFORMATION_BUFFER
enum _MEDIA_TYPE * PMEDIA_TYPE
struct _REASSIGN_BLOCKS * PREASSIGN_BLOCKS
struct _NTFS_STATISTICS::@3295 MftBitmapWritesUserLevel
ULONG RootIndexWriteBytes
struct _HISTOGRAM_BUCKET HISTOGRAM_BUCKET
struct _FAT_STATISTICS FAT_STATISTICS
ULONG NonCachedDiskWrites
struct _DISK_GEOMETRY_EX DISK_GEOMETRY_EX
LARGE_INTEGER VolumeSerialNumber
LARGE_INTEGER MftZoneStart
struct _VERIFY_INFORMATION VERIFY_INFORMATION
USHORT BitmapWritesFlushForLogFileFull
enum _BIN_TYPES BIN_TYPES
struct NTFS_FILE_RECORD_OUTPUT_BUFFER * PNTFS_FILE_RECORD_OUTPUT_BUFFER
LARGE_INTEGER TotalReserved
struct _DUPLICATE_EXTENTS_DATA * PDUPLICATE_EXTENTS_DATA
LARGE_INTEGER SourceFileOffset
struct NTFS_EXTENDED_VOLUME_DATA * PNTFS_EXTENDED_VOLUME_DATA
PHISTOGRAM_BUCKET Histogram
USHORT MftBitmapWritesLazyWriter
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
struct _BIN_RANGE * PBIN_RANGE
struct _PERF_BIN * PPERF_BIN
struct _FORMAT_PARAMETERS * PFORMAT_PARAMETERS
struct _HISTOGRAM_BUCKET * PHISTOGRAM_BUCKET
struct _BIN_COUNT BIN_COUNT
USHORT Mft2WritesUserRequest
struct NTFS_FILE_RECORD_INPUT_BUFFER * PNTFS_FILE_RECORD_INPUT_BUFFER
struct _NTFS_STATISTICS * PNTFS_STATISTICS
struct _EXFAT_STATISTICS * PEXFAT_STATISTICS
UCHAR CheckSum(LPSTR p, ULONG Len)
struct _DISK_LOGGING DISK_LOGGING
struct _DISK_CACHE_INFORMATION * PDISK_CACHE_INFORMATION
struct _DISK_LOGGING * PDISK_LOGGING
struct _FORMAT_EX_PARAMETERS * PFORMAT_EX_PARAMETERS
struct _FORMAT_PARAMETERS FORMAT_PARAMETERS
struct _PARTITION_INFORMATION * PPARTITION_INFORMATION
struct _DISK_HISTOGRAM * PDISK_HISTOGRAM
USHORT MftWritesFlushForLogFileFull
struct _FILESYSTEM_STATISTICS FILESYSTEM_STATISTICS
struct _DISK_PERFORMANCE * PDISK_PERFORMANCE
struct _DISK_GROW_PARTITION * PDISK_GROW_PARTITION
LARGE_INTEGER BytesToGrow
struct _DISK_PERFORMANCE DISK_PERFORMANCE
enum _PARTITION_STYLE PARTITION_STYLE
struct _DISK_RECORD * PDISK_RECORD
LARGE_INTEGER AverageRead
struct _EXFAT_STATISTICS EXFAT_STATISTICS
LARGE_INTEGER FileReferenceNumber
#define _ANONYMOUS_STRUCT
struct _NTFS_STATISTICS::@3294 BitmapWritesUserLevel
DWORD NumberOfDiskExtents
LARGE_INTEGER StartingOffset
struct RETRIEVAL_POINTERS_BUFFER RETRIEVAL_POINTERS_BUFFER
USHORT BitmapWritesUserRequest
struct _DISK_HISTOGRAM DISK_HISTOGRAM
LARGE_INTEGER TargetFileOffset
struct MOVE_FILE_DATA * PMOVE_FILE_DATA
struct NTFS_VOLUME_DATA_BUFFER * PNTFS_VOLUME_DATA_BUFFER
ULONG NonCachedWriteBytes
LARGE_INTEGER NumberSectors
USHORT Mft2WritesFlushForLogFileFull
struct _PREVENT_MEDIA_REMOVAL * PPREVENT_MEDIA_REMOVAL
LARGE_INTEGER MftValidDataLength
DWORD ClustersPerFileRecordSegment
struct _DISK_EXTENT DISK_EXTENT
LARGE_INTEGER FreeClusters
ULONG UserIndexWriteBytes
struct DiskQuotaUserInformation * PDISKQUOTA_USER_INFORMATION
static const WCHAR Signature[]
struct DiskQuotaUserInformation DISKQUOTA_USER_INFORMATION
struct _DISK_RECORD DISK_RECORD
DISK_CACHE_RETENTION_PRIORITY
struct _NTFS_STATISTICS::@3292 MftWritesUserLevel
struct _PARTITION_INFORMATION_MBR PARTITION_INFORMATION_MBR
struct _DISK_GEOMETRY * PDISK_GEOMETRY
struct _FSCTL_GET_INTEGRITY_INFORMATION_BUFFER * PFSCTL_GET_INTEGRITY_INFORMATION_BUFFER
LARGE_INTEGER StartingLcn
struct _PARTITION_INFORMATION_EX * PPARTITION_INFORMATION_EX
struct _DISK_GROW_PARTITION DISK_GROW_PARTITION
struct _DRIVE_LAYOUT_INFORMATION DRIVE_LAYOUT_INFORMATION
LARGE_INTEGER StartingLcn
ULONG SizeOfCompleteStructure