Home | Info | Community | Development | myReactOS | Contact Us
ReactOS Development > Doxygenwinioctl.h
Go to the documentation of this file.
00001 #ifndef _WINIOCTL_ 00002 #define _WINIOCTL_ 00003 00004 #ifdef __cplusplus 00005 extern "C" { 00006 #endif 00007 00008 #ifdef _MSC_VER 00009 #pragma warning(push) 00010 #pragma warning(disable:4201) 00011 #pragma warning(disable:4820) 00012 #endif 00013 00014 #define HIST_NO_OF_BUCKETS 24 00015 #define HISTOGRAM_BUCKET_SIZE sizeof(HISTOGRAM_BUCKET) 00016 #define DISK_HISTOGRAM_SIZE sizeof(DISK_HISTOGRAM) 00017 #define CTL_CODE(t,f,m,a) (((t)<<16)|((a)<<14)|((f)<<2)|(m)) 00018 #define DEVICE_TYPE_FROM_CTL_CODE(c) (((DWORD)((c)&0xffff0000))>>16) 00019 00020 #ifndef _NTDDSTOR_H_ 00021 #define IOCTL_STORAGE_BASE FILE_DEVICE_MASS_STORAGE 00022 #define IOCTL_STORAGE_CHECK_VERIFY CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_READ_ACCESS) 00023 #define IOCTL_STORAGE_CHECK_VERIFY2 CTL_CODE(IOCTL_STORAGE_BASE, 0x0200, METHOD_BUFFERED, FILE_ANY_ACCESS) 00024 #define IOCTL_STORAGE_MEDIA_REMOVAL CTL_CODE(IOCTL_STORAGE_BASE, 0x0201, METHOD_BUFFERED, FILE_READ_ACCESS) 00025 #define IOCTL_STORAGE_EJECT_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0202, METHOD_BUFFERED, FILE_READ_ACCESS) 00026 #define IOCTL_STORAGE_LOAD_MEDIA CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_READ_ACCESS) 00027 #define IOCTL_STORAGE_LOAD_MEDIA2 CTL_CODE(IOCTL_STORAGE_BASE, 0x0203, METHOD_BUFFERED, FILE_ANY_ACCESS) 00028 #define IOCTL_STORAGE_RESERVE CTL_CODE(IOCTL_STORAGE_BASE, 0x0204, METHOD_BUFFERED, FILE_READ_ACCESS) 00029 #define IOCTL_STORAGE_RELEASE CTL_CODE(IOCTL_STORAGE_BASE, 0x0205, METHOD_BUFFERED, FILE_READ_ACCESS) 00030 #define IOCTL_STORAGE_FIND_NEW_DEVICES CTL_CODE(IOCTL_STORAGE_BASE, 0x0206, METHOD_BUFFERED, FILE_READ_ACCESS) 00031 #define IOCTL_STORAGE_EJECTION_CONTROL CTL_CODE(IOCTL_STORAGE_BASE, 0x0250, METHOD_BUFFERED, FILE_ANY_ACCESS) 00032 #define IOCTL_STORAGE_MCN_CONTROL CTL_CODE(IOCTL_STORAGE_BASE, 0x0251, METHOD_BUFFERED, FILE_ANY_ACCESS) 00033 #define IOCTL_STORAGE_GET_MEDIA_TYPES CTL_CODE(IOCTL_STORAGE_BASE, 0x0300, METHOD_BUFFERED, FILE_ANY_ACCESS) 00034 #define IOCTL_STORAGE_GET_MEDIA_TYPES_EX CTL_CODE(IOCTL_STORAGE_BASE, 0x0301, METHOD_BUFFERED, FILE_ANY_ACCESS) 00035 #define IOCTL_STORAGE_RESET_BUS CTL_CODE(IOCTL_STORAGE_BASE, 0x0400, METHOD_BUFFERED, FILE_READ_ACCESS) 00036 #define IOCTL_STORAGE_RESET_DEVICE CTL_CODE(IOCTL_STORAGE_BASE, 0x0401, METHOD_BUFFERED, FILE_READ_ACCESS) 00037 #define IOCTL_STORAGE_GET_DEVICE_NUMBER CTL_CODE(IOCTL_STORAGE_BASE, 0x0420, METHOD_BUFFERED, FILE_ANY_ACCESS) 00038 #define IOCTL_STORAGE_PREDICT_FAILURE CTL_CODE(IOCTL_STORAGE_BASE, 0x0440, METHOD_BUFFERED, FILE_ANY_ACCESS) 00039 #endif 00040 00041 #define IOCTL_DISK_BASE FILE_DEVICE_DISK 00042 #define IOCTL_DISK_GET_DRIVE_GEOMETRY CTL_CODE(IOCTL_DISK_BASE,0,METHOD_BUFFERED, FILE_ANY_ACCESS) 00043 #define IOCTL_DISK_GET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,1,METHOD_BUFFERED,FILE_READ_ACCESS) 00044 #define IOCTL_DISK_SET_PARTITION_INFO CTL_CODE(IOCTL_DISK_BASE,2,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 00045 #define IOCTL_DISK_GET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,3,METHOD_BUFFERED,FILE_READ_ACCESS) 00046 #define IOCTL_DISK_SET_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,4,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 00047 #define IOCTL_DISK_VERIFY CTL_CODE(IOCTL_DISK_BASE,5,METHOD_BUFFERED,FILE_ANY_ACCESS) 00048 #define IOCTL_DISK_FORMAT_TRACKS CTL_CODE(IOCTL_DISK_BASE,6,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 00049 #define IOCTL_DISK_REASSIGN_BLOCKS CTL_CODE(IOCTL_DISK_BASE,7,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 00050 #define IOCTL_DISK_PERFORMANCE CTL_CODE(IOCTL_DISK_BASE,8,METHOD_BUFFERED,FILE_ANY_ACCESS) 00051 #define IOCTL_DISK_IS_WRITABLE CTL_CODE(IOCTL_DISK_BASE,9,METHOD_BUFFERED,FILE_ANY_ACCESS) 00052 #define IOCTL_DISK_LOGGING CTL_CODE(IOCTL_DISK_BASE,10,METHOD_BUFFERED,FILE_ANY_ACCESS) 00053 #define IOCTL_DISK_FORMAT_TRACKS_EX CTL_CODE(IOCTL_DISK_BASE,11,METHOD_BUFFERED,FILE_READ_ACCESS|FILE_WRITE_ACCESS) 00054 #define IOCTL_DISK_HISTOGRAM_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,12,METHOD_BUFFERED,FILE_ANY_ACCESS) 00055 #define IOCTL_DISK_HISTOGRAM_DATA CTL_CODE(IOCTL_DISK_BASE,13,METHOD_BUFFERED,FILE_ANY_ACCESS) 00056 #define IOCTL_DISK_HISTOGRAM_RESET CTL_CODE(IOCTL_DISK_BASE,14,METHOD_BUFFERED,FILE_ANY_ACCESS) 00057 #define IOCTL_DISK_REQUEST_STRUCTURE CTL_CODE(IOCTL_DISK_BASE,15,METHOD_BUFFERED,FILE_ANY_ACCESS) 00058 #define IOCTL_DISK_REQUEST_DATA CTL_CODE(IOCTL_DISK_BASE,16,METHOD_BUFFERED,FILE_ANY_ACCESS) 00059 #define IOCTL_DISK_GET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x12,METHOD_BUFFERED,FILE_ANY_ACCESS) 00060 #define IOCTL_DISK_SET_PARTITION_INFO_EX CTL_CODE(IOCTL_DISK_BASE,0x13,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00061 #define IOCTL_DISK_GET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x14,METHOD_BUFFERED,FILE_ANY_ACCESS) 00062 #define IOCTL_DISK_SET_DRIVE_LAYOUT_EX CTL_CODE(IOCTL_DISK_BASE,0x15,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00063 #define IOCTL_DISK_CREATE_DISK CTL_CODE(IOCTL_DISK_BASE,0x16,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00064 #define IOCTL_DISK_GET_LENGTH_INFO CTL_CODE(IOCTL_DISK_BASE,0x17,METHOD_BUFFERED,FILE_READ_ACCESS) 00065 #define IOCTL_DISK_PERFORMANCE_OFF CTL_CODE(IOCTL_DISK_BASE,0x18,METHOD_BUFFERED,FILE_ANY_ACCESS) 00066 #define IOCTL_DISK_GET_DRIVE_GEOMETRY_EX CTL_CODE(IOCTL_DISK_BASE,0x28,METHOD_BUFFERED,FILE_ANY_ACCESS) 00067 #define IOCTL_DISK_GROW_PARTITION CTL_CODE(IOCTL_DISK_BASE,0x34,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00068 #define IOCTL_DISK_GET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x35,METHOD_BUFFERED,FILE_READ_ACCESS) 00069 #define IOCTL_DISK_SET_CACHE_INFORMATION CTL_CODE(IOCTL_DISK_BASE,0x36,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00070 #define IOCTL_DISK_DELETE_DRIVE_LAYOUT CTL_CODE(IOCTL_DISK_BASE,0x40,METHOD_BUFFERED,FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00071 #define IOCTL_DISK_UPDATE_PROPERTIES CTL_CODE(IOCTL_DISK_BASE,0x50,METHOD_BUFFERED,FILE_ANY_ACCESS) 00072 #define IOCTL_DISK_CHECK_VERIFY CTL_CODE(IOCTL_DISK_BASE,0x200,METHOD_BUFFERED,FILE_READ_ACCESS) 00073 #define IOCTL_DISK_MEDIA_REMOVAL CTL_CODE(IOCTL_DISK_BASE,0x201,METHOD_BUFFERED,FILE_READ_ACCESS) 00074 #define IOCTL_DISK_EJECT_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x202,METHOD_BUFFERED,FILE_READ_ACCESS) 00075 #define IOCTL_DISK_LOAD_MEDIA CTL_CODE(IOCTL_DISK_BASE,0x203,METHOD_BUFFERED,FILE_READ_ACCESS) 00076 #define IOCTL_DISK_RESERVE CTL_CODE(IOCTL_DISK_BASE,0x204,METHOD_BUFFERED,FILE_READ_ACCESS) 00077 #define IOCTL_DISK_RELEASE CTL_CODE(IOCTL_DISK_BASE,0x205,METHOD_BUFFERED,FILE_READ_ACCESS) 00078 #define IOCTL_DISK_FIND_NEW_DEVICES CTL_CODE(IOCTL_DISK_BASE,0x206,METHOD_BUFFERED,FILE_READ_ACCESS) 00079 #define IOCTL_DISK_REMOVE_DEVICE CTL_CODE(IOCTL_DISK_BASE,0x207,METHOD_BUFFERED,FILE_READ_ACCESS) 00080 #define IOCTL_DISK_GET_MEDIA_TYPES CTL_CODE(IOCTL_DISK_BASE,0x300,METHOD_BUFFERED,FILE_ANY_ACCESS) 00081 #define IOCTL_DISK_UPDATE_DRIVE_SIZE CTL_CODE(IOCTL_DISK_BASE, 0x0032, METHOD_BUFFERED, FILE_READ_ACCESS | FILE_WRITE_ACCESS) 00082 #define IOCTL_SERIAL_LSRMST_INSERT CTL_CODE(FILE_DEVICE_SERIAL_PORT,31,METHOD_BUFFERED,FILE_ANY_ACCESS) 00083 #define IOCTL_VOLUME_BASE ((DWORD)'V') 00084 #define IOCTL_VOLUME_GET_VOLUME_DISK_EXTENTS CTL_CODE(IOCTL_VOLUME_BASE, 0, METHOD_BUFFERED, FILE_ANY_ACCESS) 00085 #define FSCTL_LOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,6,METHOD_BUFFERED,FILE_ANY_ACCESS) 00086 #define FSCTL_UNLOCK_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,7,METHOD_BUFFERED,FILE_ANY_ACCESS) 00087 #define FSCTL_PIPE_IMPERSONATE CTL_CODE(FILE_DEVICE_NAMED_PIPE, 7, METHOD_BUFFERED, FILE_ANY_ACCESS) 00088 #define FSCTL_DISMOUNT_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,8,METHOD_BUFFERED,FILE_ANY_ACCESS) 00089 #define FSCTL_MOUNT_DBLS_VOLUME CTL_CODE(FILE_DEVICE_FILE_SYSTEM,13,METHOD_BUFFERED,FILE_ANY_ACCESS) 00090 #define FSCTL_GET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,15,METHOD_BUFFERED,FILE_ANY_ACCESS) 00091 #define FSCTL_SET_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,16,METHOD_BUFFERED,FILE_READ_DATA|FILE_WRITE_DATA) 00092 #define FSCTL_READ_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,17,METHOD_NEITHER,FILE_READ_DATA) 00093 #define FSCTL_WRITE_COMPRESSION CTL_CODE(FILE_DEVICE_FILE_SYSTEM,18,METHOD_NEITHER,FILE_WRITE_DATA) 00094 #define FSCTL_GET_NTFS_VOLUME_DATA CTL_CODE(FILE_DEVICE_FILE_SYSTEM,25,METHOD_BUFFERED,FILE_ANY_ACCESS) 00095 #define FSCTL_GET_VOLUME_BITMAP CTL_CODE(FILE_DEVICE_FILE_SYSTEM,27,METHOD_NEITHER,FILE_ANY_ACCESS) 00096 #define FSCTL_GET_RETRIEVAL_POINTERS CTL_CODE(FILE_DEVICE_FILE_SYSTEM,28,METHOD_NEITHER,FILE_ANY_ACCESS) 00097 #define FSCTL_MOVE_FILE CTL_CODE(FILE_DEVICE_FILE_SYSTEM,29,METHOD_BUFFERED,FILE_ANY_ACCESS) 00098 #define FSCTL_GET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 42, METHOD_BUFFERED, FILE_ANY_ACCESS) 00099 #define FSCTL_SET_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 41, METHOD_BUFFERED, FILE_ANY_ACCESS) 00100 #define FSCTL_DELETE_REPARSE_POINT CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 43, METHOD_BUFFERED, FILE_ANY_ACCESS) 00101 #define FSCTL_SET_SPARSE CTL_CODE(FILE_DEVICE_FILE_SYSTEM, 49, METHOD_BUFFERED, FILE_SPECIAL_ACCESS) 00102 #define DEVICE_TYPE DWORD 00103 #define FILE_DEVICE_BEEP 1 00104 #define FILE_DEVICE_CD_ROM 2 00105 #define FILE_DEVICE_CD_ROM_FILE_SYSTEM 3 00106 #define FILE_DEVICE_CONTROLLER 4 00107 #define FILE_DEVICE_DATALINK 5 00108 #define FILE_DEVICE_DFS 6 00109 #define FILE_DEVICE_DISK 7 00110 #define FILE_DEVICE_DISK_FILE_SYSTEM 8 00111 #define FILE_DEVICE_FILE_SYSTEM 9 00112 #define FILE_DEVICE_INPORT_PORT 10 00113 #define FILE_DEVICE_KEYBOARD 11 00114 #define FILE_DEVICE_MAILSLOT 12 00115 #define FILE_DEVICE_MIDI_IN 13 00116 #define FILE_DEVICE_MIDI_OUT 14 00117 #define FILE_DEVICE_MOUSE 15 00118 #define FILE_DEVICE_MULTI_UNC_PROVIDER 16 00119 #define FILE_DEVICE_NAMED_PIPE 17 00120 #define FILE_DEVICE_NETWORK 18 00121 #define FILE_DEVICE_NETWORK_BROWSER 19 00122 #define FILE_DEVICE_NETWORK_FILE_SYSTEM 20 00123 #define FILE_DEVICE_NULL 21 00124 #define FILE_DEVICE_PARALLEL_PORT 22 00125 #define FILE_DEVICE_PHYSICAL_NETCARD 23 00126 #define FILE_DEVICE_PRINTER 24 00127 #define FILE_DEVICE_SCANNER 25 00128 #define FILE_DEVICE_SERIAL_MOUSE_PORT 26 00129 #define FILE_DEVICE_SERIAL_PORT 27 00130 #define FILE_DEVICE_SCREEN 28 00131 #define FILE_DEVICE_SOUND 29 00132 #define FILE_DEVICE_STREAMS 30 00133 #define FILE_DEVICE_TAPE 31 00134 #define FILE_DEVICE_TAPE_FILE_SYSTEM 32 00135 #define FILE_DEVICE_TRANSPORT 33 00136 #define FILE_DEVICE_UNKNOWN 34 00137 #define FILE_DEVICE_VIDEO 35 00138 #define FILE_DEVICE_VIRTUAL_DISK 36 00139 #define FILE_DEVICE_WAVE_IN 37 00140 #define FILE_DEVICE_WAVE_OUT 38 00141 #define FILE_DEVICE_8042_PORT 39 00142 #define FILE_DEVICE_NETWORK_REDIRECTOR 40 00143 #define FILE_DEVICE_BATTERY 41 00144 #define FILE_DEVICE_BUS_EXTENDER 42 00145 #define FILE_DEVICE_MODEM 43 00146 #define FILE_DEVICE_VDM 44 00147 #define FILE_DEVICE_MASS_STORAGE 45 00148 #define FILE_DEVICE_SMB 46 00149 #define FILE_DEVICE_KS 47 00150 #define FILE_DEVICE_CHANGER 48 00151 #define FILE_DEVICE_SMARTCARD 49 00152 #define FILE_DEVICE_ACPI 50 00153 #define FILE_DEVICE_DVD 51 00154 #define FILE_DEVICE_FULLSCREEN_VIDEO 52 00155 #define FILE_DEVICE_DFS_FILE_SYSTEM 53 00156 #define FILE_DEVICE_DFS_VOLUME 54 00157 #define FILE_DEVICE_SERENUM 55 00158 #define FILE_DEVICE_TERMSRV 56 00159 #define FILE_DEVICE_KSEC 57 00160 #define PARTITION_ENTRY_UNUSED 0 00161 #define PARTITION_FAT_12 1 00162 #define PARTITION_XENIX_1 2 00163 #define PARTITION_XENIX_2 3 00164 #define PARTITION_FAT_16 4 00165 #define PARTITION_EXTENDED 5 00166 #define PARTITION_HUGE 6 00167 #define PARTITION_IFS 7 00168 #define PARTITION_FAT32 0x0B 00169 #define PARTITION_FAT32_XINT13 0x0C 00170 #define PARTITION_XINT13 0x0E 00171 #define PARTITION_XINT13_EXTENDED 0x0F 00172 #define PARTITION_PREP 0x41 00173 #define PARTITION_LDM 0x42 00174 #define PARTITION_UNIX 0x63 00175 #define PARTITION_NTFT 128 00176 #define VALID_NTFT 0xC0 00177 #define METHOD_BUFFERED 0 00178 #define METHOD_IN_DIRECT 1 00179 #define METHOD_OUT_DIRECT 2 00180 #define METHOD_NEITHER 3 00181 #define SERIAL_LSRMST_ESCAPE 0 00182 #define SERIAL_LSRMST_LSR_DATA 1 00183 #define SERIAL_LSRMST_LSR_NODATA 2 00184 #define SERIAL_LSRMST_MST 3 00185 /* Device GUIDs */ 00186 #ifdef DEFINE_GUID 00187 00188 DEFINE_GUID(GUID_DEVINTERFACE_COMPORT, 0x86E0D1E0L, 0x8089, 00189 0x11D0, 0x9C, 0xE4, 0x08, 0x00, 0x3E, 0x30, 0x1F, 0x73); 00190 DEFINE_GUID(GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR, 0x4D36E978L, 0xE325, 00191 0x11CE, 0xBF, 0xC1, 0x08, 0x00, 0x2B, 0xE1, 0x03, 0x18); 00192 00193 /* obsolete GUID names */ 00194 #define GUID_CLASS_COMPORT GUID_DEVINTERFACE_COMPORT 00195 #define GUID_SERENUM_BUS_ENUMERATOR GUID_DEVINTERFACE_SERENUM_BUS_ENUMERATOR 00196 00197 #endif /* DEFINE_GUID */ 00198 00199 /* Also in ddk/winddk.h */ 00200 #define FILE_ANY_ACCESS 0x00000000 00201 #define FILE_SPECIAL_ACCESS FILE_ANY_ACCESS 00202 #define FILE_READ_ACCESS 0x00000001 00203 #define FILE_WRITE_ACCESS 0x00000002 00204 00205 #define DISK_LOGGING_START 0 00206 #define DISK_LOGGING_STOP 1 00207 #define DISK_LOGGING_DUMP 2 00208 #define DISK_BINNING 3 00209 typedef WORD BAD_TRACK_NUMBER,*PBAD_TRACK_NUMBER; 00210 typedef enum _BIN_TYPES {RequestSize,RequestLocation} BIN_TYPES; 00211 typedef struct _BIN_RANGE { 00212 LARGE_INTEGER StartValue; 00213 LARGE_INTEGER Length; 00214 } BIN_RANGE,*PBIN_RANGE; 00215 typedef struct _BIN_COUNT { 00216 BIN_RANGE BinRange; 00217 DWORD BinCount; 00218 } BIN_COUNT,*PBIN_COUNT; 00219 typedef struct _BIN_RESULTS { 00220 DWORD NumberOfBins; 00221 BIN_COUNT BinCounts[1]; 00222 } BIN_RESULTS,*PBIN_RESULTS; 00223 typedef enum _PARTITION_STYLE { 00224 PARTITION_STYLE_MBR, 00225 PARTITION_STYLE_GPT, 00226 PARTITION_STYLE_RAW 00227 } PARTITION_STYLE; 00228 typedef struct { 00229 GUID DiskId; 00230 DWORD MaxPartitionCount; 00231 } CREATE_DISK_GPT,*PCREATE_DISK_GPT; 00232 typedef struct { 00233 DWORD Signature; 00234 } CREATE_DISK_MBR,*PCREATE_DISK_MBR; 00235 typedef struct { 00236 PARTITION_STYLE PartitionStyle; 00237 _ANONYMOUS_UNION union { 00238 CREATE_DISK_MBR Mbr; 00239 CREATE_DISK_GPT Gpt; 00240 }; 00241 } CREATE_DISK,*PCREATE_DISK; 00242 typedef enum { 00243 EqualPriority, 00244 KeepPrefetchedData, 00245 KeepReadData 00246 } DISK_CACHE_RETENTION_PRIORITY; 00247 typedef struct _DISK_CACHE_INFORMATION { 00248 BOOLEAN ParametersSavable; 00249 BOOLEAN ReadCacheEnabled; 00250 BOOLEAN WriteCacheEnabled; 00251 DISK_CACHE_RETENTION_PRIORITY ReadRetentionPriority; 00252 DISK_CACHE_RETENTION_PRIORITY WriteRetentionPriority; 00253 WORD DisablePrefetchTransferLength; 00254 BOOLEAN PrefetchScalar; 00255 _ANONYMOUS_UNION union { 00256 struct { 00257 WORD Minimum; 00258 WORD Maximum; 00259 WORD MaximumBlocks; 00260 } ScalarPrefetch; 00261 struct { 00262 WORD Minimum; 00263 WORD Maximum; 00264 } BlockPrefetch; 00265 }; 00266 } DISK_CACHE_INFORMATION,*PDISK_CACHE_INFORMATION; 00267 typedef enum _DETECTION_TYPE { 00268 DetectNone, 00269 DetectInt13, 00270 DetectExInt13 00271 } DETECTION_TYPE; 00272 typedef struct _DISK_INT13_INFO { 00273 WORD DriveSelect; 00274 DWORD MaxCylinders; 00275 WORD SectorsPerTrack; 00276 WORD MaxHeads; 00277 WORD NumberDrives; 00278 } DISK_INT13_INFO,*PDISK_INT13_INFO; 00279 typedef struct _DISK_EX_INT13_INFO { 00280 WORD ExBufferSize; 00281 WORD ExFlags; 00282 DWORD ExCylinders; 00283 DWORD ExHeads; 00284 DWORD ExSectorsPerTrack; 00285 DWORD64 ExSectorsPerDrive; 00286 WORD ExSectorSize; 00287 WORD ExReserved; 00288 } DISK_EX_INT13_INFO,*PDISK_EX_INT13_INFO; 00289 typedef struct _DISK_DETECTION_INFO { 00290 DWORD SizeOfDetectInfo; 00291 DETECTION_TYPE DetectionType; 00292 _ANONYMOUS_UNION union { 00293 _ANONYMOUS_STRUCT struct { 00294 DISK_INT13_INFO Int13; 00295 DISK_EX_INT13_INFO ExInt13; 00296 }; 00297 }; 00298 } DISK_DETECTION_INFO,*PDISK_DETECTION_INFO; 00299 typedef enum _MEDIA_TYPE { 00300 Unknown, 00301 F5_1Pt2_512, 00302 F3_1Pt44_512, 00303 F3_2Pt88_512, 00304 F3_20Pt8_512, 00305 F3_720_512, 00306 F5_360_512, 00307 F5_320_512, 00308 F5_320_1024, 00309 F5_180_512, 00310 F5_160_512, 00311 RemovableMedia, 00312 FixedMedia, 00313 F3_120M_512, 00314 F3_640_512, 00315 F5_640_512, 00316 F5_720_512, 00317 F3_1Pt2_512, 00318 F3_1Pt23_1024, 00319 F5_1Pt23_1024, 00320 F3_128Mb_512, 00321 F3_230Mb_512, 00322 F8_256_128, 00323 F3_200Mb_512, 00324 F3_240M_512, 00325 F3_32M_512 00326 } MEDIA_TYPE,*PMEDIA_TYPE; 00327 typedef struct _DISK_GEOMETRY { 00328 LARGE_INTEGER Cylinders; 00329 MEDIA_TYPE MediaType; 00330 DWORD TracksPerCylinder; 00331 DWORD SectorsPerTrack; 00332 DWORD BytesPerSector; 00333 } DISK_GEOMETRY,*PDISK_GEOMETRY; 00334 typedef struct _DISK_GEOMETRY_EX { 00335 DISK_GEOMETRY Geometry; 00336 LARGE_INTEGER DiskSize; 00337 BYTE Data[1]; 00338 } DISK_GEOMETRY_EX,*PDISK_GEOMETRY_EX; 00339 typedef struct _DISK_GROW_PARTITION { 00340 DWORD PartitionNumber; 00341 LARGE_INTEGER BytesToGrow; 00342 } DISK_GROW_PARTITION, *PDISK_GROW_PARTITION; 00343 typedef struct _DISK_PARTITION_INFO { 00344 DWORD SizeOfPartitionInfo; 00345 PARTITION_STYLE PartitionStyle; 00346 _ANONYMOUS_UNION union { 00347 struct { 00348 DWORD Signature; 00349 } Mbr; 00350 struct { 00351 GUID DiskId; 00352 } Gpt; 00353 }; 00354 } DISK_PARTITION_INFO,*PDISK_PARTITION_INFO; 00355 typedef struct _DISK_PERFORMANCE { 00356 LARGE_INTEGER BytesRead; 00357 LARGE_INTEGER BytesWritten; 00358 LARGE_INTEGER ReadTime; 00359 LARGE_INTEGER WriteTime; 00360 DWORD ReadCount; 00361 DWORD WriteCount; 00362 DWORD QueueDepth; 00363 } DISK_PERFORMANCE, *PDISK_PERFORMANCE; 00364 typedef struct _DISK_RECORD { 00365 LARGE_INTEGER ByteOffset; 00366 LARGE_INTEGER StartTime; 00367 LARGE_INTEGER EndTime; 00368 PVOID VirtualAddress; 00369 DWORD NumberOfBytes; 00370 BYTE DeviceNumber; 00371 BOOLEAN ReadRequest; 00372 } DISK_RECORD,*PDISK_RECORD; 00373 typedef struct _DISK_LOGGING { 00374 BYTE Function; 00375 PVOID BufferAddress; 00376 DWORD BufferSize; 00377 } DISK_LOGGING,*PDISK_LOGGING; 00378 typedef struct DiskQuotaUserInformation { 00379 LONGLONG QuotaUsed; 00380 LONGLONG QuotaThreshold; 00381 LONGLONG QuotaLimit; 00382 } DISKQUOTA_USER_INFORMATION,*PDISKQUOTA_USER_INFORMATION; 00383 typedef struct _FORMAT_PARAMETERS { 00384 MEDIA_TYPE MediaType; 00385 DWORD StartCylinderNumber; 00386 DWORD EndCylinderNumber; 00387 DWORD StartHeadNumber; 00388 DWORD EndHeadNumber; 00389 } FORMAT_PARAMETERS,*PFORMAT_PARAMETERS; 00390 typedef struct _FORMAT_EX_PARAMETERS { 00391 MEDIA_TYPE MediaType; 00392 DWORD StartCylinderNumber; 00393 DWORD EndCylinderNumber; 00394 DWORD StartHeadNumber; 00395 DWORD EndHeadNumber; 00396 WORD FormatGapLength; 00397 WORD SectorsPerTrack; 00398 WORD SectorNumber[1]; 00399 } FORMAT_EX_PARAMETERS,*PFORMAT_EX_PARAMETERS; 00400 typedef struct { 00401 LARGE_INTEGER Length; 00402 } GET_LENGTH_INFORMATION; 00403 typedef struct _HISTOGRAM_BUCKET { 00404 DWORD Reads; 00405 DWORD Writes; 00406 } HISTOGRAM_BUCKET,*PHISTOGRAM_BUCKET; 00407 typedef struct _DISK_HISTOGRAM { 00408 LARGE_INTEGER DiskSize; 00409 LARGE_INTEGER Start; 00410 LARGE_INTEGER End; 00411 LARGE_INTEGER Average; 00412 LARGE_INTEGER AverageRead; 00413 LARGE_INTEGER AverageWrite; 00414 DWORD Granularity; 00415 DWORD Size; 00416 DWORD ReadCount; 00417 DWORD WriteCount; 00418 PHISTOGRAM_BUCKET Histogram; 00419 } DISK_HISTOGRAM,*PDISK_HISTOGRAM; 00420 typedef struct _DISK_EXTENT { 00421 DWORD DiskNumber; 00422 LARGE_INTEGER StartingOffset; 00423 LARGE_INTEGER ExtentLength; 00424 } DISK_EXTENT,*PDISK_EXTENT; 00425 typedef struct _VOLUME_DISK_EXTENTS { 00426 DWORD NumberOfDiskExtents; 00427 DISK_EXTENT Extents[1]; 00428 } VOLUME_DISK_EXTENTS,*PVOLUME_DISK_EXTENTS; 00429 typedef struct _PARTITION_INFORMATION { 00430 LARGE_INTEGER StartingOffset; 00431 LARGE_INTEGER PartitionLength; 00432 DWORD HiddenSectors; 00433 DWORD PartitionNumber; 00434 BYTE PartitionType; 00435 BOOLEAN BootIndicator; 00436 BOOLEAN RecognizedPartition; 00437 BOOLEAN RewritePartition; 00438 } PARTITION_INFORMATION,*PPARTITION_INFORMATION; 00439 typedef struct _DRIVE_LAYOUT_INFORMATION { 00440 DWORD PartitionCount; 00441 DWORD Signature; 00442 PARTITION_INFORMATION PartitionEntry[1]; 00443 } DRIVE_LAYOUT_INFORMATION, *PDRIVE_LAYOUT_INFORMATION; 00444 typedef struct _DRIVE_LAYOUT_INFORMATION_GPT { 00445 GUID DiskId; 00446 LARGE_INTEGER StartingUsableOffset; 00447 LARGE_INTEGER UsableLength; 00448 ULONG MaxPartitionCount; 00449 } DRIVE_LAYOUT_INFORMATION_GPT,*PDRIVE_LAYOUT_INFORMATION_GPT; 00450 typedef struct _DRIVE_LAYOUT_INFORMATION_MBR { 00451 ULONG Signature; 00452 } DRIVE_LAYOUT_INFORMATION_MBR, *PDRIVE_LAYOUT_INFORMATION_MBR; 00453 typedef struct _PARTITION_INFORMATION_MBR { 00454 BYTE PartitionType; 00455 BOOLEAN BootIndicator; 00456 BOOLEAN RecognizedPartition; 00457 DWORD HiddenSectors; 00458 } PARTITION_INFORMATION_MBR; 00459 typedef struct _PARTITION_INFORMATION_GPT { 00460 GUID PartitionType; 00461 GUID PartitionId; 00462 DWORD64 Attributes; 00463 WCHAR Name[36]; 00464 } PARTITION_INFORMATION_GPT; 00465 typedef struct _PARTITION_INFORMATION_EX { 00466 PARTITION_STYLE PartitionStyle; 00467 LARGE_INTEGER StartingOffset; 00468 LARGE_INTEGER PartitionLength; 00469 DWORD PartitionNumber; 00470 BOOLEAN RewritePartition; 00471 _ANONYMOUS_UNION union { 00472 PARTITION_INFORMATION_MBR Mbr; 00473 PARTITION_INFORMATION_GPT Gpt; 00474 }; 00475 } PARTITION_INFORMATION_EX; 00476 typedef struct _DRIVE_LAYOUT_INFORMATION_EX { 00477 DWORD PartitionStyle; 00478 DWORD PartitionCount; 00479 _ANONYMOUS_UNION union { 00480 DRIVE_LAYOUT_INFORMATION_MBR Mbr; 00481 DRIVE_LAYOUT_INFORMATION_GPT Gpt; 00482 }; 00483 PARTITION_INFORMATION_EX PartitionEntry[1]; 00484 } DRIVE_LAYOUT_INFORMATION_EX,*PDRIVE_LAYOUT_INFORMATION_EX; 00485 typedef struct { 00486 HANDLE FileHandle; 00487 LARGE_INTEGER StartingVcn; 00488 LARGE_INTEGER StartingLcn; 00489 DWORD ClusterCount; 00490 } MOVE_FILE_DATA,*PMOVE_FILE_DATA; 00491 typedef struct _PERF_BIN { 00492 DWORD NumberOfBins; 00493 DWORD TypeOfBin; 00494 BIN_RANGE BinsRanges[1]; 00495 } PERF_BIN,*PPERF_BIN; 00496 00497 #ifndef _NTDDSTOR_H_ 00498 typedef struct _PREVENT_MEDIA_REMOVAL { 00499 BOOLEAN PreventMediaRemoval; 00500 } PREVENT_MEDIA_REMOVAL,*PPREVENT_MEDIA_REMOVAL; 00501 #endif 00502 00503 typedef struct RETRIEVAL_POINTERS_BUFFER { 00504 DWORD ExtentCount; 00505 LARGE_INTEGER StartingVcn; 00506 struct { 00507 LARGE_INTEGER NextVcn; 00508 LARGE_INTEGER Lcn; 00509 } Extents[1]; 00510 } RETRIEVAL_POINTERS_BUFFER,*PRETRIEVAL_POINTERS_BUFFER; 00511 typedef struct _REASSIGN_BLOCKS { 00512 WORD Reserved; 00513 WORD Count; 00514 DWORD BlockNumber[1]; 00515 } REASSIGN_BLOCKS,*PREASSIGN_BLOCKS; 00516 typedef struct _SET_PARTITION_INFORMATION { 00517 BYTE PartitionType; 00518 } SET_PARTITION_INFORMATION,*PSET_PARTITION_INFORMATION; 00519 typedef struct { 00520 LARGE_INTEGER StartingLcn; 00521 } STARTING_LCN_INPUT_BUFFER,*PSTARTING_LCN_INPUT_BUFFER; 00522 typedef struct { 00523 LARGE_INTEGER StartingVcn; 00524 } STARTING_VCN_INPUT_BUFFER,*PSTARTING_VCN_INPUT_BUFFER; 00525 typedef struct _VERIFY_INFORMATION { 00526 LARGE_INTEGER StartingOffset; 00527 DWORD Length; 00528 } VERIFY_INFORMATION,*PVERIFY_INFORMATION; 00529 typedef struct { 00530 LARGE_INTEGER StartingLcn; 00531 LARGE_INTEGER BitmapSize; 00532 BYTE Buffer[1]; 00533 } VOLUME_BITMAP_BUFFER,*PVOLUME_BITMAP_BUFFER; 00534 typedef struct { 00535 LARGE_INTEGER VolumeSerialNumber; 00536 LARGE_INTEGER NumberSectors; 00537 LARGE_INTEGER TotalClusters; 00538 LARGE_INTEGER FreeClusters; 00539 LARGE_INTEGER TotalReserved; 00540 DWORD BytesPerSector; 00541 DWORD BytesPerCluster; 00542 DWORD BytesPerFileRecordSegment; 00543 DWORD ClustersPerFileRecordSegment; 00544 LARGE_INTEGER MftValidDataLength; 00545 LARGE_INTEGER MftStartLcn; 00546 LARGE_INTEGER Mft2StartLcn; 00547 LARGE_INTEGER MftZoneStart; 00548 LARGE_INTEGER MftZoneEnd; 00549 } NTFS_VOLUME_DATA_BUFFER, *PNTFS_VOLUME_DATA_BUFFER; 00550 00551 #define IsRecognizedPartition(t)\ 00552 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_12))||\ 00553 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT_16))||\ 00554 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_IFS))||\ 00555 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_HUGE))||\ 00556 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32))||\ 00557 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_FAT32_XINT13))||\ 00558 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13))||\ 00559 ((t&~PARTITION_NTFT)==PARTITION_FAT_12)||\ 00560 ((t&~PARTITION_NTFT)==PARTITION_FAT_16)||\ 00561 ((t&~PARTITION_NTFT)==PARTITION_IFS)||\ 00562 ((t&~PARTITION_NTFT)==PARTITION_HUGE)||\ 00563 ((t&~PARTITION_NTFT)==PARTITION_FAT32)||\ 00564 ((t&~PARTITION_NTFT)==PARTITION_FAT32_XINT13)||\ 00565 ((t&~PARTITION_NTFT)==PARTITION_XINT13)) 00566 #define IsContainerPartition(t)\ 00567 (((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_EXTENDED))||\ 00568 ((t&PARTITION_NTFT)&&((t&~VALID_NTFT)==PARTITION_XINT13_EXTENDED))||\ 00569 ((t&~PARTITION_NTFT)==PARTITION_EXTENDED)||\ 00570 ((t&~PARTITION_NTFT)==PARTITION_XINT13_EXTENDED)) 00571 00572 #ifdef _MSC_VER 00573 #pragma warning(pop) 00574 #endif 00575 00576 #ifdef __cplusplus 00577 } 00578 #endif 00579 #endif /* _WINIOCTL_ */ Generated on Sun May 27 2012 04:32:43 for ReactOS by
1.7.6.1
|