Hex Artifact Content

Not logged in

Artifact 0061631e5533d8ae90141b471e82f737d91e4bfe:


0000: 2f 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  /***************
0010: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0020: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0030: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
0040: 2a 2a 2a 2a 2a 2a 2a 2a 5c 0a 2a 20 20 20 20 20  ********\.*     
0050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0060: 20 20 20 20 20 20 20 20 20 20 77 69 6e 69 6f 63            winioc
0070: 74 6c 2e 64 20 20 20 20 20 20 20 20 20 20 20 20  tl.d            
0080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0090: 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20    *.*           
00a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00d0: 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20              *.* 
00e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
00f0: 20 20 20 20 20 20 57 69 6e 64 6f 77 73 20 41 50        Windows AP
0100: 49 20 68 65 61 64 65 72 20 6d 6f 64 75 6c 65 20  I header module 
0110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0120: 20 20 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20        *.*       
0130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0170: 2a 0a 2a 20 20 20 20 20 20 20 20 20 20 20 20 20  *.*             
0180: 20 20 20 20 54 72 61 6e 73 6c 61 74 65 64 20 66      Translated f
0190: 72 6f 6d 20 4d 69 6e 47 57 20 57 69 6e 64 6f 77  rom MinGW Window
01a0: 73 20 68 65 61 64 65 72 73 20 20 20 20 20 20 20  s headers       
01b0: 20 20 20 20 20 20 20 20 20 20 2a 0a 2a 20 20 20            *.*   
01c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
01d0: 20 20 20 20 20 20 20 20 62 79 20 53 74 65 77 61          by Stewa
01e0: 72 74 20 47 6f 72 64 6f 6e 20 20 20 20 20 20 20  rt Gordon       
01f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0200: 20 20 20 20 2a 0a 2a 20 20 20 20 20 20 20 20 20      *.*         
0210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2a 0a                *.
0250: 2a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  *               
0260: 20 20 20 20 20 20 20 20 50 6c 61 63 65 64 20 69          Placed i
0270: 6e 74 6f 20 70 75 62 6c 69 63 20 64 6f 6d 61 69  nto public domai
0280: 6e 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  n               
0290: 20 20 20 20 20 20 20 20 2a 0a 5c 2a 2a 2a 2a 2a          *.\*****
02a0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02b0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02c0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02d0: 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a 2a  ****************
02e0: 2a 2a 2f 0a 6d 6f 64 75 6c 65 20 77 69 6e 33 32  **/.module win32
02f0: 2e 77 69 6e 69 6f 63 74 6c 3b 0a 0a 2f 2f 20 46  .winioctl;..// F
0300: 49 58 4d 45 3a 20 63 68 65 63 6b 20 74 79 70 65  IXME: check type
0310: 73 20 6f 66 20 73 6f 6d 65 20 63 6f 6e 73 74 61  s of some consta
0320: 6e 74 73 0a 0a 70 72 69 76 61 74 65 20 69 6d 70  nts..private imp
0330: 6f 72 74 20 77 69 6e 33 32 2e 62 61 73 65 74 79  ort win32.basety
0340: 70 73 2c 20 77 69 6e 33 32 2e 77 69 6e 64 65 66  ps, win32.windef
0350: 3b 0a 0a 63 6f 6e 73 74 20 73 69 7a 65 5f 74 0a  ;..const size_t.
0360: 09 48 49 53 54 5f 4e 4f 5f 4f 46 5f 42 55 43 4b  .HIST_NO_OF_BUCK
0370: 45 54 53 20 3d 20 32 34 2c 0a 09 48 49 53 54 4f  ETS = 24,..HISTO
0380: 47 52 41 4d 5f 42 55 43 4b 45 54 5f 53 49 5a 45  GRAM_BUCKET_SIZE
0390: 20 3d 20 48 49 53 54 4f 47 52 41 4d 5f 42 55 43   = HISTOGRAM_BUC
03a0: 4b 45 54 2e 73 69 7a 65 6f 66 2c 0a 09 44 49 53  KET.sizeof,..DIS
03b0: 4b 5f 48 49 53 54 4f 47 52 41 4d 5f 53 49 5a 45  K_HISTOGRAM_SIZE
03c0: 20 3d 20 44 49 53 4b 5f 48 49 53 54 4f 47 52 41   = DISK_HISTOGRA
03d0: 4d 2e 73 69 7a 65 6f 66 3b 0a 0a 61 6c 69 61 73  M.sizeof;..alias
03e0: 20 44 57 4f 52 44 20 44 45 56 49 43 45 5f 54 59   DWORD DEVICE_TY
03f0: 50 45 3b 0a 0a 65 6e 75 6d 20 3a 20 44 45 56 49  PE;..enum : DEVI
0400: 43 45 5f 54 59 50 45 20 7b 0a 09 46 49 4c 45 5f  CE_TYPE {..FILE_
0410: 44 45 56 49 43 45 5f 42 45 45 50 20 20 20 20 20  DEVICE_BEEP     
0420: 20 20 20 20 20 20 20 20 20 20 3d 20 31 2c 0a 09            = 1,..
0430: 46 49 4c 45 5f 44 45 56 49 43 45 5f 43 44 5f 52  FILE_DEVICE_CD_R
0440: 4f 4d 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45  OM,..FILE_DEVICE
0450: 5f 43 44 5f 52 4f 4d 5f 46 49 4c 45 5f 53 59 53  _CD_ROM_FILE_SYS
0460: 54 45 4d 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43  TEM,..FILE_DEVIC
0470: 45 5f 43 4f 4e 54 52 4f 4c 4c 45 52 2c 0a 09 46  E_CONTROLLER,..F
0480: 49 4c 45 5f 44 45 56 49 43 45 5f 44 41 54 41 4c  ILE_DEVICE_DATAL
0490: 49 4e 4b 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43  INK,..FILE_DEVIC
04a0: 45 5f 44 46 53 2c 0a 09 46 49 4c 45 5f 44 45 56  E_DFS,..FILE_DEV
04b0: 49 43 45 5f 44 49 53 4b 2c 0a 09 46 49 4c 45 5f  ICE_DISK,..FILE_
04c0: 44 45 56 49 43 45 5f 44 49 53 4b 5f 46 49 4c 45  DEVICE_DISK_FILE
04d0: 5f 53 59 53 54 45 4d 2c 0a 09 46 49 4c 45 5f 44  _SYSTEM,..FILE_D
04e0: 45 56 49 43 45 5f 46 49 4c 45 5f 53 59 53 54 45  EVICE_FILE_SYSTE
04f0: 4d 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45 5f  M,..FILE_DEVICE_
0500: 49 4e 50 4f 52 54 5f 50 4f 52 54 2c 0a 09 46 49  INPORT_PORT,..FI
0510: 4c 45 5f 44 45 56 49 43 45 5f 4b 45 59 42 4f 41  LE_DEVICE_KEYBOA
0520: 52 44 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45  RD,..FILE_DEVICE
0530: 5f 4d 41 49 4c 53 4c 4f 54 2c 0a 09 46 49 4c 45  _MAILSLOT,..FILE
0540: 5f 44 45 56 49 43 45 5f 4d 49 44 49 5f 49 4e 2c  _DEVICE_MIDI_IN,
0550: 0a 09 46 49 4c 45 5f 44 45 56 49 43 45 5f 4d 49  ..FILE_DEVICE_MI
0560: 44 49 5f 4f 55 54 2c 0a 09 46 49 4c 45 5f 44 45  DI_OUT,..FILE_DE
0570: 56 49 43 45 5f 4d 4f 55 53 45 2c 0a 09 46 49 4c  VICE_MOUSE,..FIL
0580: 45 5f 44 45 56 49 43 45 5f 4d 55 4c 54 49 5f 55  E_DEVICE_MULTI_U
0590: 4e 43 5f 50 52 4f 56 49 44 45 52 2c 0a 09 46 49  NC_PROVIDER,..FI
05a0: 4c 45 5f 44 45 56 49 43 45 5f 4e 41 4d 45 44 5f  LE_DEVICE_NAMED_
05b0: 50 49 50 45 2c 0a 09 46 49 4c 45 5f 44 45 56 49  PIPE,..FILE_DEVI
05c0: 43 45 5f 4e 45 54 57 4f 52 4b 2c 0a 09 46 49 4c  CE_NETWORK,..FIL
05d0: 45 5f 44 45 56 49 43 45 5f 4e 45 54 57 4f 52 4b  E_DEVICE_NETWORK
05e0: 5f 42 52 4f 57 53 45 52 2c 0a 09 46 49 4c 45 5f  _BROWSER,..FILE_
05f0: 44 45 56 49 43 45 5f 4e 45 54 57 4f 52 4b 5f 46  DEVICE_NETWORK_F
0600: 49 4c 45 5f 53 59 53 54 45 4d 2c 0a 09 46 49 4c  ILE_SYSTEM,..FIL
0610: 45 5f 44 45 56 49 43 45 5f 4e 55 4c 4c 2c 0a 09  E_DEVICE_NULL,..
0620: 46 49 4c 45 5f 44 45 56 49 43 45 5f 50 41 52 41  FILE_DEVICE_PARA
0630: 4c 4c 45 4c 5f 50 4f 52 54 2c 0a 09 46 49 4c 45  LLEL_PORT,..FILE
0640: 5f 44 45 56 49 43 45 5f 50 48 59 53 49 43 41 4c  _DEVICE_PHYSICAL
0650: 5f 4e 45 54 43 41 52 44 2c 0a 09 46 49 4c 45 5f  _NETCARD,..FILE_
0660: 44 45 56 49 43 45 5f 50 52 49 4e 54 45 52 2c 0a  DEVICE_PRINTER,.
0670: 09 46 49 4c 45 5f 44 45 56 49 43 45 5f 53 43 41  .FILE_DEVICE_SCA
0680: 4e 4e 45 52 2c 0a 09 46 49 4c 45 5f 44 45 56 49  NNER,..FILE_DEVI
0690: 43 45 5f 53 45 52 49 41 4c 5f 4d 4f 55 53 45 5f  CE_SERIAL_MOUSE_
06a0: 50 4f 52 54 2c 0a 09 46 49 4c 45 5f 44 45 56 49  PORT,..FILE_DEVI
06b0: 43 45 5f 53 45 52 49 41 4c 5f 50 4f 52 54 2c 0a  CE_SERIAL_PORT,.
06c0: 09 46 49 4c 45 5f 44 45 56 49 43 45 5f 53 43 52  .FILE_DEVICE_SCR
06d0: 45 45 4e 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43  EEN,..FILE_DEVIC
06e0: 45 5f 53 4f 55 4e 44 2c 0a 09 46 49 4c 45 5f 44  E_SOUND,..FILE_D
06f0: 45 56 49 43 45 5f 53 54 52 45 41 4d 53 2c 0a 09  EVICE_STREAMS,..
0700: 46 49 4c 45 5f 44 45 56 49 43 45 5f 54 41 50 45  FILE_DEVICE_TAPE
0710: 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45 5f 54  ,..FILE_DEVICE_T
0720: 41 50 45 5f 46 49 4c 45 5f 53 59 53 54 45 4d 2c  APE_FILE_SYSTEM,
0730: 0a 09 46 49 4c 45 5f 44 45 56 49 43 45 5f 54 52  ..FILE_DEVICE_TR
0740: 41 4e 53 50 4f 52 54 2c 0a 09 46 49 4c 45 5f 44  ANSPORT,..FILE_D
0750: 45 56 49 43 45 5f 55 4e 4b 4e 4f 57 4e 2c 0a 09  EVICE_UNKNOWN,..
0760: 46 49 4c 45 5f 44 45 56 49 43 45 5f 56 49 44 45  FILE_DEVICE_VIDE
0770: 4f 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45 5f  O,..FILE_DEVICE_
0780: 56 49 52 54 55 41 4c 5f 44 49 53 4b 2c 0a 09 46  VIRTUAL_DISK,..F
0790: 49 4c 45 5f 44 45 56 49 43 45 5f 57 41 56 45 5f  ILE_DEVICE_WAVE_
07a0: 49 4e 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45  IN,..FILE_DEVICE
07b0: 5f 57 41 56 45 5f 4f 55 54 2c 0a 09 46 49 4c 45  _WAVE_OUT,..FILE
07c0: 5f 44 45 56 49 43 45 5f 38 30 34 32 5f 50 4f 52  _DEVICE_8042_POR
07d0: 54 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45 5f  T,..FILE_DEVICE_
07e0: 4e 45 54 57 4f 52 4b 5f 52 45 44 49 52 45 43 54  NETWORK_REDIRECT
07f0: 4f 52 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45  OR,..FILE_DEVICE
0800: 5f 42 41 54 54 45 52 59 2c 0a 09 46 49 4c 45 5f  _BATTERY,..FILE_
0810: 44 45 56 49 43 45 5f 42 55 53 5f 45 58 54 45 4e  DEVICE_BUS_EXTEN
0820: 44 45 52 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43  DER,..FILE_DEVIC
0830: 45 5f 4d 4f 44 45 4d 2c 0a 09 46 49 4c 45 5f 44  E_MODEM,..FILE_D
0840: 45 56 49 43 45 5f 56 44 4d 2c 0a 09 46 49 4c 45  EVICE_VDM,..FILE
0850: 5f 44 45 56 49 43 45 5f 4d 41 53 53 5f 53 54 4f  _DEVICE_MASS_STO
0860: 52 41 47 45 2c 0a 09 46 49 4c 45 5f 44 45 56 49  RAGE,..FILE_DEVI
0870: 43 45 5f 53 4d 42 2c 0a 09 46 49 4c 45 5f 44 45  CE_SMB,..FILE_DE
0880: 56 49 43 45 5f 4b 53 2c 0a 09 46 49 4c 45 5f 44  VICE_KS,..FILE_D
0890: 45 56 49 43 45 5f 43 48 41 4e 47 45 52 2c 0a 09  EVICE_CHANGER,..
08a0: 46 49 4c 45 5f 44 45 56 49 43 45 5f 53 4d 41 52  FILE_DEVICE_SMAR
08b0: 54 43 41 52 44 2c 0a 09 46 49 4c 45 5f 44 45 56  TCARD,..FILE_DEV
08c0: 49 43 45 5f 41 43 50 49 2c 0a 09 46 49 4c 45 5f  ICE_ACPI,..FILE_
08d0: 44 45 56 49 43 45 5f 44 56 44 2c 0a 09 46 49 4c  DEVICE_DVD,..FIL
08e0: 45 5f 44 45 56 49 43 45 5f 46 55 4c 4c 53 43 52  E_DEVICE_FULLSCR
08f0: 45 45 4e 5f 56 49 44 45 4f 2c 0a 09 46 49 4c 45  EEN_VIDEO,..FILE
0900: 5f 44 45 56 49 43 45 5f 44 46 53 5f 46 49 4c 45  _DEVICE_DFS_FILE
0910: 5f 53 59 53 54 45 4d 2c 0a 09 46 49 4c 45 5f 44  _SYSTEM,..FILE_D
0920: 45 56 49 43 45 5f 44 46 53 5f 56 4f 4c 55 4d 45  EVICE_DFS_VOLUME
0930: 2c 0a 09 46 49 4c 45 5f 44 45 56 49 43 45 5f 53  ,..FILE_DEVICE_S
0940: 45 52 45 4e 55 4d 2c 0a 09 46 49 4c 45 5f 44 45  ERENUM,..FILE_DE
0950: 56 49 43 45 5f 54 45 52 4d 53 52 56 2c 0a 09 46  VICE_TERMSRV,..F
0960: 49 4c 45 5f 44 45 56 49 43 45 5f 4b 53 45 43 20  ILE_DEVICE_KSEC 
0970: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 3d 20             // = 
0980: 35 37 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a 09 4d 45  57.}..enum {..ME
0990: 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 0a 09  THOD_BUFFERED,..
09a0: 4d 45 54 48 4f 44 5f 49 4e 5f 44 49 52 45 43 54  METHOD_IN_DIRECT
09b0: 2c 0a 09 4d 45 54 48 4f 44 5f 4f 55 54 5f 44 49  ,..METHOD_OUT_DI
09c0: 52 45 43 54 2c 0a 09 4d 45 54 48 4f 44 5f 4e 45  RECT,..METHOD_NE
09d0: 49 54 48 45 52 0a 7d 0a 0a 65 6e 75 6d 20 7b 0a  ITHER.}..enum {.
09e0: 09 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45 53 53  .FILE_ANY_ACCESS
09f0: 2c 0a 09 46 49 4c 45 5f 53 50 45 43 49 41 4c 5f  ,..FILE_SPECIAL_
0a00: 41 43 43 45 53 53 20 3d 20 30 2c 0a 09 46 49 4c  ACCESS = 0,..FIL
0a10: 45 5f 52 45 41 44 5f 41 43 43 45 53 53 2c 0a 09  E_READ_ACCESS,..
0a20: 46 49 4c 45 5f 57 52 49 54 45 5f 41 43 43 45 53  FILE_WRITE_ACCES
0a30: 53 0a 7d 0a 0a 2f 2a 09 42 69 74 20 70 61 74 74  S.}../*.Bit patt
0a40: 65 72 6e 3a 0a 20 2a 09 74 74 74 74 74 74 74 74  ern:. *.tttttttt
0a50: 20 74 74 74 74 74 74 74 74 20 61 61 66 66 66 66   tttttttt aaffff
0a60: 66 66 20 66 66 66 66 66 66 6d 6d 0a 20 2a 2f 0a  ff ffffffmm. */.
0a70: 2f 2b 0a 23 64 65 66 69 6e 65 20 43 54 4c 5f 43  /+.#define CTL_C
0a80: 4f 44 45 28 74 2c 20 66 2c 20 6d 2c 20 61 29 20  ODE(t, f, m, a) 
0a90: 28 28 28 74 29 3c 3c 31 36 29 7c 28 28 61 29 3c  (((t)<<16)|((a)<
0aa0: 3c 31 34 29 7c 28 28 66 29 3c 3c 32 29 7c 28 6d  <14)|((f)<<2)|(m
0ab0: 29 29 0a 2b 2f 0a 0a 74 65 6d 70 6c 61 74 65 20  )).+/..template 
0ac0: 43 54 4c 5f 43 4f 44 45 5f 54 28 44 45 56 49 43  CTL_CODE_T(DEVIC
0ad0: 45 5f 54 59 50 45 20 74 2c 20 75 69 6e 74 20 66  E_TYPE t, uint f
0ae0: 2c 20 75 69 6e 74 20 6d 2c 20 75 69 6e 74 20 61  , uint m, uint a
0af0: 29 20 7b 0a 09 63 6f 6e 73 74 20 44 57 4f 52 44  ) {..const DWORD
0b00: 20 43 54 4c 5f 43 4f 44 45 5f 54 20 3d 20 28 74   CTL_CODE_T = (t
0b10: 20 3c 3c 20 31 36 29 20 7c 20 28 61 20 3c 3c 20   << 16) | (a << 
0b20: 31 34 29 20 7c 20 28 66 20 3c 3c 20 32 29 20 7c  14) | (f << 2) |
0b30: 20 6d 3b 0a 7d 0a 0a 44 45 56 49 43 45 5f 54 59   m;.}..DEVICE_TY
0b40: 50 45 20 44 45 56 49 43 45 5f 54 59 50 45 5f 46  PE DEVICE_TYPE_F
0b50: 52 4f 4d 5f 43 54 4c 5f 43 4f 44 45 28 44 57 4f  ROM_CTL_CODE(DWO
0b60: 52 44 20 63 29 20 7b 0a 09 72 65 74 75 72 6e 20  RD c) {..return 
0b70: 28 63 20 26 20 30 78 46 46 46 46 30 30 30 30 29  (c & 0xFFFF0000)
0b80: 20 3e 3e 20 31 36 3b 0a 7d 0a 0a 63 6f 6e 73 74   >> 16;.}..const
0b90: 20 44 45 56 49 43 45 5f 54 59 50 45 0a 09 49 4f   DEVICE_TYPE..IO
0ba0: 43 54 4c 5f 53 54 4f 52 41 47 45 5f 42 41 53 45  CTL_STORAGE_BASE
0bb0: 20 3d 20 46 49 4c 45 5f 44 45 56 49 43 45 5f 4d   = FILE_DEVICE_M
0bc0: 41 53 53 5f 53 54 4f 52 41 47 45 2c 0a 09 49 4f  ASS_STORAGE,..IO
0bd0: 43 54 4c 5f 44 49 53 4b 5f 42 41 53 45 20 20 20  CTL_DISK_BASE   
0be0: 20 3d 20 46 49 4c 45 5f 44 45 56 49 43 45 5f 44   = FILE_DEVICE_D
0bf0: 49 53 4b 2c 0a 09 49 4f 43 54 4c 5f 56 4f 4c 55  ISK,..IOCTL_VOLU
0c00: 4d 45 5f 42 41 53 45 20 20 3d 20 27 56 27 3b 0a  ME_BASE  = 'V';.
0c10: 0a 65 6e 75 6d 20 3a 20 44 57 4f 52 44 20 7b 0a  .enum : DWORD {.
0c20: 09 49 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f 43  .IOCTL_STORAGE_C
0c30: 48 45 43 4b 5f 56 45 52 49 46 59 20 20 20 20 20  HECK_VERIFY     
0c40: 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45        = CTL_CODE
0c50: 5f 54 21 28 49 4f 43 54 4c 5f 53 54 4f 52 41 47  _T!(IOCTL_STORAG
0c60: 45 5f 42 41 53 45 2c 20 30 78 30 32 30 30 2c 20  E_BASE, 0x0200, 
0c70: 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c  METHOD_BUFFERED,
0c80: 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53   FILE_READ_ACCES
0c90: 53 29 2c 0a 09 49 4f 43 54 4c 5f 53 54 4f 52 41  S),..IOCTL_STORA
0ca0: 47 45 5f 43 48 45 43 4b 5f 56 45 52 49 46 59 32  GE_CHECK_VERIFY2
0cb0: 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f            = CTL_
0cc0: 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 53 54  CODE_T!(IOCTL_ST
0cd0: 4f 52 41 47 45 5f 42 41 53 45 2c 20 30 78 30 32  ORAGE_BASE, 0x02
0ce0: 30 30 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45  00, METHOD_BUFFE
0cf0: 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43  RED, FILE_ANY_AC
0d00: 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 53 54  CESS),..IOCTL_ST
0d10: 4f 52 41 47 45 5f 4d 45 44 49 41 5f 52 45 4d 4f  ORAGE_MEDIA_REMO
0d20: 56 41 4c 20 20 20 20 20 20 20 20 20 20 3d 20 43  VAL          = C
0d30: 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c  TL_CODE_T!(IOCTL
0d40: 5f 53 54 4f 52 41 47 45 5f 42 41 53 45 2c 20 30  _STORAGE_BASE, 0
0d50: 78 30 32 30 31 2c 20 4d 45 54 48 4f 44 5f 42 55  x0201, METHOD_BU
0d60: 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 52 45 41  FFERED, FILE_REA
0d70: 44 5f 41 43 43 45 53 53 29 2c 0a 09 49 4f 43 54  D_ACCESS),..IOCT
0d80: 4c 5f 53 54 4f 52 41 47 45 5f 45 4a 45 43 54 5f  L_STORAGE_EJECT_
0d90: 4d 45 44 49 41 20 20 20 20 20 20 20 20 20 20 20  MEDIA           
0da0: 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49   = CTL_CODE_T!(I
0db0: 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f 42 41 53  OCTL_STORAGE_BAS
0dc0: 45 2c 20 30 78 30 32 30 32 2c 20 4d 45 54 48 4f  E, 0x0202, METHO
0dd0: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
0de0: 5f 52 45 41 44 5f 41 43 43 45 53 53 29 2c 0a 09  _READ_ACCESS),..
0df0: 49 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f 4c 4f  IOCTL_STORAGE_LO
0e00: 41 44 5f 4d 45 44 49 41 20 20 20 20 20 20 20 20  AD_MEDIA        
0e10: 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f       = CTL_CODE_
0e20: 54 21 28 49 4f 43 54 4c 5f 53 54 4f 52 41 47 45  T!(IOCTL_STORAGE
0e30: 5f 42 41 53 45 2c 20 30 78 30 32 30 33 2c 20 4d  _BASE, 0x0203, M
0e40: 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20  ETHOD_BUFFERED, 
0e50: 46 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53  FILE_READ_ACCESS
0e60: 29 2c 0a 09 49 4f 43 54 4c 5f 53 54 4f 52 41 47  ),..IOCTL_STORAG
0e70: 45 5f 4c 4f 41 44 5f 4d 45 44 49 41 32 20 20 20  E_LOAD_MEDIA2   
0e80: 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43           = CTL_C
0e90: 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 53 54 4f  ODE_T!(IOCTL_STO
0ea0: 52 41 47 45 5f 42 41 53 45 2c 20 30 78 30 32 30  RAGE_BASE, 0x020
0eb0: 33 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52  3, METHOD_BUFFER
0ec0: 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43  ED, FILE_ANY_ACC
0ed0: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 53 54 4f  ESS),..IOCTL_STO
0ee0: 52 41 47 45 5f 52 45 53 45 52 56 45 20 20 20 20  RAGE_RESERVE    
0ef0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
0f00: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
0f10: 53 54 4f 52 41 47 45 5f 42 41 53 45 2c 20 30 78  STORAGE_BASE, 0x
0f20: 30 32 30 34 2c 20 4d 45 54 48 4f 44 5f 42 55 46  0204, METHOD_BUF
0f30: 46 45 52 45 44 2c 20 46 49 4c 45 5f 52 45 41 44  FERED, FILE_READ
0f40: 5f 41 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c  _ACCESS),..IOCTL
0f50: 5f 53 54 4f 52 41 47 45 5f 52 45 4c 45 41 53 45  _STORAGE_RELEASE
0f60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0f70: 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f  = CTL_CODE_T!(IO
0f80: 43 54 4c 5f 53 54 4f 52 41 47 45 5f 42 41 53 45  CTL_STORAGE_BASE
0f90: 2c 20 30 78 30 32 30 35 2c 20 4d 45 54 48 4f 44  , 0x0205, METHOD
0fa0: 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f  _BUFFERED, FILE_
0fb0: 52 45 41 44 5f 41 43 43 45 53 53 29 2c 0a 09 49  READ_ACCESS),..I
0fc0: 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f 46 49 4e  OCTL_STORAGE_FIN
0fd0: 44 5f 4e 45 57 5f 44 45 56 49 43 45 53 20 20 20  D_NEW_DEVICES   
0fe0: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
0ff0: 21 28 49 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f  !(IOCTL_STORAGE_
1000: 42 41 53 45 2c 20 30 78 30 32 30 36 2c 20 4d 45  BASE, 0x0206, ME
1010: 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46  THOD_BUFFERED, F
1020: 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53 29  ILE_READ_ACCESS)
1030: 2c 0a 09 49 4f 43 54 4c 5f 53 54 4f 52 41 47 45  ,..IOCTL_STORAGE
1040: 5f 45 4a 45 43 54 49 4f 4e 5f 43 4f 4e 54 52 4f  _EJECTION_CONTRO
1050: 4c 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f  L       = CTL_CO
1060: 44 45 5f 54 21 28 49 4f 43 54 4c 5f 53 54 4f 52  DE_T!(IOCTL_STOR
1070: 41 47 45 5f 42 41 53 45 2c 20 30 78 30 32 35 30  AGE_BASE, 0x0250
1080: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
1090: 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45  D, FILE_ANY_ACCE
10a0: 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 53 54 4f 52  SS),..IOCTL_STOR
10b0: 41 47 45 5f 4d 43 4e 5f 43 4f 4e 54 52 4f 4c 20  AGE_MCN_CONTROL 
10c0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c             = CTL
10d0: 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 53  _CODE_T!(IOCTL_S
10e0: 54 4f 52 41 47 45 5f 42 41 53 45 2c 20 30 78 30  TORAGE_BASE, 0x0
10f0: 32 35 31 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46  251, METHOD_BUFF
1100: 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41  ERED, FILE_ANY_A
1110: 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 53  CCESS),..IOCTL_S
1120: 54 4f 52 41 47 45 5f 47 45 54 5f 4d 45 44 49 41  TORAGE_GET_MEDIA
1130: 5f 54 59 50 45 53 20 20 20 20 20 20 20 20 3d 20  _TYPES        = 
1140: 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54  CTL_CODE_T!(IOCT
1150: 4c 5f 53 54 4f 52 41 47 45 5f 42 41 53 45 2c 20  L_STORAGE_BASE, 
1160: 30 78 30 33 30 30 2c 20 4d 45 54 48 4f 44 5f 42  0x0300, METHOD_B
1170: 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e  UFFERED, FILE_AN
1180: 59 5f 41 43 43 45 53 53 29 2c 0a 09 49 4f 43 54  Y_ACCESS),..IOCT
1190: 4c 5f 53 54 4f 52 41 47 45 5f 47 45 54 5f 4d 45  L_STORAGE_GET_ME
11a0: 44 49 41 5f 54 59 50 45 53 5f 45 58 20 20 20 20  DIA_TYPES_EX    
11b0: 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49   = CTL_CODE_T!(I
11c0: 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f 42 41 53  OCTL_STORAGE_BAS
11d0: 45 2c 20 30 78 30 33 30 31 2c 20 4d 45 54 48 4f  E, 0x0301, METHO
11e0: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
11f0: 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 49  _ANY_ACCESS),..I
1200: 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f 52 45 53  OCTL_STORAGE_RES
1210: 45 54 5f 42 55 53 20 20 20 20 20 20 20 20 20 20  ET_BUS          
1220: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
1230: 21 28 49 4f 43 54 4c 5f 53 54 4f 52 41 47 45 5f  !(IOCTL_STORAGE_
1240: 42 41 53 45 2c 20 30 78 30 34 30 30 2c 20 4d 45  BASE, 0x0400, ME
1250: 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46  THOD_BUFFERED, F
1260: 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53 29  ILE_READ_ACCESS)
1270: 2c 0a 09 49 4f 43 54 4c 5f 53 54 4f 52 41 47 45  ,..IOCTL_STORAGE
1280: 5f 52 45 53 45 54 5f 44 45 56 49 43 45 20 20 20  _RESET_DEVICE   
1290: 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f          = CTL_CO
12a0: 44 45 5f 54 21 28 49 4f 43 54 4c 5f 53 54 4f 52  DE_T!(IOCTL_STOR
12b0: 41 47 45 5f 42 41 53 45 2c 20 30 78 30 34 30 31  AGE_BASE, 0x0401
12c0: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
12d0: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
12e0: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 53 54 4f  ESS),..IOCTL_STO
12f0: 52 41 47 45 5f 47 45 54 5f 44 45 56 49 43 45 5f  RAGE_GET_DEVICE_
1300: 4e 55 4d 42 45 52 20 20 20 20 20 20 3d 20 43 54  NUMBER      = CT
1310: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
1320: 53 54 4f 52 41 47 45 5f 42 41 53 45 2c 20 30 78  STORAGE_BASE, 0x
1330: 30 34 32 30 2c 20 4d 45 54 48 4f 44 5f 42 55 46  0420, METHOD_BUF
1340: 46 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f  FERED, FILE_ANY_
1350: 41 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f  ACCESS),..IOCTL_
1360: 53 54 4f 52 41 47 45 5f 50 52 45 44 49 43 54 5f  STORAGE_PREDICT_
1370: 46 41 49 4c 55 52 45 20 20 20 20 20 20 20 20 3d  FAILURE        =
1380: 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43   CTL_CODE_T!(IOC
1390: 54 4c 5f 53 54 4f 52 41 47 45 5f 42 41 53 45 2c  TL_STORAGE_BASE,
13a0: 20 30 78 30 34 34 30 2c 20 4d 45 54 48 4f 44 5f   0x0440, METHOD_
13b0: 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 41  BUFFERED, FILE_A
13c0: 4e 59 5f 41 43 43 45 53 53 29 2c 0a 0a 09 49 4f  NY_ACCESS),...IO
13d0: 43 54 4c 5f 44 49 53 4b 5f 47 45 54 5f 44 52 49  CTL_DISK_GET_DRI
13e0: 56 45 5f 47 45 4f 4d 45 54 52 59 20 20 20 20 20  VE_GEOMETRY     
13f0: 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21     = CTL_CODE_T!
1400: 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42 41 53 45  (IOCTL_DISK_BASE
1410: 2c 20 30 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46  , 0, METHOD_BUFF
1420: 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41  ERED, FILE_ANY_A
1430: 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44  CCESS),..IOCTL_D
1440: 49 53 4b 5f 47 45 54 5f 50 41 52 54 49 54 49 4f  ISK_GET_PARTITIO
1450: 4e 5f 49 4e 46 4f 20 20 20 20 20 20 20 20 3d 20  N_INFO        = 
1460: 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54  CTL_CODE_T!(IOCT
1470: 4c 5f 44 49 53 4b 5f 42 41 53 45 2c 20 31 2c 20  L_DISK_BASE, 1, 
1480: 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c  METHOD_BUFFERED,
1490: 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53   FILE_READ_ACCES
14a0: 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f  S),..IOCTL_DISK_
14b0: 53 45 54 5f 50 41 52 54 49 54 49 4f 4e 5f 49 4e  SET_PARTITION_IN
14c0: 46 4f 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f  FO        = CTL_
14d0: 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49  CODE_T!(IOCTL_DI
14e0: 53 4b 5f 42 41 53 45 2c 20 32 2c 20 4d 45 54 48  SK_BASE, 2, METH
14f0: 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c  OD_BUFFERED, FIL
1500: 45 5f 52 45 41 44 5f 41 43 43 45 53 53 7c 46 49  E_READ_ACCESS|FI
1510: 4c 45 5f 57 52 49 54 45 5f 41 43 43 45 53 53 29  LE_WRITE_ACCESS)
1520: 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 47 45  ,..IOCTL_DISK_GE
1530: 54 5f 44 52 49 56 45 5f 4c 41 59 4f 55 54 20 20  T_DRIVE_LAYOUT  
1540: 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f          = CTL_CO
1550: 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b  DE_T!(IOCTL_DISK
1560: 5f 42 41 53 45 2c 20 33 2c 20 4d 45 54 48 4f 44  _BASE, 3, METHOD
1570: 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f  _BUFFERED, FILE_
1580: 52 45 41 44 5f 41 43 43 45 53 53 29 2c 0a 09 49  READ_ACCESS),..I
1590: 4f 43 54 4c 5f 44 49 53 4b 5f 53 45 54 5f 44 52  OCTL_DISK_SET_DR
15a0: 49 56 45 5f 4c 41 59 4f 55 54 20 20 20 20 20 20  IVE_LAYOUT      
15b0: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
15c0: 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42 41 53  !(IOCTL_DISK_BAS
15d0: 45 2c 20 34 2c 20 4d 45 54 48 4f 44 5f 42 55 46  E, 4, METHOD_BUF
15e0: 46 45 52 45 44 2c 20 46 49 4c 45 5f 52 45 41 44  FERED, FILE_READ
15f0: 5f 41 43 43 45 53 53 7c 46 49 4c 45 5f 57 52 49  _ACCESS|FILE_WRI
1600: 54 45 5f 41 43 43 45 53 53 29 2c 0a 09 49 4f 43  TE_ACCESS),..IOC
1610: 54 4c 5f 44 49 53 4b 5f 56 45 52 49 46 59 20 20  TL_DISK_VERIFY  
1620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1630: 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28    = CTL_CODE_T!(
1640: 49 4f 43 54 4c 5f 44 49 53 4b 5f 42 41 53 45 2c  IOCTL_DISK_BASE,
1650: 20 35 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45   5, METHOD_BUFFE
1660: 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43  RED, FILE_ANY_AC
1670: 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49  CESS),..IOCTL_DI
1680: 53 4b 5f 46 4f 52 4d 41 54 5f 54 52 41 43 4b 53  SK_FORMAT_TRACKS
1690: 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43               = C
16a0: 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c  TL_CODE_T!(IOCTL
16b0: 5f 44 49 53 4b 5f 42 41 53 45 2c 20 36 2c 20 4d  _DISK_BASE, 6, M
16c0: 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20  ETHOD_BUFFERED, 
16d0: 46 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53  FILE_READ_ACCESS
16e0: 7c 46 49 4c 45 5f 57 52 49 54 45 5f 41 43 43 45  |FILE_WRITE_ACCE
16f0: 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b  SS),..IOCTL_DISK
1700: 5f 52 45 41 53 53 49 47 4e 5f 42 4c 4f 43 4b 53  _REASSIGN_BLOCKS
1710: 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c             = CTL
1720: 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44  _CODE_T!(IOCTL_D
1730: 49 53 4b 5f 42 41 53 45 2c 20 37 2c 20 4d 45 54  ISK_BASE, 7, MET
1740: 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49  HOD_BUFFERED, FI
1750: 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53 7c 46  LE_READ_ACCESS|F
1760: 49 4c 45 5f 57 52 49 54 45 5f 41 43 43 45 53 53  ILE_WRITE_ACCESS
1770: 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 50  ),..IOCTL_DISK_P
1780: 45 52 46 4f 52 4d 41 4e 43 45 20 20 20 20 20 20  ERFORMANCE      
1790: 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43           = CTL_C
17a0: 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53  ODE_T!(IOCTL_DIS
17b0: 4b 5f 42 41 53 45 2c 20 38 2c 20 4d 45 54 48 4f  K_BASE, 8, METHO
17c0: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
17d0: 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 49  _ANY_ACCESS),..I
17e0: 4f 43 54 4c 5f 44 49 53 4b 5f 49 53 5f 57 52 49  OCTL_DISK_IS_WRI
17f0: 54 41 42 4c 45 20 20 20 20 20 20 20 20 20 20 20  TABLE           
1800: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
1810: 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42 41 53  !(IOCTL_DISK_BAS
1820: 45 2c 20 39 2c 20 4d 45 54 48 4f 44 5f 42 55 46  E, 9, METHOD_BUF
1830: 46 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f  FERED, FILE_ANY_
1840: 41 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f  ACCESS),..IOCTL_
1850: 44 49 53 4b 5f 4c 4f 47 47 49 4e 47 20 20 20 20  DISK_LOGGING    
1860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d                 =
1870: 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43   CTL_CODE_T!(IOC
1880: 54 4c 5f 44 49 53 4b 5f 42 41 53 45 2c 20 31 30  TL_DISK_BASE, 10
1890: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
18a0: 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45  D, FILE_ANY_ACCE
18b0: 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b  SS),..IOCTL_DISK
18c0: 5f 46 4f 52 4d 41 54 5f 54 52 41 43 4b 53 5f 45  _FORMAT_TRACKS_E
18d0: 58 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c  X          = CTL
18e0: 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44  _CODE_T!(IOCTL_D
18f0: 49 53 4b 5f 42 41 53 45 2c 20 31 31 2c 20 4d 45  ISK_BASE, 11, ME
1900: 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46  THOD_BUFFERED, F
1910: 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53 7c  ILE_READ_ACCESS|
1920: 46 49 4c 45 5f 57 52 49 54 45 5f 41 43 43 45 53  FILE_WRITE_ACCES
1930: 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f  S),..IOCTL_DISK_
1940: 48 49 53 54 4f 47 52 41 4d 5f 53 54 52 55 43 54  HISTOGRAM_STRUCT
1950: 55 52 45 20 20 20 20 20 20 20 3d 20 43 54 4c 5f  URE       = CTL_
1960: 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49  CODE_T!(IOCTL_DI
1970: 53 4b 5f 42 41 53 45 2c 20 31 32 2c 20 4d 45 54  SK_BASE, 12, MET
1980: 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49  HOD_BUFFERED, FI
1990: 4c 45 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a  LE_ANY_ACCESS),.
19a0: 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 48 49 53 54  .IOCTL_DISK_HIST
19b0: 4f 47 52 41 4d 5f 44 41 54 41 20 20 20 20 20 20  OGRAM_DATA      
19c0: 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45        = CTL_CODE
19d0: 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42  _T!(IOCTL_DISK_B
19e0: 41 53 45 2c 20 31 33 2c 20 4d 45 54 48 4f 44 5f  ASE, 13, METHOD_
19f0: 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 41  BUFFERED, FILE_A
1a00: 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 49 4f 43  NY_ACCESS),..IOC
1a10: 54 4c 5f 44 49 53 4b 5f 48 49 53 54 4f 47 52 41  TL_DISK_HISTOGRA
1a20: 4d 5f 52 45 53 45 54 20 20 20 20 20 20 20 20 20  M_RESET         
1a30: 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28    = CTL_CODE_T!(
1a40: 49 4f 43 54 4c 5f 44 49 53 4b 5f 42 41 53 45 2c  IOCTL_DISK_BASE,
1a50: 20 31 34 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46   14, METHOD_BUFF
1a60: 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41  ERED, FILE_ANY_A
1a70: 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44  CCESS),..IOCTL_D
1a80: 49 53 4b 5f 52 45 51 55 45 53 54 5f 53 54 52 55  ISK_REQUEST_STRU
1a90: 43 54 55 52 45 20 20 20 20 20 20 20 20 20 3d 20  CTURE         = 
1aa0: 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54  CTL_CODE_T!(IOCT
1ab0: 4c 5f 44 49 53 4b 5f 42 41 53 45 2c 20 31 35 2c  L_DISK_BASE, 15,
1ac0: 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44   METHOD_BUFFERED
1ad0: 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45 53  , FILE_ANY_ACCES
1ae0: 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f  S),..IOCTL_DISK_
1af0: 52 45 51 55 45 53 54 5f 44 41 54 41 20 20 20 20  REQUEST_DATA    
1b00: 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f            = CTL_
1b10: 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49  CODE_T!(IOCTL_DI
1b20: 53 4b 5f 42 41 53 45 2c 20 31 36 2c 20 4d 45 54  SK_BASE, 16, MET
1b30: 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49  HOD_BUFFERED, FI
1b40: 4c 45 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a  LE_ANY_ACCESS),.
1b50: 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 47 45 54 5f  .IOCTL_DISK_GET_
1b60: 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f 5f 45  PARTITION_INFO_E
1b70: 58 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45  X     = CTL_CODE
1b80: 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42  _T!(IOCTL_DISK_B
1b90: 41 53 45 2c 20 30 78 31 32 2c 20 4d 45 54 48 4f  ASE, 0x12, METHO
1ba0: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
1bb0: 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 49  _ANY_ACCESS),..I
1bc0: 4f 43 54 4c 5f 44 49 53 4b 5f 53 45 54 5f 50 41  OCTL_DISK_SET_PA
1bd0: 52 54 49 54 49 4f 4e 5f 49 4e 46 4f 5f 45 58 20  RTITION_INFO_EX 
1be0: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
1bf0: 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42 41 53  !(IOCTL_DISK_BAS
1c00: 45 2c 20 30 78 31 33 2c 20 4d 45 54 48 4f 44 5f  E, 0x13, METHOD_
1c10: 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 52  BUFFERED, FILE_R
1c20: 45 41 44 5f 41 43 43 45 53 53 20 7c 20 46 49 4c  EAD_ACCESS | FIL
1c30: 45 5f 57 52 49 54 45 5f 41 43 43 45 53 53 29 2c  E_WRITE_ACCESS),
1c40: 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 47 45 54  ..IOCTL_DISK_GET
1c50: 5f 44 52 49 56 45 5f 4c 41 59 4f 55 54 5f 45 58  _DRIVE_LAYOUT_EX
1c60: 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44         = CTL_COD
1c70: 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f  E_T!(IOCTL_DISK_
1c80: 42 41 53 45 2c 20 30 78 31 34 2c 20 4d 45 54 48  BASE, 0x14, METH
1c90: 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c  OD_BUFFERED, FIL
1ca0: 45 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09  E_ANY_ACCESS),..
1cb0: 49 4f 43 54 4c 5f 44 49 53 4b 5f 53 45 54 5f 44  IOCTL_DISK_SET_D
1cc0: 52 49 56 45 5f 4c 41 59 4f 55 54 5f 45 58 20 20  RIVE_LAYOUT_EX  
1cd0: 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f       = CTL_CODE_
1ce0: 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42 41  T!(IOCTL_DISK_BA
1cf0: 53 45 2c 20 30 78 31 35 2c 20 4d 45 54 48 4f 44  SE, 0x15, METHOD
1d00: 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f  _BUFFERED, FILE_
1d10: 52 45 41 44 5f 41 43 43 45 53 53 20 7c 20 46 49  READ_ACCESS | FI
1d20: 4c 45 5f 57 52 49 54 45 5f 41 43 43 45 53 53 29  LE_WRITE_ACCESS)
1d30: 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 43 52  ,..IOCTL_DISK_CR
1d40: 45 41 54 45 5f 44 49 53 4b 20 20 20 20 20 20 20  EATE_DISK       
1d50: 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f          = CTL_CO
1d60: 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b  DE_T!(IOCTL_DISK
1d70: 5f 42 41 53 45 2c 20 30 78 31 36 2c 20 4d 45 54  _BASE, 0x16, MET
1d80: 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49  HOD_BUFFERED, FI
1d90: 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53 20 7c  LE_READ_ACCESS |
1da0: 20 46 49 4c 45 5f 57 52 49 54 45 5f 41 43 43 45   FILE_WRITE_ACCE
1db0: 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b  SS),..IOCTL_DISK
1dc0: 5f 47 45 54 5f 4c 45 4e 47 54 48 5f 49 4e 46 4f  _GET_LENGTH_INFO
1dd0: 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c             = CTL
1de0: 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44  _CODE_T!(IOCTL_D
1df0: 49 53 4b 5f 42 41 53 45 2c 20 30 78 31 37 2c 20  ISK_BASE, 0x17, 
1e00: 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c  METHOD_BUFFERED,
1e10: 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53   FILE_READ_ACCES
1e20: 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f  S),..IOCTL_DISK_
1e30: 50 45 52 46 4f 52 4d 41 4e 43 45 5f 4f 46 46 20  PERFORMANCE_OFF 
1e40: 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f            = CTL_
1e50: 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49  CODE_T!(IOCTL_DI
1e60: 53 4b 5f 42 41 53 45 2c 20 30 78 31 38 2c 20 4d  SK_BASE, 0x18, M
1e70: 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20  ETHOD_BUFFERED, 
1e80: 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45 53 53 29  FILE_ANY_ACCESS)
1e90: 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 47 45  ,..IOCTL_DISK_GE
1ea0: 54 5f 44 52 49 56 45 5f 47 45 4f 4d 45 54 52 59  T_DRIVE_GEOMETRY
1eb0: 5f 45 58 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f  _EX     = CTL_CO
1ec0: 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b  DE_T!(IOCTL_DISK
1ed0: 5f 42 41 53 45 2c 20 30 78 32 38 2c 20 4d 45 54  _BASE, 0x28, MET
1ee0: 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49  HOD_BUFFERED, FI
1ef0: 4c 45 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a  LE_ANY_ACCESS),.
1f00: 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 47 52 4f 57  .IOCTL_DISK_GROW
1f10: 5f 50 41 52 54 49 54 49 4f 4e 20 20 20 20 20 20  _PARTITION      
1f20: 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45        = CTL_CODE
1f30: 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b 5f 42  _T!(IOCTL_DISK_B
1f40: 41 53 45 2c 20 30 78 33 34 2c 20 4d 45 54 48 4f  ASE, 0x34, METHO
1f50: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
1f60: 5f 52 45 41 44 5f 41 43 43 45 53 53 20 7c 20 46  _READ_ACCESS | F
1f70: 49 4c 45 5f 57 52 49 54 45 5f 41 43 43 45 53 53  ILE_WRITE_ACCESS
1f80: 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 47  ),..IOCTL_DISK_G
1f90: 45 54 5f 43 41 43 48 45 5f 49 4e 46 4f 52 4d 41  ET_CACHE_INFORMA
1fa0: 54 49 4f 4e 20 20 20 20 20 3d 20 43 54 4c 5f 43  TION     = CTL_C
1fb0: 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53  ODE_T!(IOCTL_DIS
1fc0: 4b 5f 42 41 53 45 2c 20 30 78 33 35 2c 20 4d 45  K_BASE, 0x35, ME
1fd0: 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46  THOD_BUFFERED, F
1fe0: 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53 29  ILE_READ_ACCESS)
1ff0: 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b 5f 53 45  ,..IOCTL_DISK_SE
2000: 54 5f 43 41 43 48 45 5f 49 4e 46 4f 52 4d 41 54  T_CACHE_INFORMAT
2010: 49 4f 4e 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f  ION     = CTL_CO
2020: 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44 49 53 4b  DE_T!(IOCTL_DISK
2030: 5f 42 41 53 45 2c 20 30 78 33 36 2c 20 4d 45 54  _BASE, 0x36, MET
2040: 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49  HOD_BUFFERED, FI
2050: 4c 45 5f 52 45 41 44 5f 41 43 43 45 53 53 20 7c  LE_READ_ACCESS |
2060: 20 46 49 4c 45 5f 57 52 49 54 45 5f 41 43 43 45   FILE_WRITE_ACCE
2070: 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b  SS),..IOCTL_DISK
2080: 5f 44 45 4c 45 54 45 5f 44 52 49 56 45 5f 4c 41  _DELETE_DRIVE_LA
2090: 59 4f 55 54 20 20 20 20 20 20 20 3d 20 43 54 4c  YOUT       = CTL
20a0: 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44  _CODE_T!(IOCTL_D
20b0: 49 53 4b 5f 42 41 53 45 2c 20 30 78 34 30 2c 20  ISK_BASE, 0x40, 
20c0: 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c  METHOD_BUFFERED,
20d0: 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43 45 53   FILE_READ_ACCES
20e0: 53 20 7c 20 46 49 4c 45 5f 57 52 49 54 45 5f 41  S | FILE_WRITE_A
20f0: 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44  CCESS),..IOCTL_D
2100: 49 53 4b 5f 55 50 44 41 54 45 5f 50 52 4f 50 45  ISK_UPDATE_PROPE
2110: 52 54 49 45 53 20 20 20 20 20 20 20 20 20 3d 20  RTIES         = 
2120: 43 54 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54  CTL_CODE_T!(IOCT
2130: 4c 5f 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 35  L_DISK_BASE, 0x5
2140: 30 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52  0, METHOD_BUFFER
2150: 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43  ED, FILE_ANY_ACC
2160: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
2170: 4b 5f 43 48 45 43 4b 5f 56 45 52 49 46 59 20 20  K_CHECK_VERIFY  
2180: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
2190: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
21a0: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 30  DISK_BASE, 0x200
21b0: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
21c0: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
21d0: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
21e0: 4b 5f 4d 45 44 49 41 5f 52 45 4d 4f 56 41 4c 20  K_MEDIA_REMOVAL 
21f0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
2200: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
2210: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 31  DISK_BASE, 0x201
2220: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
2230: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
2240: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
2250: 4b 5f 45 4a 45 43 54 5f 4d 45 44 49 41 20 20 20  K_EJECT_MEDIA   
2260: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
2270: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
2280: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 32  DISK_BASE, 0x202
2290: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
22a0: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
22b0: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
22c0: 4b 5f 4c 4f 41 44 5f 4d 45 44 49 41 20 20 20 20  K_LOAD_MEDIA    
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
22e0: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
22f0: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 33  DISK_BASE, 0x203
2300: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
2310: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
2320: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
2330: 4b 5f 52 45 53 45 52 56 45 20 20 20 20 20 20 20  K_RESERVE       
2340: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
2350: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
2360: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 34  DISK_BASE, 0x204
2370: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
2380: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
2390: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
23a0: 4b 5f 52 45 4c 45 41 53 45 20 20 20 20 20 20 20  K_RELEASE       
23b0: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
23c0: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
23d0: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 35  DISK_BASE, 0x205
23e0: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
23f0: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
2400: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
2410: 4b 5f 46 49 4e 44 5f 4e 45 57 5f 44 45 56 49 43  K_FIND_NEW_DEVIC
2420: 45 53 20 20 20 20 20 20 20 20 20 20 3d 20 43 54  ES          = CT
2430: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
2440: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 36  DISK_BASE, 0x206
2450: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
2460: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
2470: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
2480: 4b 5f 52 45 4d 4f 56 45 5f 44 45 56 49 43 45 20  K_REMOVE_DEVICE 
2490: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
24a0: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
24b0: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 32 30 37  DISK_BASE, 0x207
24c0: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
24d0: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
24e0: 45 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53  ESS),..IOCTL_DIS
24f0: 4b 5f 47 45 54 5f 4d 45 44 49 41 5f 54 59 50 45  K_GET_MEDIA_TYPE
2500: 53 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54  S           = CT
2510: 4c 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f  L_CODE_T!(IOCTL_
2520: 44 49 53 4b 5f 42 41 53 45 2c 20 30 78 33 30 30  DISK_BASE, 0x300
2530: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
2540: 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45  D, FILE_ANY_ACCE
2550: 53 53 29 2c 0a 09 49 4f 43 54 4c 5f 44 49 53 4b  SS),..IOCTL_DISK
2560: 5f 55 50 44 41 54 45 5f 44 52 49 56 45 5f 53 49  _UPDATE_DRIVE_SI
2570: 5a 45 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c  ZE         = CTL
2580: 5f 43 4f 44 45 5f 54 21 28 49 4f 43 54 4c 5f 44  _CODE_T!(IOCTL_D
2590: 49 53 4b 5f 42 41 53 45 2c 20 30 78 30 30 33 32  ISK_BASE, 0x0032
25a0: 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45  , METHOD_BUFFERE
25b0: 44 2c 20 46 49 4c 45 5f 52 45 41 44 5f 41 43 43  D, FILE_READ_ACC
25c0: 45 53 53 20 7c 20 46 49 4c 45 5f 57 52 49 54 45  ESS | FILE_WRITE
25d0: 5f 41 43 43 45 53 53 29 2c 0a 09 49 4f 43 54 4c  _ACCESS),..IOCTL
25e0: 5f 53 45 52 49 41 4c 5f 4c 53 52 4d 53 54 5f 49  _SERIAL_LSRMST_I
25f0: 4e 53 45 52 54 20 20 20 20 20 20 20 20 20 20 20  NSERT           
2600: 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 46 49  = CTL_CODE_T!(FI
2610: 4c 45 5f 44 45 56 49 43 45 5f 53 45 52 49 41 4c  LE_DEVICE_SERIAL
2620: 5f 50 4f 52 54 2c 20 33 31 2c 20 4d 45 54 48 4f  _PORT, 31, METHO
2630: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
2640: 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 0a 09  _ANY_ACCESS),...
2650: 49 4f 43 54 4c 5f 56 4f 4c 55 4d 45 5f 47 45 54  IOCTL_VOLUME_GET
2660: 5f 56 4f 4c 55 4d 45 5f 44 49 53 4b 5f 45 58 54  _VOLUME_DISK_EXT
2670: 45 4e 54 53 20 3d 20 43 54 4c 5f 43 4f 44 45 5f  ENTS = CTL_CODE_
2680: 54 21 28 49 4f 43 54 4c 5f 56 4f 4c 55 4d 45 5f  T!(IOCTL_VOLUME_
2690: 42 41 53 45 2c 20 30 2c 20 4d 45 54 48 4f 44 5f  BASE, 0, METHOD_
26a0: 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 41  BUFFERED, FILE_A
26b0: 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 49 4f 43  NY_ACCESS),..IOC
26c0: 54 4c 5f 56 4f 4c 55 4d 45 5f 49 53 5f 43 4c 55  TL_VOLUME_IS_CLU
26d0: 53 54 45 52 45 44 20 20 20 20 20 20 20 20 20 20  STERED          
26e0: 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28    = CTL_CODE_T!(
26f0: 49 4f 43 54 4c 5f 56 4f 4c 55 4d 45 5f 42 41 53  IOCTL_VOLUME_BAS
2700: 45 2c 20 31 32 2c 20 4d 45 54 48 4f 44 5f 42 55  E, 12, METHOD_BU
2710: 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59  FFERED, FILE_ANY
2720: 5f 41 43 43 45 53 53 29 2c 0a 0a 09 46 53 43 54  _ACCESS),...FSCT
2730: 4c 5f 4c 4f 43 4b 5f 56 4f 4c 55 4d 45 20 20 20  L_LOCK_VOLUME   
2740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2750: 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 46   = CTL_CODE_T!(F
2760: 49 4c 45 5f 44 45 56 49 43 45 5f 46 49 4c 45 5f  ILE_DEVICE_FILE_
2770: 53 59 53 54 45 4d 2c 20 36 2c 20 4d 45 54 48 4f  SYSTEM, 6, METHO
2780: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
2790: 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 46  _ANY_ACCESS),..F
27a0: 53 43 54 4c 5f 55 4e 4c 4f 43 4b 5f 56 4f 4c 55  SCTL_UNLOCK_VOLU
27b0: 4d 45 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ME              
27c0: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
27d0: 21 28 46 49 4c 45 5f 44 45 56 49 43 45 5f 46 49  !(FILE_DEVICE_FI
27e0: 4c 45 5f 53 59 53 54 45 4d 2c 20 37 2c 20 4d 45  LE_SYSTEM, 7, ME
27f0: 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46  THOD_BUFFERED, F
2800: 49 4c 45 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c  ILE_ANY_ACCESS),
2810: 0a 09 46 53 43 54 4c 5f 44 49 53 4d 4f 55 4e 54  ..FSCTL_DISMOUNT
2820: 5f 56 4f 4c 55 4d 45 20 20 20 20 20 20 20 20 20  _VOLUME         
2830: 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44         = CTL_COD
2840: 45 5f 54 21 28 46 49 4c 45 5f 44 45 56 49 43 45  E_T!(FILE_DEVICE
2850: 5f 46 49 4c 45 5f 53 59 53 54 45 4d 2c 20 38 2c  _FILE_SYSTEM, 8,
2860: 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44   METHOD_BUFFERED
2870: 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45 53  , FILE_ANY_ACCES
2880: 53 29 2c 0a 09 46 53 43 54 4c 5f 4d 4f 55 4e 54  S),..FSCTL_MOUNT
2890: 5f 44 42 4c 53 5f 56 4f 4c 55 4d 45 20 20 20 20  _DBLS_VOLUME    
28a0: 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f            = CTL_
28b0: 43 4f 44 45 5f 54 21 28 46 49 4c 45 5f 44 45 56  CODE_T!(FILE_DEV
28c0: 49 43 45 5f 46 49 4c 45 5f 53 59 53 54 45 4d 2c  ICE_FILE_SYSTEM,
28d0: 20 31 33 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46   13, METHOD_BUFF
28e0: 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41  ERED, FILE_ANY_A
28f0: 43 43 45 53 53 29 2c 0a 09 46 53 43 54 4c 5f 47  CCESS),..FSCTL_G
2900: 45 54 5f 43 4f 4d 50 52 45 53 53 49 4f 4e 20 20  ET_COMPRESSION  
2910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
2920: 43 54 4c 5f 43 4f 44 45 5f 54 21 28 46 49 4c 45  CTL_CODE_T!(FILE
2930: 5f 44 45 56 49 43 45 5f 46 49 4c 45 5f 53 59 53  _DEVICE_FILE_SYS
2940: 54 45 4d 2c 20 31 35 2c 20 4d 45 54 48 4f 44 5f  TEM, 15, METHOD_
2950: 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 41  BUFFERED, FILE_A
2960: 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 46 53 43  NY_ACCESS),..FSC
2970: 54 4c 5f 53 45 54 5f 43 4f 4d 50 52 45 53 53 49  TL_SET_COMPRESSI
2980: 4f 4e 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ON              
2990: 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28    = CTL_CODE_T!(
29a0: 46 49 4c 45 5f 44 45 56 49 43 45 5f 46 49 4c 45  FILE_DEVICE_FILE
29b0: 5f 53 59 53 54 45 4d 2c 20 31 36 2c 20 4d 45 54  _SYSTEM, 16, MET
29c0: 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49  HOD_BUFFERED, FI
29d0: 4c 45 5f 52 45 41 44 5f 44 41 54 41 7c 46 49 4c  LE_READ_DATA|FIL
29e0: 45 5f 57 52 49 54 45 5f 44 41 54 41 29 2c 0a 09  E_WRITE_DATA),..
29f0: 46 53 43 54 4c 5f 52 45 41 44 5f 43 4f 4d 50 52  FSCTL_READ_COMPR
2a00: 45 53 53 49 4f 4e 20 20 20 20 20 20 20 20 20 20  ESSION          
2a10: 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f       = CTL_CODE_
2a20: 54 21 28 46 49 4c 45 5f 44 45 56 49 43 45 5f 46  T!(FILE_DEVICE_F
2a30: 49 4c 45 5f 53 59 53 54 45 4d 2c 20 31 37 2c 20  ILE_SYSTEM, 17, 
2a40: 4d 45 54 48 4f 44 5f 4e 45 49 54 48 45 52 2c 20  METHOD_NEITHER, 
2a50: 46 49 4c 45 5f 52 45 41 44 5f 44 41 54 41 29 2c  FILE_READ_DATA),
2a60: 0a 09 46 53 43 54 4c 5f 57 52 49 54 45 5f 43 4f  ..FSCTL_WRITE_CO
2a70: 4d 50 52 45 53 53 49 4f 4e 20 20 20 20 20 20 20  MPRESSION       
2a80: 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44         = CTL_COD
2a90: 45 5f 54 21 28 46 49 4c 45 5f 44 45 56 49 43 45  E_T!(FILE_DEVICE
2aa0: 5f 46 49 4c 45 5f 53 59 53 54 45 4d 2c 20 31 38  _FILE_SYSTEM, 18
2ab0: 2c 20 4d 45 54 48 4f 44 5f 4e 45 49 54 48 45 52  , METHOD_NEITHER
2ac0: 2c 20 46 49 4c 45 5f 57 52 49 54 45 5f 44 41 54  , FILE_WRITE_DAT
2ad0: 41 29 2c 0a 09 46 53 43 54 4c 5f 47 45 54 5f 4e  A),..FSCTL_GET_N
2ae0: 54 46 53 5f 56 4f 4c 55 4d 45 5f 44 41 54 41 20  TFS_VOLUME_DATA 
2af0: 20 20 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f            = CTL_
2b00: 43 4f 44 45 5f 54 21 28 46 49 4c 45 5f 44 45 56  CODE_T!(FILE_DEV
2b10: 49 43 45 5f 46 49 4c 45 5f 53 59 53 54 45 4d 2c  ICE_FILE_SYSTEM,
2b20: 20 32 35 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46   25, METHOD_BUFF
2b30: 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41  ERED, FILE_ANY_A
2b40: 43 43 45 53 53 29 2c 0a 09 46 53 43 54 4c 5f 47  CCESS),..FSCTL_G
2b50: 45 54 5f 56 4f 4c 55 4d 45 5f 42 49 54 4d 41 50  ET_VOLUME_BITMAP
2b60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3d 20                = 
2b70: 43 54 4c 5f 43 4f 44 45 5f 54 21 28 46 49 4c 45  CTL_CODE_T!(FILE
2b80: 5f 44 45 56 49 43 45 5f 46 49 4c 45 5f 53 59 53  _DEVICE_FILE_SYS
2b90: 54 45 4d 2c 20 32 37 2c 20 4d 45 54 48 4f 44 5f  TEM, 27, METHOD_
2ba0: 4e 45 49 54 48 45 52 2c 20 46 49 4c 45 5f 41 4e  NEITHER, FILE_AN
2bb0: 59 5f 41 43 43 45 53 53 29 2c 0a 09 46 53 43 54  Y_ACCESS),..FSCT
2bc0: 4c 5f 47 45 54 5f 52 45 54 52 49 45 56 41 4c 5f  L_GET_RETRIEVAL_
2bd0: 50 4f 49 4e 54 45 52 53 20 20 20 20 20 20 20 20  POINTERS        
2be0: 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 46   = CTL_CODE_T!(F
2bf0: 49 4c 45 5f 44 45 56 49 43 45 5f 46 49 4c 45 5f  ILE_DEVICE_FILE_
2c00: 53 59 53 54 45 4d 2c 20 32 38 2c 20 4d 45 54 48  SYSTEM, 28, METH
2c10: 4f 44 5f 4e 45 49 54 48 45 52 2c 20 46 49 4c 45  OD_NEITHER, FILE
2c20: 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 46  _ANY_ACCESS),..F
2c30: 53 43 54 4c 5f 4d 4f 56 45 5f 46 49 4c 45 20 20  SCTL_MOVE_FILE  
2c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c50: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
2c60: 21 28 46 49 4c 45 5f 44 45 56 49 43 45 5f 46 49  !(FILE_DEVICE_FI
2c70: 4c 45 5f 53 59 53 54 45 4d 2c 20 32 39 2c 20 4d  LE_SYSTEM, 29, M
2c80: 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20  ETHOD_BUFFERED, 
2c90: 46 49 4c 45 5f 41 4e 59 5f 41 43 43 45 53 53 29  FILE_ANY_ACCESS)
2ca0: 2c 0a 09 46 53 43 54 4c 5f 47 45 54 5f 52 45 50  ,..FSCTL_GET_REP
2cb0: 41 52 53 45 5f 50 4f 49 4e 54 20 20 20 20 20 20  ARSE_POINT      
2cc0: 20 20 20 20 20 20 20 20 3d 20 43 54 4c 5f 43 4f          = CTL_CO
2cd0: 44 45 5f 54 21 28 46 49 4c 45 5f 44 45 56 49 43  DE_T!(FILE_DEVIC
2ce0: 45 5f 46 49 4c 45 5f 53 59 53 54 45 4d 2c 20 34  E_FILE_SYSTEM, 4
2cf0: 32 2c 20 4d 45 54 48 4f 44 5f 42 55 46 46 45 52  2, METHOD_BUFFER
2d00: 45 44 2c 20 46 49 4c 45 5f 41 4e 59 5f 41 43 43  ED, FILE_ANY_ACC
2d10: 45 53 53 29 2c 0a 09 46 53 43 54 4c 5f 53 45 54  ESS),..FSCTL_SET
2d20: 5f 52 45 50 41 52 53 45 5f 50 4f 49 4e 54 20 20  _REPARSE_POINT  
2d30: 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 43 54              = CT
2d40: 4c 5f 43 4f 44 45 5f 54 21 28 46 49 4c 45 5f 44  L_CODE_T!(FILE_D
2d50: 45 56 49 43 45 5f 46 49 4c 45 5f 53 59 53 54 45  EVICE_FILE_SYSTE
2d60: 4d 2c 20 34 31 2c 20 4d 45 54 48 4f 44 5f 42 55  M, 41, METHOD_BU
2d70: 46 46 45 52 45 44 2c 20 46 49 4c 45 5f 41 4e 59  FFERED, FILE_ANY
2d80: 5f 41 43 43 45 53 53 29 2c 0a 09 46 53 43 54 4c  _ACCESS),..FSCTL
2d90: 5f 44 45 4c 45 54 45 5f 52 45 50 41 52 53 45 5f  _DELETE_REPARSE_
2da0: 50 4f 49 4e 54 20 20 20 20 20 20 20 20 20 20 20  POINT           
2db0: 3d 20 43 54 4c 5f 43 4f 44 45 5f 54 21 28 46 49  = CTL_CODE_T!(FI
2dc0: 4c 45 5f 44 45 56 49 43 45 5f 46 49 4c 45 5f 53  LE_DEVICE_FILE_S
2dd0: 59 53 54 45 4d 2c 20 34 33 2c 20 4d 45 54 48 4f  YSTEM, 43, METHO
2de0: 44 5f 42 55 46 46 45 52 45 44 2c 20 46 49 4c 45  D_BUFFERED, FILE
2df0: 5f 41 4e 59 5f 41 43 43 45 53 53 29 2c 0a 09 46  _ANY_ACCESS),..F
2e00: 53 43 54 4c 5f 53 45 54 5f 53 50 41 52 53 45 20  SCTL_SET_SPARSE 
2e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e20: 20 20 20 20 3d 20 43 54 4c 5f 43 4f 44 45 5f 54      = CTL_CODE_T
2e30: 21 28 46 49 4c 45 5f 44 45 56 49 43 45 5f 46 49  !(FILE_DEVICE_FI
2e40: 4c 45 5f 53 59 53 54 45 4d 2c 20 34 39 2c 20 4d  LE_SYSTEM, 49, M
2e50: 45 54 48 4f 44 5f 42 55 46 46 45 52 45 44 2c 20  ETHOD_BUFFERED, 
2e60: 46 49 4c 45 5f 53 50 45 43 49 41 4c 5f 41 43 43  FILE_SPECIAL_ACC
2e70: 45 53 53 29 2c 0a 7d 0a 0a 65 6e 75 6d 20 3a 20  ESS),.}..enum : 
2e80: 42 59 54 45 20 7b 0a 09 50 41 52 54 49 54 49 4f  BYTE {..PARTITIO
2e90: 4e 5f 45 4e 54 52 59 5f 55 4e 55 53 45 44 2c 0a  N_ENTRY_UNUSED,.
2ea0: 09 50 41 52 54 49 54 49 4f 4e 5f 46 41 54 5f 31  .PARTITION_FAT_1
2eb0: 32 2c 0a 09 50 41 52 54 49 54 49 4f 4e 5f 58 45  2,..PARTITION_XE
2ec0: 4e 49 58 5f 31 2c 0a 09 50 41 52 54 49 54 49 4f  NIX_1,..PARTITIO
2ed0: 4e 5f 58 45 4e 49 58 5f 32 2c 0a 09 50 41 52 54  N_XENIX_2,..PART
2ee0: 49 54 49 4f 4e 5f 46 41 54 5f 31 36 2c 0a 09 50  ITION_FAT_16,..P
2ef0: 41 52 54 49 54 49 4f 4e 5f 45 58 54 45 4e 44 45  ARTITION_EXTENDE
2f00: 44 2c 0a 09 50 41 52 54 49 54 49 4f 4e 5f 48 55  D,..PARTITION_HU
2f10: 47 45 2c 0a 09 50 41 52 54 49 54 49 4f 4e 5f 49  GE,..PARTITION_I
2f20: 46 53 2c 20 20 20 20 20 20 20 20 20 2f 2f 20 3d  FS,         // =
2f30: 20 30 78 30 37 0a 09 50 41 52 54 49 54 49 4f 4e   0x07..PARTITION
2f40: 5f 46 41 54 33 32 20 20 20 20 20 20 20 20 20 20  _FAT32          
2f50: 20 3d 20 30 78 30 42 2c 0a 09 50 41 52 54 49 54   = 0x0B,..PARTIT
2f60: 49 4f 4e 5f 46 41 54 33 32 5f 58 49 4e 54 31 33  ION_FAT32_XINT13
2f70: 20 20 20 20 3d 20 30 78 30 43 2c 0a 09 50 41 52      = 0x0C,..PAR
2f80: 54 49 54 49 4f 4e 5f 58 49 4e 54 31 33 20 20 20  TITION_XINT13   
2f90: 20 20 20 20 20 20 20 3d 20 30 78 30 45 2c 0a 09         = 0x0E,..
2fa0: 50 41 52 54 49 54 49 4f 4e 5f 58 49 4e 54 31 33  PARTITION_XINT13
2fb0: 5f 45 58 54 45 4e 44 45 44 20 3d 20 30 78 30 46  _EXTENDED = 0x0F
2fc0: 2c 0a 09 50 41 52 54 49 54 49 4f 4e 5f 50 52 45  ,..PARTITION_PRE
2fd0: 50 20 20 20 20 20 20 20 20 20 20 20 20 3d 20 30  P            = 0
2fe0: 78 34 31 2c 0a 09 50 41 52 54 49 54 49 4f 4e 5f  x41,..PARTITION_
2ff0: 4c 44 4d 20 20 20 20 20 20 20 20 20 20 20 20 20  LDM             
3000: 3d 20 30 78 34 32 2c 0a 09 50 41 52 54 49 54 49  = 0x42,..PARTITI
3010: 4f 4e 5f 55 4e 49 58 20 20 20 20 20 20 20 20 20  ON_UNIX         
3020: 20 20 20 3d 20 30 78 36 33 0a 7d 0a 0a 63 6f 6e     = 0x63.}..con
3030: 73 74 20 42 59 54 45 0a 09 50 41 52 54 49 54 49  st BYTE..PARTITI
3040: 4f 4e 5f 4e 54 46 54 20 3d 20 30 78 38 30 2c 0a  ON_NTFT = 0x80,.
3050: 09 56 41 4c 49 44 5f 4e 54 46 54 20 20 20 20 20  .VALID_NTFT     
3060: 3d 20 30 78 43 30 3b 0a 0a 65 6e 75 6d 20 7b 0a  = 0xC0;..enum {.
3070: 09 53 45 52 49 41 4c 5f 4c 53 52 4d 53 54 5f 45  .SERIAL_LSRMST_E
3080: 53 43 41 50 45 2c 0a 09 53 45 52 49 41 4c 5f 4c  SCAPE,..SERIAL_L
3090: 53 52 4d 53 54 5f 4c 53 52 5f 44 41 54 41 2c 0a  SRMST_LSR_DATA,.
30a0: 09 53 45 52 49 41 4c 5f 4c 53 52 4d 53 54 5f 4c  .SERIAL_LSRMST_L
30b0: 53 52 5f 4e 4f 44 41 54 41 2c 0a 09 53 45 52 49  SR_NODATA,..SERI
30c0: 41 4c 5f 4c 53 52 4d 53 54 5f 4d 53 54 0a 7d 0a  AL_LSRMST_MST.}.
30d0: 0a 65 6e 75 6d 20 7b 0a 09 44 49 53 4b 5f 4c 4f  .enum {..DISK_LO
30e0: 47 47 49 4e 47 5f 53 54 41 52 54 2c 0a 09 44 49  GGING_START,..DI
30f0: 53 4b 5f 4c 4f 47 47 49 4e 47 5f 53 54 4f 50 2c  SK_LOGGING_STOP,
3100: 0a 09 44 49 53 4b 5f 4c 4f 47 47 49 4e 47 5f 44  ..DISK_LOGGING_D
3110: 55 4d 50 2c 0a 09 44 49 53 4b 5f 42 49 4e 4e 49  UMP,..DISK_BINNI
3120: 4e 47 0a 7d 0a 0a 61 6c 69 61 73 20 57 4f 52 44  NG.}..alias WORD
3130: 20 42 41 44 5f 54 52 41 43 4b 5f 4e 55 4d 42 45   BAD_TRACK_NUMBE
3140: 52 3b 0a 61 6c 69 61 73 20 57 4f 52 44 2a 20 50  R;.alias WORD* P
3150: 42 41 44 5f 54 52 41 43 4b 5f 4e 55 4d 42 45 52  BAD_TRACK_NUMBER
3160: 3b 0a 0a 65 6e 75 6d 20 42 49 4e 5f 54 59 50 45  ;..enum BIN_TYPE
3170: 53 20 7b 0a 09 52 65 71 75 65 73 74 53 69 7a 65  S {..RequestSize
3180: 2c 20 52 65 71 75 65 73 74 4c 6f 63 61 74 69 6f  , RequestLocatio
3190: 6e 0a 7d 0a 0a 73 74 72 75 63 74 20 42 49 4e 5f  n.}..struct BIN_
31a0: 52 41 4e 47 45 20 7b 0a 09 4c 41 52 47 45 5f 49  RANGE {..LARGE_I
31b0: 4e 54 45 47 45 52 20 53 74 61 72 74 56 61 6c 75  NTEGER StartValu
31c0: 65 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45  e;..LARGE_INTEGE
31d0: 52 20 4c 65 6e 67 74 68 3b 0a 7d 0a 61 6c 69 61  R Length;.}.alia
31e0: 73 20 42 49 4e 5f 52 41 4e 47 45 2a 20 50 42 49  s BIN_RANGE* PBI
31f0: 4e 5f 52 41 4e 47 45 3b 0a 0a 73 74 72 75 63 74  N_RANGE;..struct
3200: 20 42 49 4e 5f 43 4f 55 4e 54 20 7b 0a 09 42 49   BIN_COUNT {..BI
3210: 4e 5f 52 41 4e 47 45 20 42 69 6e 52 61 6e 67 65  N_RANGE BinRange
3220: 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 42 69 6e  ;..DWORD     Bin
3230: 43 6f 75 6e 74 3b 0a 7d 0a 61 6c 69 61 73 20 42  Count;.}.alias B
3240: 49 4e 5f 43 4f 55 4e 54 2a 20 50 42 49 4e 5f 43  IN_COUNT* PBIN_C
3250: 4f 55 4e 54 3b 0a 0a 73 74 72 75 63 74 20 42 49  OUNT;..struct BI
3260: 4e 5f 52 45 53 55 4c 54 53 20 7b 0a 09 44 57 4f  N_RESULTS {..DWO
3270: 52 44 20 20 20 20 20 4e 75 6d 62 65 72 4f 66 42  RD     NumberOfB
3280: 69 6e 73 3b 0a 09 42 49 4e 5f 43 4f 55 4e 54 20  ins;..BIN_COUNT 
3290: 5f 42 69 6e 43 6f 75 6e 74 73 3b 0a 0a 09 42 49  _BinCounts;...BI
32a0: 4e 5f 43 4f 55 4e 54 2a 20 42 69 6e 43 6f 75 6e  N_COUNT* BinCoun
32b0: 74 73 28 29 20 7b 20 72 65 74 75 72 6e 20 26 5f  ts() { return &_
32c0: 42 69 6e 43 6f 75 6e 74 73 3b 20 7d 0a 7d 0a 61  BinCounts; }.}.a
32d0: 6c 69 61 73 20 42 49 4e 5f 52 45 53 55 4c 54 53  lias BIN_RESULTS
32e0: 2a 20 50 42 49 4e 5f 52 45 53 55 4c 54 53 3b 0a  * PBIN_RESULTS;.
32f0: 0a 65 6e 75 6d 20 50 41 52 54 49 54 49 4f 4e 5f  .enum PARTITION_
3300: 53 54 59 4c 45 20 7b 0a 09 50 41 52 54 49 54 49  STYLE {..PARTITI
3310: 4f 4e 5f 53 54 59 4c 45 5f 4d 42 52 2c 0a 09 50  ON_STYLE_MBR,..P
3320: 41 52 54 49 54 49 4f 4e 5f 53 54 59 4c 45 5f 47  ARTITION_STYLE_G
3330: 50 54 2c 0a 09 50 41 52 54 49 54 49 4f 4e 5f 53  PT,..PARTITION_S
3340: 54 59 4c 45 5f 52 41 57 0a 7d 0a 0a 73 74 72 75  TYLE_RAW.}..stru
3350: 63 74 20 43 52 45 41 54 45 5f 44 49 53 4b 5f 47  ct CREATE_DISK_G
3360: 50 54 20 7b 0a 09 47 55 49 44 20 20 44 69 73 6b  PT {..GUID  Disk
3370: 49 64 3b 0a 09 44 57 4f 52 44 20 4d 61 78 50 61  Id;..DWORD MaxPa
3380: 72 74 69 74 69 6f 6e 43 6f 75 6e 74 3b 0a 7d 0a  rtitionCount;.}.
3390: 61 6c 69 61 73 20 43 52 45 41 54 45 5f 44 49 53  alias CREATE_DIS
33a0: 4b 5f 47 50 54 2a 20 50 43 52 45 41 54 45 5f 44  K_GPT* PCREATE_D
33b0: 49 53 4b 5f 47 50 54 3b 0a 0a 73 74 72 75 63 74  ISK_GPT;..struct
33c0: 20 43 52 45 41 54 45 5f 44 49 53 4b 5f 4d 42 52   CREATE_DISK_MBR
33d0: 20 7b 0a 09 44 57 4f 52 44 20 53 69 67 6e 61 74   {..DWORD Signat
33e0: 75 72 65 3b 0a 7d 0a 61 6c 69 61 73 20 43 52 45  ure;.}.alias CRE
33f0: 41 54 45 5f 44 49 53 4b 5f 4d 42 52 2a 20 50 43  ATE_DISK_MBR* PC
3400: 52 45 41 54 45 5f 44 49 53 4b 5f 4d 42 52 3b 0a  REATE_DISK_MBR;.
3410: 0a 73 74 72 75 63 74 20 43 52 45 41 54 45 5f 44  .struct CREATE_D
3420: 49 53 4b 20 7b 0a 09 50 41 52 54 49 54 49 4f 4e  ISK {..PARTITION
3430: 5f 53 54 59 4c 45 20 50 61 72 74 69 74 69 6f 6e  _STYLE Partition
3440: 53 74 79 6c 65 3b 0a 09 75 6e 69 6f 6e 20 7b 0a  Style;..union {.
3450: 09 09 43 52 45 41 54 45 5f 44 49 53 4b 5f 4d 42  ..CREATE_DISK_MB
3460: 52 20 4d 62 72 3b 0a 09 09 43 52 45 41 54 45 5f  R Mbr;...CREATE_
3470: 44 49 53 4b 5f 47 50 54 20 47 70 74 3b 0a 09 7d  DISK_GPT Gpt;..}
3480: 0a 7d 0a 61 6c 69 61 73 20 43 52 45 41 54 45 5f  .}.alias CREATE_
3490: 44 49 53 4b 2a 20 50 43 52 45 41 54 45 5f 44 49  DISK* PCREATE_DI
34a0: 53 4b 3b 0a 0a 65 6e 75 6d 20 44 49 53 4b 5f 43  SK;..enum DISK_C
34b0: 41 43 48 45 5f 52 45 54 45 4e 54 49 4f 4e 5f 50  ACHE_RETENTION_P
34c0: 52 49 4f 52 49 54 59 20 7b 0a 09 45 71 75 61 6c  RIORITY {..Equal
34d0: 50 72 69 6f 72 69 74 79 2c 0a 09 4b 65 65 70 50  Priority,..KeepP
34e0: 72 65 66 65 74 63 68 65 64 44 61 74 61 2c 0a 09  refetchedData,..
34f0: 4b 65 65 70 52 65 61 64 44 61 74 61 0a 7d 0a 0a  KeepReadData.}..
3500: 73 74 72 75 63 74 20 44 49 53 4b 5f 43 41 43 48  struct DISK_CACH
3510: 45 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 20 7b 0a  E_INFORMATION {.
3520: 09 42 4f 4f 4c 45 41 4e 20 50 61 72 61 6d 65 74  .BOOLEAN Paramet
3530: 65 72 73 53 61 76 61 62 6c 65 3b 0a 09 42 4f 4f  ersSavable;..BOO
3540: 4c 45 41 4e 20 52 65 61 64 43 61 63 68 65 45 6e  LEAN ReadCacheEn
3550: 61 62 6c 65 64 3b 0a 09 42 4f 4f 4c 45 41 4e 20  abled;..BOOLEAN 
3560: 57 72 69 74 65 43 61 63 68 65 45 6e 61 62 6c 65  WriteCacheEnable
3570: 64 3b 0a 09 44 49 53 4b 5f 43 41 43 48 45 5f 52  d;..DISK_CACHE_R
3580: 45 54 45 4e 54 49 4f 4e 5f 50 52 49 4f 52 49 54  ETENTION_PRIORIT
3590: 59 20 52 65 61 64 52 65 74 65 6e 74 69 6f 6e 50  Y ReadRetentionP
35a0: 72 69 6f 72 69 74 79 3b 0a 09 44 49 53 4b 5f 43  riority;..DISK_C
35b0: 41 43 48 45 5f 52 45 54 45 4e 54 49 4f 4e 5f 50  ACHE_RETENTION_P
35c0: 52 49 4f 52 49 54 59 20 57 72 69 74 65 52 65 74  RIORITY WriteRet
35d0: 65 6e 74 69 6f 6e 50 72 69 6f 72 69 74 79 3b 0a  entionPriority;.
35e0: 09 57 4f 52 44 20 20 20 20 44 69 73 61 62 6c 65  .WORD    Disable
35f0: 50 72 65 66 65 74 63 68 54 72 61 6e 73 66 65 72  PrefetchTransfer
3600: 4c 65 6e 67 74 68 3b 0a 09 42 4f 4f 4c 45 41 4e  Length;..BOOLEAN
3610: 20 50 72 65 66 65 74 63 68 53 63 61 6c 61 72 3b   PrefetchScalar;
3620: 0a 09 75 6e 69 6f 6e 20 7b 0a 09 09 73 74 72 75  ..union {...stru
3630: 63 74 20 5f 53 63 61 6c 61 72 50 72 65 66 65 74  ct _ScalarPrefet
3640: 63 68 20 7b 0a 09 09 09 57 4f 52 44 20 4d 69 6e  ch {....WORD Min
3650: 69 6d 75 6d 3b 0a 09 09 09 57 4f 52 44 20 4d 61  imum;....WORD Ma
3660: 78 69 6d 75 6d 3b 0a 09 09 09 57 4f 52 44 20 4d  ximum;....WORD M
3670: 61 78 69 6d 75 6d 42 6c 6f 63 6b 73 3b 0a 09 09  aximumBlocks;...
3680: 7d 0a 09 09 5f 53 63 61 6c 61 72 50 72 65 66 65  }..._ScalarPrefe
3690: 74 63 68 20 53 63 61 6c 61 72 50 72 65 66 65 74  tch ScalarPrefet
36a0: 63 68 3b 0a 09 09 73 74 72 75 63 74 20 5f 42 6c  ch;...struct _Bl
36b0: 6f 63 6b 50 72 65 66 65 74 63 68 20 7b 0a 09 09  ockPrefetch {...
36c0: 09 57 4f 52 44 20 4d 69 6e 69 6d 75 6d 3b 0a 09  .WORD Minimum;..
36d0: 09 09 57 4f 52 44 20 4d 61 78 69 6d 75 6d 3b 0a  ..WORD Maximum;.
36e0: 09 09 7d 0a 09 09 5f 42 6c 6f 63 6b 50 72 65 66  ..}..._BlockPref
36f0: 65 74 63 68 20 42 6c 6f 63 6b 50 72 65 66 65 74  etch BlockPrefet
3700: 63 68 3b 0a 09 7d 0a 7d 0a 61 6c 69 61 73 20 44  ch;..}.}.alias D
3710: 49 53 4b 5f 43 41 43 48 45 5f 49 4e 46 4f 52 4d  ISK_CACHE_INFORM
3720: 41 54 49 4f 4e 2a 20 50 44 49 53 4b 5f 43 41 43  ATION* PDISK_CAC
3730: 48 45 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 3b 0a  HE_INFORMATION;.
3740: 0a 65 6e 75 6d 20 44 45 54 45 43 54 49 4f 4e 5f  .enum DETECTION_
3750: 54 59 50 45 20 7b 0a 09 44 65 74 65 63 74 4e 6f  TYPE {..DetectNo
3760: 6e 65 2c 0a 09 44 65 74 65 63 74 49 6e 74 31 33  ne,..DetectInt13
3770: 2c 0a 09 44 65 74 65 63 74 45 78 49 6e 74 31 33  ,..DetectExInt13
3780: 0a 7d 0a 0a 73 74 72 75 63 74 20 44 49 53 4b 5f  .}..struct DISK_
3790: 49 4e 54 31 33 5f 49 4e 46 4f 20 7b 0a 09 57 4f  INT13_INFO {..WO
37a0: 52 44 20 20 44 72 69 76 65 53 65 6c 65 63 74 3b  RD  DriveSelect;
37b0: 0a 09 44 57 4f 52 44 20 4d 61 78 43 79 6c 69 6e  ..DWORD MaxCylin
37c0: 64 65 72 73 3b 0a 09 57 4f 52 44 20 20 53 65 63  ders;..WORD  Sec
37d0: 74 6f 72 73 50 65 72 54 72 61 63 6b 3b 0a 09 57  torsPerTrack;..W
37e0: 4f 52 44 20 20 4d 61 78 48 65 61 64 73 3b 0a 09  ORD  MaxHeads;..
37f0: 57 4f 52 44 20 20 4e 75 6d 62 65 72 44 72 69 76  WORD  NumberDriv
3800: 65 73 3b 0a 09 7d 0a 61 6c 69 61 73 20 44 49 53  es;..}.alias DIS
3810: 4b 5f 49 4e 54 31 33 5f 49 4e 46 4f 2a 20 50 44  K_INT13_INFO* PD
3820: 49 53 4b 5f 49 4e 54 31 33 5f 49 4e 46 4f 3b 0a  ISK_INT13_INFO;.
3830: 0a 73 74 72 75 63 74 20 44 49 53 4b 5f 45 58 5f  .struct DISK_EX_
3840: 49 4e 54 31 33 5f 49 4e 46 4f 20 7b 0a 09 57 4f  INT13_INFO {..WO
3850: 52 44 20 20 20 20 45 78 42 75 66 66 65 72 53 69  RD    ExBufferSi
3860: 7a 65 3b 0a 09 57 4f 52 44 20 20 20 20 45 78 46  ze;..WORD    ExF
3870: 6c 61 67 73 3b 0a 09 44 57 4f 52 44 20 20 20 45  lags;..DWORD   E
3880: 78 43 79 6c 69 6e 64 65 72 73 3b 0a 09 44 57 4f  xCylinders;..DWO
3890: 52 44 20 20 20 45 78 48 65 61 64 73 3b 0a 09 44  RD   ExHeads;..D
38a0: 57 4f 52 44 20 20 20 45 78 53 65 63 74 6f 72 73  WORD   ExSectors
38b0: 50 65 72 54 72 61 63 6b 3b 0a 09 44 57 4f 52 44  PerTrack;..DWORD
38c0: 36 34 20 45 78 53 65 63 74 6f 72 73 50 65 72 44  64 ExSectorsPerD
38d0: 72 69 76 65 3b 0a 09 57 4f 52 44 20 20 20 20 45  rive;..WORD    E
38e0: 78 53 65 63 74 6f 72 53 69 7a 65 3b 0a 09 57 4f  xSectorSize;..WO
38f0: 52 44 20 20 20 20 45 78 52 65 73 65 72 76 65 64  RD    ExReserved
3900: 3b 0a 7d 0a 61 6c 69 61 73 20 44 49 53 4b 5f 45  ;.}.alias DISK_E
3910: 58 5f 49 4e 54 31 33 5f 49 4e 46 4f 2a 20 50 44  X_INT13_INFO* PD
3920: 49 53 4b 5f 45 58 5f 49 4e 54 31 33 5f 49 4e 46  ISK_EX_INT13_INF
3930: 4f 3b 0a 0a 73 74 72 75 63 74 20 44 49 53 4b 5f  O;..struct DISK_
3940: 44 45 54 45 43 54 49 4f 4e 5f 49 4e 46 4f 20 7b  DETECTION_INFO {
3950: 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20  ..DWORD         
3960: 20 20 20 20 20 53 69 7a 65 4f 66 44 65 74 65 63       SizeOfDetec
3970: 74 49 6e 66 6f 3b 0a 09 44 45 54 45 43 54 49 4f  tInfo;..DETECTIO
3980: 4e 5f 54 59 50 45 20 20 20 20 20 44 65 74 65 63  N_TYPE     Detec
3990: 74 69 6f 6e 54 79 70 65 3b 0a 09 44 49 53 4b 5f  tionType;..DISK_
39a0: 49 4e 54 31 33 5f 49 4e 46 4f 20 20 20 20 49 6e  INT13_INFO    In
39b0: 74 31 33 3b 0a 09 44 49 53 4b 5f 45 58 5f 49 4e  t13;..DISK_EX_IN
39c0: 54 31 33 5f 49 4e 46 4f 20 45 78 49 6e 74 31 33  T13_INFO ExInt13
39d0: 3b 0a 7d 0a 61 6c 69 61 73 20 44 49 53 4b 5f 44  ;.}.alias DISK_D
39e0: 45 54 45 43 54 49 4f 4e 5f 49 4e 46 4f 2a 20 50  ETECTION_INFO* P
39f0: 44 49 53 4b 5f 44 45 54 45 43 54 49 4f 4e 5f 49  DISK_DETECTION_I
3a00: 4e 46 4f 3b 0a 0a 65 6e 75 6d 20 4d 45 44 49 41  NFO;..enum MEDIA
3a10: 5f 54 59 50 45 20 7b 0a 09 55 6e 6b 6e 6f 77 6e  _TYPE {..Unknown
3a20: 2c 0a 09 46 35 5f 31 50 74 32 5f 35 31 32 2c 0a  ,..F5_1Pt2_512,.
3a30: 09 46 33 5f 31 50 74 34 34 5f 35 31 32 2c 0a 09  .F3_1Pt44_512,..
3a40: 46 33 5f 32 50 74 38 38 5f 35 31 32 2c 0a 09 46  F3_2Pt88_512,..F
3a50: 33 5f 32 30 50 74 38 5f 35 31 32 2c 0a 09 46 33  3_20Pt8_512,..F3
3a60: 5f 37 32 30 5f 35 31 32 2c 0a 09 46 35 5f 33 36  _720_512,..F5_36
3a70: 30 5f 35 31 32 2c 0a 09 46 35 5f 33 32 30 5f 35  0_512,..F5_320_5
3a80: 31 32 2c 0a 09 46 35 5f 33 32 30 5f 31 30 32 34  12,..F5_320_1024
3a90: 2c 0a 09 46 35 5f 31 38 30 5f 35 31 32 2c 0a 09  ,..F5_180_512,..
3aa0: 46 35 5f 31 36 30 5f 35 31 32 2c 0a 09 52 65 6d  F5_160_512,..Rem
3ab0: 6f 76 61 62 6c 65 4d 65 64 69 61 2c 0a 09 46 69  ovableMedia,..Fi
3ac0: 78 65 64 4d 65 64 69 61 2c 0a 09 46 33 5f 31 32  xedMedia,..F3_12
3ad0: 30 4d 5f 35 31 32 2c 0a 09 46 33 5f 36 34 30 5f  0M_512,..F3_640_
3ae0: 35 31 32 2c 0a 09 46 35 5f 36 34 30 5f 35 31 32  512,..F5_640_512
3af0: 2c 0a 09 46 35 5f 37 32 30 5f 35 31 32 2c 0a 09  ,..F5_720_512,..
3b00: 46 33 5f 31 50 74 32 5f 35 31 32 2c 0a 09 46 33  F3_1Pt2_512,..F3
3b10: 5f 31 50 74 32 33 5f 31 30 32 34 2c 0a 09 46 35  _1Pt23_1024,..F5
3b20: 5f 31 50 74 32 33 5f 31 30 32 34 2c 0a 09 46 33  _1Pt23_1024,..F3
3b30: 5f 31 32 38 4d 62 5f 35 31 32 2c 0a 09 46 33 5f  _128Mb_512,..F3_
3b40: 32 33 30 4d 62 5f 35 31 32 2c 0a 09 46 38 5f 32  230Mb_512,..F8_2
3b50: 35 36 5f 31 32 38 2c 0a 09 46 33 5f 32 30 30 4d  56_128,..F3_200M
3b60: 62 5f 35 31 32 2c 0a 09 46 33 5f 32 34 30 4d 5f  b_512,..F3_240M_
3b70: 35 31 32 2c 0a 09 46 33 5f 33 32 4d 5f 35 31 32  512,..F3_32M_512
3b80: 0a 7d 0a 61 6c 69 61 73 20 4d 45 44 49 41 5f 54  .}.alias MEDIA_T
3b90: 59 50 45 2a 20 50 4d 45 44 49 41 5f 54 59 50 45  YPE* PMEDIA_TYPE
3ba0: 3b 0a 0a 73 74 72 75 63 74 20 44 49 53 4b 5f 47  ;..struct DISK_G
3bb0: 45 4f 4d 45 54 52 59 20 7b 0a 09 4c 41 52 47 45  EOMETRY {..LARGE
3bc0: 5f 49 4e 54 45 47 45 52 20 43 79 6c 69 6e 64 65  _INTEGER Cylinde
3bd0: 72 73 3b 0a 09 4d 45 44 49 41 5f 54 59 50 45 20  rs;..MEDIA_TYPE 
3be0: 20 20 20 4d 65 64 69 61 54 79 70 65 3b 0a 09 44     MediaType;..D
3bf0: 57 4f 52 44 20 20 20 20 20 20 20 20 20 54 72 61  WORD         Tra
3c00: 63 6b 73 50 65 72 43 79 6c 69 6e 64 65 72 3b 0a  cksPerCylinder;.
3c10: 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 53  .DWORD         S
3c20: 65 63 74 6f 72 73 50 65 72 54 72 61 63 6b 3b 0a  ectorsPerTrack;.
3c30: 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 42  .DWORD         B
3c40: 79 74 65 73 50 65 72 53 65 63 74 6f 72 3b 0a 7d  ytesPerSector;.}
3c50: 0a 61 6c 69 61 73 20 44 49 53 4b 5f 47 45 4f 4d  .alias DISK_GEOM
3c60: 45 54 52 59 2a 20 50 44 49 53 4b 5f 47 45 4f 4d  ETRY* PDISK_GEOM
3c70: 45 54 52 59 3b 0a 0a 73 74 72 75 63 74 20 44 49  ETRY;..struct DI
3c80: 53 4b 5f 47 45 4f 4d 45 54 52 59 5f 45 58 20 7b  SK_GEOMETRY_EX {
3c90: 0a 09 44 49 53 4b 5f 47 45 4f 4d 45 54 52 59 20  ..DISK_GEOMETRY 
3ca0: 47 65 6f 6d 65 74 72 79 3b 0a 09 4c 41 52 47 45  Geometry;..LARGE
3cb0: 5f 49 4e 54 45 47 45 52 20 44 69 73 6b 53 69 7a  _INTEGER DiskSiz
3cc0: 65 3b 0a 09 42 59 54 45 20 20 20 20 20 20 20 20  e;..BYTE        
3cd0: 20 20 5f 44 61 74 61 3b 0a 0a 09 42 59 54 45 2a    _Data;...BYTE*
3ce0: 20 44 61 74 61 28 29 20 7b 20 72 65 74 75 72 6e   Data() { return
3cf0: 20 26 5f 44 61 74 61 3b 20 7d 0a 7d 0a 61 6c 69   &_Data; }.}.ali
3d00: 61 73 20 44 49 53 4b 5f 47 45 4f 4d 45 54 52 59  as DISK_GEOMETRY
3d10: 5f 45 58 2a 20 50 44 49 53 4b 5f 47 45 4f 4d 45  _EX* PDISK_GEOME
3d20: 54 52 59 5f 45 58 3b 0a 0a 73 74 72 75 63 74 20  TRY_EX;..struct 
3d30: 44 49 53 4b 5f 47 52 4f 57 5f 50 41 52 54 49 54  DISK_GROW_PARTIT
3d40: 49 4f 4e 20 7b 0a 09 44 57 4f 52 44 20 20 20 20  ION {..DWORD    
3d50: 20 20 20 20 20 50 61 72 74 69 74 69 6f 6e 4e 75       PartitionNu
3d60: 6d 62 65 72 3b 0a 09 4c 41 52 47 45 5f 49 4e 54  mber;..LARGE_INT
3d70: 45 47 45 52 20 42 79 74 65 73 54 6f 47 72 6f 77  EGER BytesToGrow
3d80: 3b 0a 7d 0a 61 6c 69 61 73 20 44 49 53 4b 5f 47  ;.}.alias DISK_G
3d90: 52 4f 57 5f 50 41 52 54 49 54 49 4f 4e 2a 20 50  ROW_PARTITION* P
3da0: 44 49 53 4b 5f 47 52 4f 57 5f 50 41 52 54 49 54  DISK_GROW_PARTIT
3db0: 49 4f 4e 3b 0a 0a 73 74 72 75 63 74 20 44 49 53  ION;..struct DIS
3dc0: 4b 5f 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f  K_PARTITION_INFO
3dd0: 20 7b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20   {..DWORD       
3de0: 20 20 20 20 53 69 7a 65 4f 66 50 61 72 74 69 74      SizeOfPartit
3df0: 69 6f 6e 49 6e 66 6f 3b 0a 09 50 41 52 54 49 54  ionInfo;..PARTIT
3e00: 49 4f 4e 5f 53 54 59 4c 45 20 50 61 72 74 69 74  ION_STYLE Partit
3e10: 69 6f 6e 53 74 79 6c 65 3b 0a 09 75 6e 69 6f 6e  ionStyle;..union
3e20: 20 7b 0a 09 09 2f 2f 73 74 72 75 63 74 20 7b 0a   {...//struct {.
3e30: 09 09 09 44 57 4f 52 44 20 53 69 67 6e 61 74 75  ...DWORD Signatu
3e40: 72 65 3b 0a 09 09 2f 2f 7d 20 4d 62 72 3b 0a 09  re;...//} Mbr;..
3e50: 09 2f 2f 73 74 72 75 63 74 20 7b 0a 09 09 09 47  .//struct {....G
3e60: 55 49 44 20 44 69 73 6b 49 64 3b 0a 09 09 2f 2f  UID DiskId;...//
3e70: 7d 20 47 70 74 3b 0a 09 7d 0a 7d 0a 61 6c 69 61  } Gpt;..}.}.alia
3e80: 73 20 44 49 53 4b 5f 50 41 52 54 49 54 49 4f 4e  s DISK_PARTITION
3e90: 5f 49 4e 46 4f 2a 20 50 44 49 53 4b 5f 50 41 52  _INFO* PDISK_PAR
3ea0: 54 49 54 49 4f 4e 5f 49 4e 46 4f 3b 0a 0a 73 74  TITION_INFO;..st
3eb0: 72 75 63 74 20 44 49 53 4b 5f 50 45 52 46 4f 52  ruct DISK_PERFOR
3ec0: 4d 41 4e 43 45 20 7b 0a 09 4c 41 52 47 45 5f 49  MANCE {..LARGE_I
3ed0: 4e 54 45 47 45 52 20 42 79 74 65 73 52 65 61 64  NTEGER BytesRead
3ee0: 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52  ;..LARGE_INTEGER
3ef0: 20 42 79 74 65 73 57 72 69 74 74 65 6e 3b 0a 09   BytesWritten;..
3f00: 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20 52 65  LARGE_INTEGER Re
3f10: 61 64 54 69 6d 65 3b 0a 09 4c 41 52 47 45 5f 49  adTime;..LARGE_I
3f20: 4e 54 45 47 45 52 20 57 72 69 74 65 54 69 6d 65  NTEGER WriteTime
3f30: 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20  ;..DWORD        
3f40: 20 52 65 61 64 43 6f 75 6e 74 3b 0a 09 44 57 4f   ReadCount;..DWO
3f50: 52 44 20 20 20 20 20 20 20 20 20 57 72 69 74 65  RD         Write
3f60: 43 6f 75 6e 74 3b 0a 09 44 57 4f 52 44 20 20 20  Count;..DWORD   
3f70: 20 20 20 20 20 20 51 75 65 75 65 44 65 70 74 68        QueueDepth
3f80: 3b 0a 7d 0a 61 6c 69 61 73 20 44 49 53 4b 5f 50  ;.}.alias DISK_P
3f90: 45 52 46 4f 52 4d 41 4e 43 45 2a 20 50 44 49 53  ERFORMANCE* PDIS
3fa0: 4b 5f 50 45 52 46 4f 52 4d 41 4e 43 45 3b 0a 0a  K_PERFORMANCE;..
3fb0: 73 74 72 75 63 74 20 44 49 53 4b 5f 52 45 43 4f  struct DISK_RECO
3fc0: 52 44 20 7b 0a 09 4c 41 52 47 45 5f 49 4e 54 45  RD {..LARGE_INTE
3fd0: 47 45 52 20 42 79 74 65 4f 66 66 73 65 74 3b 0a  GER ByteOffset;.
3fe0: 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20 53  .LARGE_INTEGER S
3ff0: 74 61 72 74 54 69 6d 65 3b 0a 09 4c 41 52 47 45  tartTime;..LARGE
4000: 5f 49 4e 54 45 47 45 52 20 45 6e 64 54 69 6d 65  _INTEGER EndTime
4010: 3b 0a 09 50 56 4f 49 44 20 20 20 20 20 20 20 20  ;..PVOID        
4020: 20 56 69 72 74 75 61 6c 41 64 64 72 65 73 73 3b   VirtualAddress;
4030: 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20 20  ..DWORD         
4040: 4e 75 6d 62 65 72 4f 66 42 79 74 65 73 3b 0a 09  NumberOfBytes;..
4050: 42 59 54 45 20 20 20 20 20 20 20 20 20 20 44 65  BYTE          De
4060: 76 69 63 65 4e 75 6d 62 65 72 3b 0a 09 42 4f 4f  viceNumber;..BOO
4070: 4c 45 41 4e 20 20 20 20 20 20 20 52 65 61 64 52  LEAN       ReadR
4080: 65 71 75 65 73 74 3b 0a 7d 0a 61 6c 69 61 73 20  equest;.}.alias 
4090: 44 49 53 4b 5f 52 45 43 4f 52 44 2a 20 50 44 49  DISK_RECORD* PDI
40a0: 53 4b 5f 52 45 43 4f 52 44 3b 0a 0a 73 74 72 75  SK_RECORD;..stru
40b0: 63 74 20 44 49 53 4b 5f 4c 4f 47 47 49 4e 47 20  ct DISK_LOGGING 
40c0: 7b 0a 09 42 59 54 45 20 20 46 75 6e 63 74 69 6f  {..BYTE  Functio
40d0: 6e 3b 0a 09 50 56 4f 49 44 20 42 75 66 66 65 72  n;..PVOID Buffer
40e0: 41 64 64 72 65 73 73 3b 0a 09 44 57 4f 52 44 20  Address;..DWORD 
40f0: 42 75 66 66 65 72 53 69 7a 65 3b 0a 7d 0a 61 6c  BufferSize;.}.al
4100: 69 61 73 20 44 49 53 4b 5f 4c 4f 47 47 49 4e 47  ias DISK_LOGGING
4110: 2a 20 50 44 49 53 4b 5f 4c 4f 47 47 49 4e 47 3b  * PDISK_LOGGING;
4120: 0a 0a 73 74 72 75 63 74 20 44 49 53 4b 51 55 4f  ..struct DISKQUO
4130: 54 41 5f 55 53 45 52 5f 49 4e 46 4f 52 4d 41 54  TA_USER_INFORMAT
4140: 49 4f 4e 20 7b 0a 09 4c 4f 4e 47 4c 4f 4e 47 20  ION {..LONGLONG 
4150: 51 75 6f 74 61 55 73 65 64 3b 0a 09 4c 4f 4e 47  QuotaUsed;..LONG
4160: 4c 4f 4e 47 20 51 75 6f 74 61 54 68 72 65 73 68  LONG QuotaThresh
4170: 6f 6c 64 3b 0a 09 4c 4f 4e 47 4c 4f 4e 47 20 51  old;..LONGLONG Q
4180: 75 6f 74 61 4c 69 6d 69 74 3b 0a 7d 0a 61 6c 69  uotaLimit;.}.ali
4190: 61 73 20 44 49 53 4b 51 55 4f 54 41 5f 55 53 45  as DISKQUOTA_USE
41a0: 52 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 2a 20 50  R_INFORMATION* P
41b0: 44 49 53 4b 51 55 4f 54 41 5f 55 53 45 52 5f 49  DISKQUOTA_USER_I
41c0: 4e 46 4f 52 4d 41 54 49 4f 4e 3b 0a 0a 73 74 72  NFORMATION;..str
41d0: 75 63 74 20 46 4f 52 4d 41 54 5f 50 41 52 41 4d  uct FORMAT_PARAM
41e0: 45 54 45 52 53 20 7b 0a 09 4d 45 44 49 41 5f 54  ETERS {..MEDIA_T
41f0: 59 50 45 20 4d 65 64 69 61 54 79 70 65 3b 0a 09  YPE MediaType;..
4200: 44 57 4f 52 44 20 20 20 20 20 20 53 74 61 72 74  DWORD      Start
4210: 43 79 6c 69 6e 64 65 72 4e 75 6d 62 65 72 3b 0a  CylinderNumber;.
4220: 09 44 57 4f 52 44 20 20 20 20 20 20 45 6e 64 43  .DWORD      EndC
4230: 79 6c 69 6e 64 65 72 4e 75 6d 62 65 72 3b 0a 09  ylinderNumber;..
4240: 44 57 4f 52 44 20 20 20 20 20 20 53 74 61 72 74  DWORD      Start
4250: 48 65 61 64 4e 75 6d 62 65 72 3b 0a 09 44 57 4f  HeadNumber;..DWO
4260: 52 44 20 20 20 20 20 20 45 6e 64 48 65 61 64 4e  RD      EndHeadN
4270: 75 6d 62 65 72 3b 0a 7d 0a 61 6c 69 61 73 20 46  umber;.}.alias F
4280: 4f 52 4d 41 54 5f 50 41 52 41 4d 45 54 45 52 53  ORMAT_PARAMETERS
4290: 2a 20 50 46 4f 52 4d 41 54 5f 50 41 52 41 4d 45  * PFORMAT_PARAME
42a0: 54 45 52 53 3b 0a 0a 73 74 72 75 63 74 20 46 4f  TERS;..struct FO
42b0: 52 4d 41 54 5f 45 58 5f 50 41 52 41 4d 45 54 45  RMAT_EX_PARAMETE
42c0: 52 53 20 7b 0a 09 4d 45 44 49 41 5f 54 59 50 45  RS {..MEDIA_TYPE
42d0: 20 4d 65 64 69 61 54 79 70 65 3b 0a 09 44 57 4f   MediaType;..DWO
42e0: 52 44 20 20 20 20 20 20 53 74 61 72 74 43 79 6c  RD      StartCyl
42f0: 69 6e 64 65 72 4e 75 6d 62 65 72 3b 0a 09 44 57  inderNumber;..DW
4300: 4f 52 44 20 20 20 20 20 20 45 6e 64 43 79 6c 69  ORD      EndCyli
4310: 6e 64 65 72 4e 75 6d 62 65 72 3b 0a 09 44 57 4f  nderNumber;..DWO
4320: 52 44 20 20 20 20 20 20 53 74 61 72 74 48 65 61  RD      StartHea
4330: 64 4e 75 6d 62 65 72 3b 0a 09 44 57 4f 52 44 20  dNumber;..DWORD 
4340: 20 20 20 20 20 45 6e 64 48 65 61 64 4e 75 6d 62       EndHeadNumb
4350: 65 72 3b 0a 09 57 4f 52 44 20 20 20 20 20 20 20  er;..WORD       
4360: 46 6f 72 6d 61 74 47 61 70 4c 65 6e 67 74 68 3b  FormatGapLength;
4370: 0a 09 57 4f 52 44 20 20 20 20 20 20 20 53 65 63  ..WORD       Sec
4380: 74 6f 72 73 50 65 72 54 72 61 63 6b 3b 0a 09 57  torsPerTrack;..W
4390: 4f 52 44 20 20 20 20 20 20 20 5f 53 65 63 74 6f  ORD       _Secto
43a0: 72 4e 75 6d 62 65 72 3b 0a 0a 09 57 4f 52 44 2a  rNumber;...WORD*
43b0: 20 53 65 63 74 6f 72 4e 75 6d 62 65 72 28 29 20   SectorNumber() 
43c0: 7b 20 72 65 74 75 72 6e 20 26 5f 53 65 63 74 6f  { return &_Secto
43d0: 72 4e 75 6d 62 65 72 3b 20 7d 0a 7d 0a 61 6c 69  rNumber; }.}.ali
43e0: 61 73 20 46 4f 52 4d 41 54 5f 45 58 5f 50 41 52  as FORMAT_EX_PAR
43f0: 41 4d 45 54 45 52 53 2a 20 50 46 4f 52 4d 41 54  AMETERS* PFORMAT
4400: 5f 45 58 5f 50 41 52 41 4d 45 54 45 52 53 3b 0a  _EX_PARAMETERS;.
4410: 0a 73 74 72 75 63 74 20 47 45 54 5f 4c 45 4e 47  .struct GET_LENG
4420: 54 48 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 20 7b  TH_INFORMATION {
4430: 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20  ..LARGE_INTEGER 
4440: 4c 65 6e 67 74 68 3b 0a 7d 0a 0a 73 74 72 75 63  Length;.}..struc
4450: 74 20 48 49 53 54 4f 47 52 41 4d 5f 42 55 43 4b  t HISTOGRAM_BUCK
4460: 45 54 20 7b 0a 09 44 57 4f 52 44 20 52 65 61 64  ET {..DWORD Read
4470: 73 3b 0a 09 44 57 4f 52 44 20 57 72 69 74 65 73  s;..DWORD Writes
4480: 3b 0a 7d 0a 61 6c 69 61 73 20 48 49 53 54 4f 47  ;.}.alias HISTOG
4490: 52 41 4d 5f 42 55 43 4b 45 54 2a 20 50 48 49 53  RAM_BUCKET* PHIS
44a0: 54 4f 47 52 41 4d 5f 42 55 43 4b 45 54 3b 0a 0a  TOGRAM_BUCKET;..
44b0: 73 74 72 75 63 74 20 44 49 53 4b 5f 48 49 53 54  struct DISK_HIST
44c0: 4f 47 52 41 4d 20 7b 0a 09 4c 41 52 47 45 5f 49  OGRAM {..LARGE_I
44d0: 4e 54 45 47 45 52 20 20 20 20 20 44 69 73 6b 53  NTEGER     DiskS
44e0: 69 7a 65 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45  ize;..LARGE_INTE
44f0: 47 45 52 20 20 20 20 20 53 74 61 72 74 3b 0a 09  GER     Start;..
4500: 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20 20 20  LARGE_INTEGER   
4510: 20 20 45 6e 64 3b 0a 09 4c 41 52 47 45 5f 49 4e    End;..LARGE_IN
4520: 54 45 47 45 52 20 20 20 20 20 41 76 65 72 61 67  TEGER     Averag
4530: 65 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45  e;..LARGE_INTEGE
4540: 52 20 20 20 20 20 41 76 65 72 61 67 65 52 65 61  R     AverageRea
4550: 64 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45  d;..LARGE_INTEGE
4560: 52 20 20 20 20 20 41 76 65 72 61 67 65 57 72 69  R     AverageWri
4570: 74 65 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20  te;..DWORD      
4580: 20 20 20 20 20 20 20 47 72 61 6e 75 6c 61 72 69         Granulari
4590: 74 79 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20  ty;..DWORD      
45a0: 20 20 20 20 20 20 20 53 69 7a 65 3b 0a 09 44 57         Size;..DW
45b0: 4f 52 44 20 20 20 20 20 20 20 20 20 20 20 20 20  ORD             
45c0: 52 65 61 64 43 6f 75 6e 74 3b 0a 09 44 57 4f 52  ReadCount;..DWOR
45d0: 44 20 20 20 20 20 20 20 20 20 20 20 20 20 57 72  D             Wr
45e0: 69 74 65 43 6f 75 6e 74 3b 0a 09 50 48 49 53 54  iteCount;..PHIST
45f0: 4f 47 52 41 4d 5f 42 55 43 4b 45 54 20 48 69 73  OGRAM_BUCKET His
4600: 74 6f 67 72 61 6d 3b 0a 7d 0a 61 6c 69 61 73 20  togram;.}.alias 
4610: 44 49 53 4b 5f 48 49 53 54 4f 47 52 41 4d 2a 20  DISK_HISTOGRAM* 
4620: 50 44 49 53 4b 5f 48 49 53 54 4f 47 52 41 4d 3b  PDISK_HISTOGRAM;
4630: 0a 0a 73 74 72 75 63 74 20 44 49 53 4b 5f 45 58  ..struct DISK_EX
4640: 54 45 4e 54 20 7b 0a 09 44 57 4f 52 44 20 20 20  TENT {..DWORD   
4650: 20 20 20 20 20 20 44 69 73 6b 4e 75 6d 62 65 72        DiskNumber
4660: 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52  ;..LARGE_INTEGER
4670: 20 53 74 61 72 74 69 6e 67 4f 66 66 73 65 74 3b   StartingOffset;
4680: 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20  ..LARGE_INTEGER 
4690: 45 78 74 65 6e 74 4c 65 6e 67 74 68 3b 0a 7d 0a  ExtentLength;.}.
46a0: 61 6c 69 61 73 20 44 49 53 4b 5f 45 58 54 45 4e  alias DISK_EXTEN
46b0: 54 2a 20 50 44 49 53 4b 5f 45 58 54 45 4e 54 3b  T* PDISK_EXTENT;
46c0: 0a 0a 73 74 72 75 63 74 20 56 4f 4c 55 4d 45 5f  ..struct VOLUME_
46d0: 44 49 53 4b 5f 45 58 54 45 4e 54 53 20 7b 0a 09  DISK_EXTENTS {..
46e0: 44 57 4f 52 44 20 20 20 20 20 20 20 4e 75 6d 62  DWORD       Numb
46f0: 65 72 4f 66 44 69 73 6b 45 78 74 65 6e 74 73 3b  erOfDiskExtents;
4700: 0a 09 44 49 53 4b 5f 45 58 54 45 4e 54 20 5f 45  ..DISK_EXTENT _E
4710: 78 74 65 6e 74 73 3b 0a 0a 09 44 49 53 4b 5f 45  xtents;...DISK_E
4720: 58 54 45 4e 54 2a 20 45 78 74 65 6e 74 73 28 29  XTENT* Extents()
4730: 20 7b 20 72 65 74 75 72 6e 20 26 5f 45 78 74 65   { return &_Exte
4740: 6e 74 73 3b 20 7d 0a 7d 0a 61 6c 69 61 73 20 56  nts; }.}.alias V
4750: 4f 4c 55 4d 45 5f 44 49 53 4b 5f 45 58 54 45 4e  OLUME_DISK_EXTEN
4760: 54 53 2a 20 50 56 4f 4c 55 4d 45 5f 44 49 53 4b  TS* PVOLUME_DISK
4770: 5f 45 58 54 45 4e 54 53 3b 0a 0a 73 74 72 75 63  _EXTENTS;..struc
4780: 74 20 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f  t PARTITION_INFO
4790: 52 4d 41 54 49 4f 4e 20 7b 0a 09 4c 41 52 47 45  RMATION {..LARGE
47a0: 5f 49 4e 54 45 47 45 52 20 53 74 61 72 74 69 6e  _INTEGER Startin
47b0: 67 4f 66 66 73 65 74 3b 0a 09 4c 41 52 47 45 5f  gOffset;..LARGE_
47c0: 49 4e 54 45 47 45 52 20 50 61 72 74 69 74 69 6f  INTEGER Partitio
47d0: 6e 4c 65 6e 67 74 68 3b 0a 09 44 57 4f 52 44 20  nLength;..DWORD 
47e0: 20 20 20 20 20 20 20 20 48 69 64 64 65 6e 53 65          HiddenSe
47f0: 63 74 6f 72 73 3b 0a 09 44 57 4f 52 44 20 20 20  ctors;..DWORD   
4800: 20 20 20 20 20 20 50 61 72 74 69 74 69 6f 6e 4e        PartitionN
4810: 75 6d 62 65 72 3b 0a 09 42 59 54 45 20 20 20 20  umber;..BYTE    
4820: 20 20 20 20 20 20 50 61 72 74 69 74 69 6f 6e 54        PartitionT
4830: 79 70 65 3b 0a 09 42 4f 4f 4c 45 41 4e 20 20 20  ype;..BOOLEAN   
4840: 20 20 20 20 42 6f 6f 74 49 6e 64 69 63 61 74 6f      BootIndicato
4850: 72 3b 0a 09 42 4f 4f 4c 45 41 4e 20 20 20 20 20  r;..BOOLEAN     
4860: 20 20 52 65 63 6f 67 6e 69 7a 65 64 50 61 72 74    RecognizedPart
4870: 69 74 69 6f 6e 3b 0a 09 42 4f 4f 4c 45 41 4e 20  ition;..BOOLEAN 
4880: 20 20 20 20 20 20 52 65 77 72 69 74 65 50 61 72        RewritePar
4890: 74 69 74 69 6f 6e 3b 0a 7d 0a 61 6c 69 61 73 20  tition;.}.alias 
48a0: 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f 52 4d  PARTITION_INFORM
48b0: 41 54 49 4f 4e 2a 20 50 50 41 52 54 49 54 49 4f  ATION* PPARTITIO
48c0: 4e 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 3b 0a 0a  N_INFORMATION;..
48d0: 73 74 72 75 63 74 20 44 52 49 56 45 5f 4c 41 59  struct DRIVE_LAY
48e0: 4f 55 54 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 20  OUT_INFORMATION 
48f0: 7b 0a 09 44 57 4f 52 44 20 20 20 20 20 20 20 20  {..DWORD        
4900: 20 20 20 20 20 20 20 20 20 50 61 72 74 69 74 69           Partiti
4910: 6f 6e 43 6f 75 6e 74 3b 0a 09 44 57 4f 52 44 20  onCount;..DWORD 
4920: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4930: 53 69 67 6e 61 74 75 72 65 3b 0a 09 50 41 52 54  Signature;..PART
4940: 49 54 49 4f 4e 5f 49 4e 46 4f 52 4d 41 54 49 4f  ITION_INFORMATIO
4950: 4e 20 5f 50 61 72 74 69 74 69 6f 6e 45 6e 74 72  N _PartitionEntr
4960: 79 3b 0a 0a 09 50 41 52 54 49 54 49 4f 4e 5f 49  y;...PARTITION_I
4970: 4e 46 4f 52 4d 41 54 49 4f 4e 2a 20 50 61 72 74  NFORMATION* Part
4980: 69 74 69 6f 6e 45 6e 74 72 79 28 29 20 7b 20 72  itionEntry() { r
4990: 65 74 75 72 6e 20 26 5f 50 61 72 74 69 74 69 6f  eturn &_Partitio
49a0: 6e 45 6e 74 72 79 3b 20 7d 0a 7d 0a 61 6c 69 61  nEntry; }.}.alia
49b0: 73 20 44 52 49 56 45 5f 4c 41 59 4f 55 54 5f 49  s DRIVE_LAYOUT_I
49c0: 4e 46 4f 52 4d 41 54 49 4f 4e 2a 20 50 44 52 49  NFORMATION* PDRI
49d0: 56 45 5f 4c 41 59 4f 55 54 5f 49 4e 46 4f 52 4d  VE_LAYOUT_INFORM
49e0: 41 54 49 4f 4e 3b 0a 0a 73 74 72 75 63 74 20 44  ATION;..struct D
49f0: 52 49 56 45 5f 4c 41 59 4f 55 54 5f 49 4e 46 4f  RIVE_LAYOUT_INFO
4a00: 52 4d 41 54 49 4f 4e 5f 47 50 54 20 7b 0a 09 47  RMATION_GPT {..G
4a10: 55 49 44 20 20 20 20 20 20 20 20 20 20 44 69 73  UID          Dis
4a20: 6b 49 64 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45  kId;..LARGE_INTE
4a30: 47 45 52 20 53 74 61 72 74 69 6e 67 55 73 61 62  GER StartingUsab
4a40: 6c 65 4f 66 66 73 65 74 3b 0a 09 4c 41 52 47 45  leOffset;..LARGE
4a50: 5f 49 4e 54 45 47 45 52 20 55 73 61 62 6c 65 4c  _INTEGER UsableL
4a60: 65 6e 67 74 68 3b 0a 09 55 4c 4f 4e 47 20 20 20  ength;..ULONG   
4a70: 20 20 20 20 20 20 4d 61 78 50 61 72 74 69 74 69        MaxPartiti
4a80: 6f 6e 43 6f 75 6e 74 3b 0a 7d 0a 61 6c 69 61 73  onCount;.}.alias
4a90: 20 44 52 49 56 45 5f 4c 41 59 4f 55 54 5f 49 4e   DRIVE_LAYOUT_IN
4aa0: 46 4f 52 4d 41 54 49 4f 4e 5f 47 50 54 2a 20 50  FORMATION_GPT* P
4ab0: 44 52 49 56 45 5f 4c 41 59 4f 55 54 5f 49 4e 46  DRIVE_LAYOUT_INF
4ac0: 4f 52 4d 41 54 49 4f 4e 5f 47 50 54 3b 0a 0a 73  ORMATION_GPT;..s
4ad0: 74 72 75 63 74 20 44 52 49 56 45 5f 4c 41 59 4f  truct DRIVE_LAYO
4ae0: 55 54 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 5f 4d  UT_INFORMATION_M
4af0: 42 52 20 7b 0a 09 55 4c 4f 4e 47 20 53 69 67 6e  BR {..ULONG Sign
4b00: 61 74 75 72 65 3b 0a 7d 0a 61 6c 69 61 73 20 44  ature;.}.alias D
4b10: 52 49 56 45 5f 4c 41 59 4f 55 54 5f 49 4e 46 4f  RIVE_LAYOUT_INFO
4b20: 52 4d 41 54 49 4f 4e 5f 4d 42 52 2a 20 50 44 52  RMATION_MBR* PDR
4b30: 49 56 45 5f 4c 41 59 4f 55 54 5f 49 4e 46 4f 52  IVE_LAYOUT_INFOR
4b40: 4d 41 54 49 4f 4e 5f 4d 42 52 3b 0a 0a 73 74 72  MATION_MBR;..str
4b50: 75 63 74 20 50 41 52 54 49 54 49 4f 4e 5f 49 4e  uct PARTITION_IN
4b60: 46 4f 52 4d 41 54 49 4f 4e 5f 4d 42 52 20 7b 0a  FORMATION_MBR {.
4b70: 09 42 59 54 45 20 20 20 20 50 61 72 74 69 74 69  .BYTE    Partiti
4b80: 6f 6e 54 79 70 65 3b 0a 09 42 4f 4f 4c 45 41 4e  onType;..BOOLEAN
4b90: 20 42 6f 6f 74 49 6e 64 69 63 61 74 6f 72 3b 0a   BootIndicator;.
4ba0: 09 42 4f 4f 4c 45 41 4e 20 52 65 63 6f 67 6e 69  .BOOLEAN Recogni
4bb0: 7a 65 64 50 61 72 74 69 74 69 6f 6e 3b 0a 09 44  zedPartition;..D
4bc0: 57 4f 52 44 20 20 20 48 69 64 64 65 6e 53 65 63  WORD   HiddenSec
4bd0: 74 6f 72 73 3b 0a 7d 0a 0a 73 74 72 75 63 74 20  tors;.}..struct 
4be0: 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f 52 4d  PARTITION_INFORM
4bf0: 41 54 49 4f 4e 5f 47 50 54 20 7b 0a 09 47 55 49  ATION_GPT {..GUI
4c00: 44 20 20 20 20 20 20 50 61 72 74 69 74 69 6f 6e  D      Partition
4c10: 54 79 70 65 3b 0a 09 47 55 49 44 20 20 20 20 20  Type;..GUID     
4c20: 20 50 61 72 74 69 74 69 6f 6e 49 64 3b 0a 09 44   PartitionId;..D
4c30: 57 4f 52 44 36 34 20 20 20 41 74 74 72 69 62 75  WORD64   Attribu
4c40: 74 65 73 3b 0a 09 57 43 48 41 52 5b 33 36 5d 20  tes;..WCHAR[36] 
4c50: 4e 61 6d 65 3b 0a 7d 0a 0a 73 74 72 75 63 74 20  Name;.}..struct 
4c60: 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f 52 4d  PARTITION_INFORM
4c70: 41 54 49 4f 4e 5f 45 58 20 7b 0a 09 50 41 52 54  ATION_EX {..PART
4c80: 49 54 49 4f 4e 5f 53 54 59 4c 45 20 50 61 72 74  ITION_STYLE Part
4c90: 69 74 69 6f 6e 53 74 79 6c 65 3b 0a 09 4c 41 52  itionStyle;..LAR
4ca0: 47 45 5f 49 4e 54 45 47 45 52 20 20 20 53 74 61  GE_INTEGER   Sta
4cb0: 72 74 69 6e 67 4f 66 66 73 65 74 3b 0a 09 4c 41  rtingOffset;..LA
4cc0: 52 47 45 5f 49 4e 54 45 47 45 52 20 20 20 50 61  RGE_INTEGER   Pa
4cd0: 72 74 69 74 69 6f 6e 4c 65 6e 67 74 68 3b 0a 09  rtitionLength;..
4ce0: 44 57 4f 52 44 20 20 20 20 20 20 20 20 20 20 20  DWORD           
4cf0: 50 61 72 74 69 74 69 6f 6e 4e 75 6d 62 65 72 3b  PartitionNumber;
4d00: 0a 09 42 4f 4f 4c 45 41 4e 20 20 20 20 20 20 20  ..BOOLEAN       
4d10: 20 20 52 65 77 72 69 74 65 50 61 72 74 69 74 69    RewritePartiti
4d20: 6f 6e 3b 0a 09 75 6e 69 6f 6e 20 7b 0a 09 09 50  on;..union {...P
4d30: 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f 52 4d 41  ARTITION_INFORMA
4d40: 54 49 4f 4e 5f 4d 42 52 20 4d 62 72 3b 0a 09 09  TION_MBR Mbr;...
4d50: 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f 52 4d  PARTITION_INFORM
4d60: 41 54 49 4f 4e 5f 47 50 54 20 47 70 74 3b 0a 09  ATION_GPT Gpt;..
4d70: 7d 0a 7d 0a 0a 73 74 72 75 63 74 20 44 52 49 56  }.}..struct DRIV
4d80: 45 5f 4c 41 59 4f 55 54 5f 49 4e 46 4f 52 4d 41  E_LAYOUT_INFORMA
4d90: 54 49 4f 4e 5f 45 58 20 7b 0a 09 44 57 4f 52 44  TION_EX {..DWORD
4da0: 20 50 61 72 74 69 74 69 6f 6e 53 74 79 6c 65 3b   PartitionStyle;
4db0: 0a 09 44 57 4f 52 44 20 50 61 72 74 69 74 69 6f  ..DWORD Partitio
4dc0: 6e 43 6f 75 6e 74 3b 0a 09 75 6e 69 6f 6e 20 7b  nCount;..union {
4dd0: 0a 09 09 44 52 49 56 45 5f 4c 41 59 4f 55 54 5f  ...DRIVE_LAYOUT_
4de0: 49 4e 46 4f 52 4d 41 54 49 4f 4e 5f 4d 42 52 20  INFORMATION_MBR 
4df0: 4d 62 72 3b 0a 09 09 44 52 49 56 45 5f 4c 41 59  Mbr;...DRIVE_LAY
4e00: 4f 55 54 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 5f  OUT_INFORMATION_
4e10: 47 50 54 20 47 70 74 3b 0a 09 7d 0a 09 50 41 52  GPT Gpt;..}..PAR
4e20: 54 49 54 49 4f 4e 5f 49 4e 46 4f 52 4d 41 54 49  TITION_INFORMATI
4e30: 4f 4e 5f 45 58 20 5f 50 61 72 74 69 74 69 6f 6e  ON_EX _Partition
4e40: 45 6e 74 72 79 3b 0a 0a 09 50 41 52 54 49 54 49  Entry;...PARTITI
4e50: 4f 4e 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 5f 45  ON_INFORMATION_E
4e60: 58 2a 20 50 61 72 74 69 74 69 6f 6e 45 6e 74 72  X* PartitionEntr
4e70: 79 28 29 20 7b 20 72 65 74 75 72 6e 20 26 5f 50  y() { return &_P
4e80: 61 72 74 69 74 69 6f 6e 45 6e 74 72 79 3b 20 7d  artitionEntry; }
4e90: 0a 7d 0a 61 6c 69 61 73 20 44 52 49 56 45 5f 4c  .}.alias DRIVE_L
4ea0: 41 59 4f 55 54 5f 49 4e 46 4f 52 4d 41 54 49 4f  AYOUT_INFORMATIO
4eb0: 4e 5f 45 58 2a 20 50 44 52 49 56 45 5f 4c 41 59  N_EX* PDRIVE_LAY
4ec0: 4f 55 54 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 5f  OUT_INFORMATION_
4ed0: 45 58 3b 0a 0a 73 74 72 75 63 74 20 4d 4f 56 45  EX;..struct MOVE
4ee0: 5f 46 49 4c 45 5f 44 41 54 41 20 7b 0a 09 48 41  _FILE_DATA {..HA
4ef0: 4e 44 4c 45 20 46 69 6c 65 48 61 6e 64 6c 65 3b  NDLE FileHandle;
4f00: 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20  ..LARGE_INTEGER 
4f10: 53 74 61 72 74 69 6e 67 56 63 6e 3b 0a 09 4c 41  StartingVcn;..LA
4f20: 52 47 45 5f 49 4e 54 45 47 45 52 20 53 74 61 72  RGE_INTEGER Star
4f30: 74 69 6e 67 4c 63 6e 3b 0a 09 44 57 4f 52 44 20  tingLcn;..DWORD 
4f40: 43 6c 75 73 74 65 72 43 6f 75 6e 74 3b 0a 7d 0a  ClusterCount;.}.
4f50: 61 6c 69 61 73 20 4d 4f 56 45 5f 46 49 4c 45 5f  alias MOVE_FILE_
4f60: 44 41 54 41 2a 20 50 4d 4f 56 45 5f 46 49 4c 45  DATA* PMOVE_FILE
4f70: 5f 44 41 54 41 3b 0a 0a 73 74 72 75 63 74 20 50  _DATA;..struct P
4f80: 45 52 46 5f 42 49 4e 20 7b 0a 09 44 57 4f 52 44  ERF_BIN {..DWORD
4f90: 20 20 20 20 20 4e 75 6d 62 65 72 4f 66 42 69 6e       NumberOfBin
4fa0: 73 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 54 79  s;..DWORD     Ty
4fb0: 70 65 4f 66 42 69 6e 3b 0a 09 42 49 4e 5f 52 41  peOfBin;..BIN_RA
4fc0: 4e 47 45 20 5f 42 69 6e 73 52 61 6e 67 65 73 3b  NGE _BinsRanges;
4fd0: 0a 0a 09 42 49 4e 5f 52 41 4e 47 45 2a 20 42 69  ...BIN_RANGE* Bi
4fe0: 6e 73 52 61 6e 67 65 73 28 29 20 7b 20 72 65 74  nsRanges() { ret
4ff0: 75 72 6e 20 26 5f 42 69 6e 73 52 61 6e 67 65 73  urn &_BinsRanges
5000: 3b 20 7d 0a 7d 0a 61 6c 69 61 73 20 50 45 52 46  ; }.}.alias PERF
5010: 5f 42 49 4e 2a 20 50 50 45 52 46 5f 42 49 4e 3b  _BIN* PPERF_BIN;
5020: 0a 0a 73 74 72 75 63 74 20 50 52 45 56 45 4e 54  ..struct PREVENT
5030: 5f 4d 45 44 49 41 5f 52 45 4d 4f 56 41 4c 20 7b  _MEDIA_REMOVAL {
5040: 0a 09 42 4f 4f 4c 45 41 4e 20 50 72 65 76 65 6e  ..BOOLEAN Preven
5050: 74 4d 65 64 69 61 52 65 6d 6f 76 61 6c 3b 0a 7d  tMediaRemoval;.}
5060: 0a 61 6c 69 61 73 20 50 52 45 56 45 4e 54 5f 4d  .alias PREVENT_M
5070: 45 44 49 41 5f 52 45 4d 4f 56 41 4c 2a 20 50 50  EDIA_REMOVAL* PP
5080: 52 45 56 45 4e 54 5f 4d 45 44 49 41 5f 52 45 4d  REVENT_MEDIA_REM
5090: 4f 56 41 4c 3b 0a 0a 73 74 72 75 63 74 20 52 45  OVAL;..struct RE
50a0: 54 52 49 45 56 41 4c 5f 50 4f 49 4e 54 45 52 53  TRIEVAL_POINTERS
50b0: 5f 42 55 46 46 45 52 20 7b 0a 09 44 57 4f 52 44  _BUFFER {..DWORD
50c0: 20 20 20 20 20 20 20 20 20 45 78 74 65 6e 74 43           ExtentC
50d0: 6f 75 6e 74 3b 0a 09 4c 41 52 47 45 5f 49 4e 54  ount;..LARGE_INT
50e0: 45 47 45 52 20 53 74 61 72 74 69 6e 67 56 63 6e  EGER StartingVcn
50f0: 3b 0a 09 2f 2f 20 49 6e 20 4d 69 6e 47 57 2c 20  ;..// In MinGW, 
5100: 74 68 69 73 20 69 73 20 64 65 63 6c 61 72 65 64  this is declared
5110: 20 61 73 20 73 74 72 75 63 74 20 7b 20 2e 2e 2e   as struct { ...
5120: 20 7d 20 45 78 74 65 6e 74 73 5b 31 5d 3b 0a 09   } Extents[1];..
5130: 73 74 72 75 63 74 20 45 78 74 65 6e 74 20 7b 0a  struct Extent {.
5140: 09 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20  ..LARGE_INTEGER 
5150: 4e 65 78 74 56 63 6e 3b 0a 09 09 4c 41 52 47 45  NextVcn;...LARGE
5160: 5f 49 4e 54 45 47 45 52 20 4c 63 6e 3b 0a 09 7d  _INTEGER Lcn;..}
5170: 0a 09 45 78 74 65 6e 74 20 5f 45 78 74 65 6e 74  ..Extent _Extent
5180: 73 3b 0a 0a 09 45 78 74 65 6e 74 2a 20 45 78 74  s;...Extent* Ext
5190: 65 6e 74 73 28 29 20 7b 20 72 65 74 75 72 6e 20  ents() { return 
51a0: 26 5f 45 78 74 65 6e 74 73 3b 20 7d 0a 7d 0a 61  &_Extents; }.}.a
51b0: 6c 69 61 73 20 52 45 54 52 49 45 56 41 4c 5f 50  lias RETRIEVAL_P
51c0: 4f 49 4e 54 45 52 53 5f 42 55 46 46 45 52 2a 20  OINTERS_BUFFER* 
51d0: 50 52 45 54 52 49 45 56 41 4c 5f 50 4f 49 4e 54  PRETRIEVAL_POINT
51e0: 45 52 53 5f 42 55 46 46 45 52 3b 0a 0a 73 74 72  ERS_BUFFER;..str
51f0: 75 63 74 20 52 45 41 53 53 49 47 4e 5f 42 4c 4f  uct REASSIGN_BLO
5200: 43 4b 53 20 7b 0a 09 57 4f 52 44 20 20 52 65 73  CKS {..WORD  Res
5210: 65 72 76 65 64 3b 0a 09 57 4f 52 44 20 20 43 6f  erved;..WORD  Co
5220: 75 6e 74 3b 0a 09 44 57 4f 52 44 20 5f 42 6c 6f  unt;..DWORD _Blo
5230: 63 6b 4e 75 6d 62 65 72 3b 0a 0a 09 44 57 4f 52  ckNumber;...DWOR
5240: 44 2a 20 42 6c 6f 63 6b 4e 75 6d 62 65 72 28 29  D* BlockNumber()
5250: 20 7b 20 72 65 74 75 72 6e 20 26 5f 42 6c 6f 63   { return &_Bloc
5260: 6b 4e 75 6d 62 65 72 3b 20 7d 0a 7d 0a 61 6c 69  kNumber; }.}.ali
5270: 61 73 20 52 45 41 53 53 49 47 4e 5f 42 4c 4f 43  as REASSIGN_BLOC
5280: 4b 53 2a 20 50 52 45 41 53 53 49 47 4e 5f 42 4c  KS* PREASSIGN_BL
5290: 4f 43 4b 53 3b 0a 0a 73 74 72 75 63 74 20 53 45  OCKS;..struct SE
52a0: 54 5f 50 41 52 54 49 54 49 4f 4e 5f 49 4e 46 4f  T_PARTITION_INFO
52b0: 52 4d 41 54 49 4f 4e 20 7b 0a 09 42 59 54 45 20  RMATION {..BYTE 
52c0: 50 61 72 74 69 74 69 6f 6e 54 79 70 65 3b 0a 7d  PartitionType;.}
52d0: 0a 61 6c 69 61 73 20 53 45 54 5f 50 41 52 54 49  .alias SET_PARTI
52e0: 54 49 4f 4e 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e  TION_INFORMATION
52f0: 2a 20 50 53 45 54 5f 50 41 52 54 49 54 49 4f 4e  * PSET_PARTITION
5300: 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 3b 0a 0a 73  _INFORMATION;..s
5310: 74 72 75 63 74 20 53 54 41 52 54 49 4e 47 5f 4c  truct STARTING_L
5320: 43 4e 5f 49 4e 50 55 54 5f 42 55 46 46 45 52 20  CN_INPUT_BUFFER 
5330: 7b 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52  {..LARGE_INTEGER
5340: 20 53 74 61 72 74 69 6e 67 4c 63 6e 3b 0a 7d 0a   StartingLcn;.}.
5350: 61 6c 69 61 73 20 53 54 41 52 54 49 4e 47 5f 4c  alias STARTING_L
5360: 43 4e 5f 49 4e 50 55 54 5f 42 55 46 46 45 52 2a  CN_INPUT_BUFFER*
5370: 20 50 53 54 41 52 54 49 4e 47 5f 4c 43 4e 5f 49   PSTARTING_LCN_I
5380: 4e 50 55 54 5f 42 55 46 46 45 52 3b 0a 0a 73 74  NPUT_BUFFER;..st
5390: 72 75 63 74 20 53 54 41 52 54 49 4e 47 5f 56 43  ruct STARTING_VC
53a0: 4e 5f 49 4e 50 55 54 5f 42 55 46 46 45 52 20 7b  N_INPUT_BUFFER {
53b0: 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20  ..LARGE_INTEGER 
53c0: 53 74 61 72 74 69 6e 67 56 63 6e 3b 0a 7d 0a 61  StartingVcn;.}.a
53d0: 6c 69 61 73 20 53 54 41 52 54 49 4e 47 5f 56 43  lias STARTING_VC
53e0: 4e 5f 49 4e 50 55 54 5f 42 55 46 46 45 52 2a 20  N_INPUT_BUFFER* 
53f0: 50 53 54 41 52 54 49 4e 47 5f 56 43 4e 5f 49 4e  PSTARTING_VCN_IN
5400: 50 55 54 5f 42 55 46 46 45 52 3b 0a 0a 73 74 72  PUT_BUFFER;..str
5410: 75 63 74 20 56 45 52 49 46 59 5f 49 4e 46 4f 52  uct VERIFY_INFOR
5420: 4d 41 54 49 4f 4e 20 7b 0a 09 4c 41 52 47 45 5f  MATION {..LARGE_
5430: 49 4e 54 45 47 45 52 20 53 74 61 72 74 69 6e 67  INTEGER Starting
5440: 4f 66 66 73 65 74 3b 0a 09 44 57 4f 52 44 20 20  Offset;..DWORD  
5450: 20 20 20 20 20 20 20 4c 65 6e 67 74 68 3b 0a 7d         Length;.}
5460: 0a 61 6c 69 61 73 20 56 45 52 49 46 59 5f 49 4e  .alias VERIFY_IN
5470: 46 4f 52 4d 41 54 49 4f 4e 2a 20 50 56 45 52 49  FORMATION* PVERI
5480: 46 59 5f 49 4e 46 4f 52 4d 41 54 49 4f 4e 3b 0a  FY_INFORMATION;.
5490: 0a 73 74 72 75 63 74 20 56 4f 4c 55 4d 45 5f 42  .struct VOLUME_B
54a0: 49 54 4d 41 50 5f 42 55 46 46 45 52 20 7b 0a 09  ITMAP_BUFFER {..
54b0: 4c 41 52 47 45 5f 49 4e 54 45 47 45 52 20 53 74  LARGE_INTEGER St
54c0: 61 72 74 69 6e 67 4c 63 6e 3b 0a 09 4c 41 52 47  artingLcn;..LARG
54d0: 45 5f 49 4e 54 45 47 45 52 20 42 69 74 6d 61 70  E_INTEGER Bitmap
54e0: 53 69 7a 65 3b 0a 09 42 59 54 45 20 20 20 20 20  Size;..BYTE     
54f0: 20 20 20 20 20 5f 42 75 66 66 65 72 3b 0a 0a 09       _Buffer;...
5500: 42 59 54 45 2a 20 42 75 66 66 65 72 28 29 20 7b  BYTE* Buffer() {
5510: 20 72 65 74 75 72 6e 20 26 5f 42 75 66 66 65 72   return &_Buffer
5520: 3b 20 7d 0a 7d 0a 61 6c 69 61 73 20 56 4f 4c 55  ; }.}.alias VOLU
5530: 4d 45 5f 42 49 54 4d 41 50 5f 42 55 46 46 45 52  ME_BITMAP_BUFFER
5540: 2a 20 50 56 4f 4c 55 4d 45 5f 42 49 54 4d 41 50  * PVOLUME_BITMAP
5550: 5f 42 55 46 46 45 52 3b 0a 0a 73 74 72 75 63 74  _BUFFER;..struct
5560: 20 4e 54 46 53 5f 56 4f 4c 55 4d 45 5f 44 41 54   NTFS_VOLUME_DAT
5570: 41 5f 42 55 46 46 45 52 20 7b 0a 09 4c 41 52 47  A_BUFFER {..LARG
5580: 45 5f 49 4e 54 45 47 45 52 20 56 6f 6c 75 6d 65  E_INTEGER Volume
5590: 53 65 72 69 61 6c 4e 75 6d 62 65 72 3b 0a 09 4c  SerialNumber;..L
55a0: 41 52 47 45 5f 49 4e 54 45 47 45 52 20 4e 75 6d  ARGE_INTEGER Num
55b0: 62 65 72 53 65 63 74 6f 72 73 3b 0a 09 4c 41 52  berSectors;..LAR
55c0: 47 45 5f 49 4e 54 45 47 45 52 20 54 6f 74 61 6c  GE_INTEGER Total
55d0: 43 6c 75 73 74 65 72 73 3b 0a 09 4c 41 52 47 45  Clusters;..LARGE
55e0: 5f 49 4e 54 45 47 45 52 20 46 72 65 65 43 6c 75  _INTEGER FreeClu
55f0: 73 74 65 72 73 3b 0a 09 4c 41 52 47 45 5f 49 4e  sters;..LARGE_IN
5600: 54 45 47 45 52 20 54 6f 74 61 6c 52 65 73 65 72  TEGER TotalReser
5610: 76 65 64 3b 0a 09 44 57 4f 52 44 20 20 20 20 20  ved;..DWORD     
5620: 20 20 20 20 42 79 74 65 73 50 65 72 53 65 63 74      BytesPerSect
5630: 6f 72 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20  or;..DWORD      
5640: 20 20 20 42 79 74 65 73 50 65 72 43 6c 75 73 74     BytesPerClust
5650: 65 72 3b 0a 09 44 57 4f 52 44 20 20 20 20 20 20  er;..DWORD      
5660: 20 20 20 42 79 74 65 73 50 65 72 46 69 6c 65 52     BytesPerFileR
5670: 65 63 6f 72 64 53 65 67 6d 65 6e 74 3b 0a 09 44  ecordSegment;..D
5680: 57 4f 52 44 20 20 20 20 20 20 20 20 20 43 6c 75  WORD         Clu
5690: 73 74 65 72 73 50 65 72 46 69 6c 65 52 65 63 6f  stersPerFileReco
56a0: 72 64 53 65 67 6d 65 6e 74 3b 0a 09 4c 41 52 47  rdSegment;..LARG
56b0: 45 5f 49 4e 54 45 47 45 52 20 4d 66 74 56 61 6c  E_INTEGER MftVal
56c0: 69 64 44 61 74 61 4c 65 6e 67 74 68 3b 0a 09 4c  idDataLength;..L
56d0: 41 52 47 45 5f 49 4e 54 45 47 45 52 20 4d 66 74  ARGE_INTEGER Mft
56e0: 53 74 61 72 74 4c 63 6e 3b 0a 09 4c 41 52 47 45  StartLcn;..LARGE
56f0: 5f 49 4e 54 45 47 45 52 20 4d 66 74 32 53 74 61  _INTEGER Mft2Sta
5700: 72 74 4c 63 6e 3b 0a 09 4c 41 52 47 45 5f 49 4e  rtLcn;..LARGE_IN
5710: 54 45 47 45 52 20 4d 66 74 5a 6f 6e 65 53 74 61  TEGER MftZoneSta
5720: 72 74 3b 0a 09 4c 41 52 47 45 5f 49 4e 54 45 47  rt;..LARGE_INTEG
5730: 45 52 20 4d 66 74 5a 6f 6e 65 45 6e 64 3b 0a 7d  ER MftZoneEnd;.}
5740: 0a 61 6c 69 61 73 20 4e 54 46 53 5f 56 4f 4c 55  .alias NTFS_VOLU
5750: 4d 45 5f 44 41 54 41 5f 42 55 46 46 45 52 2a 20  ME_DATA_BUFFER* 
5760: 50 4e 54 46 53 5f 56 4f 4c 55 4d 45 5f 44 41 54  PNTFS_VOLUME_DAT
5770: 41 5f 42 55 46 46 45 52 3b 0a 0a 0a 62 6f 6f 6c  A_BUFFER;...bool
5780: 20 49 73 52 65 63 6f 67 6e 69 7a 65 64 50 61 72   IsRecognizedPar
5790: 74 69 74 69 6f 6e 28 42 59 54 45 20 74 29 20 7b  tition(BYTE t) {
57a0: 0a 09 72 65 74 75 72 6e 20 28 28 74 20 26 20 50  ..return ((t & P
57b0: 41 52 54 49 54 49 4f 4e 5f 4e 54 46 54 29 0a 09  ARTITION_NTFT)..
57c0: 20 20 26 26 20 28 28 74 20 26 20 7e 56 41 4c 49    && ((t & ~VALI
57d0: 44 5f 4e 54 46 54 29 20 3d 3d 20 50 41 52 54 49  D_NTFT) == PARTI
57e0: 54 49 4f 4e 5f 46 41 54 5f 31 32 0a 09 20 20 20  TION_FAT_12..   
57f0: 20 7c 7c 20 28 74 20 26 20 7e 56 41 4c 49 44 5f   || (t & ~VALID_
5800: 4e 54 46 54 29 20 3d 3d 20 50 41 52 54 49 54 49  NTFT) == PARTITI
5810: 4f 4e 5f 46 41 54 5f 31 36 0a 09 20 20 20 20 7c  ON_FAT_16..    |
5820: 7c 20 28 74 20 26 20 7e 56 41 4c 49 44 5f 4e 54  | (t & ~VALID_NT
5830: 46 54 29 20 3d 3d 20 50 41 52 54 49 54 49 4f 4e  FT) == PARTITION
5840: 5f 49 46 53 0a 09 20 20 20 20 7c 7c 20 28 74 20  _IFS..    || (t 
5850: 26 20 7e 56 41 4c 49 44 5f 4e 54 46 54 29 20 3d  & ~VALID_NTFT) =
5860: 3d 20 50 41 52 54 49 54 49 4f 4e 5f 48 55 47 45  = PARTITION_HUGE
5870: 0a 09 20 20 20 20 7c 7c 20 28 74 20 26 20 7e 56  ..    || (t & ~V
5880: 41 4c 49 44 5f 4e 54 46 54 29 20 3d 3d 20 50 41  ALID_NTFT) == PA
5890: 52 54 49 54 49 4f 4e 5f 46 41 54 33 32 0a 09 20  RTITION_FAT32.. 
58a0: 20 20 20 7c 7c 20 28 74 20 26 20 7e 56 41 4c 49     || (t & ~VALI
58b0: 44 5f 4e 54 46 54 29 20 3d 3d 20 50 41 52 54 49  D_NTFT) == PARTI
58c0: 54 49 4f 4e 5f 46 41 54 33 32 5f 58 49 4e 54 31  TION_FAT32_XINT1
58d0: 33 0a 09 20 20 20 20 7c 7c 20 28 74 20 26 20 7e  3..    || (t & ~
58e0: 56 41 4c 49 44 5f 4e 54 46 54 29 20 3d 3d 20 50  VALID_NTFT) == P
58f0: 41 52 54 49 54 49 4f 4e 5f 58 49 4e 54 31 33 29  ARTITION_XINT13)
5900: 29 0a 09 20 20 7c 7c 20 28 74 20 26 20 7e 50 41  )..  || (t & ~PA
5910: 52 54 49 54 49 4f 4e 5f 4e 54 46 54 29 20 3d 3d  RTITION_NTFT) ==
5920: 20 50 41 52 54 49 54 49 4f 4e 5f 46 41 54 5f 31   PARTITION_FAT_1
5930: 32 0a 09 20 20 7c 7c 20 28 74 20 26 20 7e 50 41  2..  || (t & ~PA
5940: 52 54 49 54 49 4f 4e 5f 4e 54 46 54 29 20 3d 3d  RTITION_NTFT) ==
5950: 20 50 41 52 54 49 54 49 4f 4e 5f 46 41 54 5f 31   PARTITION_FAT_1
5960: 36 0a 09 20 20 7c 7c 20 28 74 20 26 20 7e 50 41  6..  || (t & ~PA
5970: 52 54 49 54 49 4f 4e 5f 4e 54 46 54 29 20 3d 3d  RTITION_NTFT) ==
5980: 20 50 41 52 54 49 54 49 4f 4e 5f 49 46 53 0a 09   PARTITION_IFS..
5990: 20 20 7c 7c 20 28 74 20 26 20 7e 50 41 52 54 49    || (t & ~PARTI
59a0: 54 49 4f 4e 5f 4e 54 46 54 29 20 3d 3d 20 50 41  TION_NTFT) == PA
59b0: 52 54 49 54 49 4f 4e 5f 48 55 47 45 0a 09 20 20  RTITION_HUGE..  
59c0: 7c 7c 20 28 74 20 26 20 7e 50 41 52 54 49 54 49  || (t & ~PARTITI
59d0: 4f 4e 5f 4e 54 46 54 29 20 3d 3d 20 50 41 52 54  ON_NTFT) == PART
59e0: 49 54 49 4f 4e 5f 46 41 54 33 32 0a 09 20 20 7c  ITION_FAT32..  |
59f0: 7c 20 28 74 20 26 20 7e 50 41 52 54 49 54 49 4f  | (t & ~PARTITIO
5a00: 4e 5f 4e 54 46 54 29 20 3d 3d 20 50 41 52 54 49  N_NTFT) == PARTI
5a10: 54 49 4f 4e 5f 46 41 54 33 32 5f 58 49 4e 54 31  TION_FAT32_XINT1
5a20: 33 0a 09 20 20 7c 7c 20 28 74 20 26 20 7e 50 41  3..  || (t & ~PA
5a30: 52 54 49 54 49 4f 4e 5f 4e 54 46 54 29 20 3d 3d  RTITION_NTFT) ==
5a40: 20 50 41 52 54 49 54 49 4f 4e 5f 58 49 4e 54 31   PARTITION_XINT1
5a50: 33 3b 0a 7d 0a 0a 62 6f 6f 6c 20 49 73 43 6f 6e  3;.}..bool IsCon
5a60: 74 61 69 6e 65 72 50 61 72 74 69 74 69 6f 6e 28  tainerPartition(
5a70: 42 59 54 45 20 74 29 20 7b 0a 09 72 65 74 75 72  BYTE t) {..retur
5a80: 6e 20 28 28 74 20 26 20 50 41 52 54 49 54 49 4f  n ((t & PARTITIO
5a90: 4e 5f 4e 54 46 54 29 0a 09 20 20 26 26 20 28 28  N_NTFT)..  && ((
5aa0: 74 20 26 20 7e 56 41 4c 49 44 5f 4e 54 46 54 29  t & ~VALID_NTFT)
5ab0: 20 3d 3d 20 50 41 52 54 49 54 49 4f 4e 5f 45 58   == PARTITION_EX
5ac0: 54 45 4e 44 45 44 0a 09 20 20 20 20 7c 7c 20 28  TENDED..    || (
5ad0: 74 20 26 20 7e 56 41 4c 49 44 5f 4e 54 46 54 29  t & ~VALID_NTFT)
5ae0: 20 3d 3d 20 50 41 52 54 49 54 49 4f 4e 5f 58 49   == PARTITION_XI
5af0: 4e 54 31 33 5f 45 58 54 45 4e 44 45 44 29 29 0a  NT13_EXTENDED)).
5b00: 09 20 20 7c 7c 20 28 74 20 26 20 7e 50 41 52 54  .  || (t & ~PART
5b10: 49 54 49 4f 4e 5f 4e 54 46 54 29 20 3d 3d 20 50  ITION_NTFT) == P
5b20: 41 52 54 49 54 49 4f 4e 5f 45 58 54 45 4e 44 45  ARTITION_EXTENDE
5b30: 44 0a 09 20 20 7c 7c 20 28 74 20 26 20 7e 50 41  D..  || (t & ~PA
5b40: 52 54 49 54 49 4f 4e 5f 4e 54 46 54 29 20 3d 3d  RTITION_NTFT) ==
5b50: 20 50 41 52 54 49 54 49 4f 4e 5f 58 49 4e 54 31   PARTITION_XINT1
5b60: 33 5f 45 58 54 45 4e 44 45 44 3b 0a 7d 0a        3_EXTENDED;.}.