Geoff Chappell, Software Analyst
The public symbol file NTKRPAMP.PDB for the original release of Windows 10 tells that the kernel is built with the IO_X.H header at
d:\th\minkernel\ntos\inc
and draws from it very many type definitions, many of which are essential knowledge for writing device drivers.
The header IO_X.H itself is not in any Device Driver Kit (DDK) or Windows Driver Kit (WDK). Yet most of its types that are used by the kernel are necessarily known to all kernel-mode programmers even outside Microsoft. How these types get known so widely is that they are also defined in one or another of what might be called the standard headers for kernel-mode programming, i.e., WDM.H, NTDDK.H and NTIFS.H. Most of these types and all the others are also defined in the NTOSP.H, which is much like the standard headers except that Microsoft does not ordinarily supply it with any Windows Driver Kit. It is, however, supplied with the Windows 10 WDK for the original release and for Version 1511.
Whether IO_X.H is the master header from which types are extracted for more or less public presentation, or whether IO_X.H also is generated from yet some other header, is not known. In the tables that follow, the line number on the left is from the unseen IO_X.H as inferred from the symbol file and the line numbers on the right are from the headers as supplied with the matching WDK.
Line Number | Type | WDM.H | NTDDK.H | NTIFS.H | NTOSP.H |
---|---|---|---|---|---|
413 | enum _DUMP_EVENTS | 23224 | |||
447 | struct _DUMP_INITIALIZATION_CONTEXT | 23258 | |||
469 | unnamed union for DiskInfo in _DUMP_INITIALIZATION_CONTEXT |
23280 | |||
470 | unnamed struct for Mbr in DiskInfo in _DUMP_INITIALIZATION_CONTEXT |
23281 | |||
474 | unnamed struct for Gpt in DiskInfo in _DUMP_INITIALIZATION_CONTEXT |
23285 | |||
736 | enum _CREATE_FILE_TYPE | 26433 | 23547 | ||
749 | struct _NAMED_PIPE_CREATE_PARAMETERS | 26446 | 23560 | ||
767 | struct _MAILSLOT_CREATE_PARAMETERS | 26464 | 23578 | ||
1450 | struct _FAST_IO_DISPATCH | 27111 | 24243 | ||
1488 | enum _FS_FILTER_SECTION_SYNC_TYPE | 14808 | |||
1497 | struct _FS_FILTER_SECTION_SYNC_OUTPUT | 14817 | |||
1508 | enum _FS_FILTER_STREAM_IO_NOTIFICATION_TYPE | 14828 | |||
1524 | union _FS_FILTER_PARAMETERS | 14844 | |||
1530 | unnamed struct for AcquireForModifiedPageWriter
in _FS_FILTER_PARAMETERS |
14850 | |||
1539 | unnamed struct for ReleaseForModifiedPageWriter
in _FS_FILTER_PARAMETERS |
14859 | |||
1547 | unnamed struct for AcquireForSectionSynchronization
in _FS_FILTER_PARAMETERS |
14867 | |||
1557 | unnamed struct for NotifyStreamFileObject
in _FS_FILTER_PARAMETERS |
14877 | |||
1566 | unnamed struct for Others in _FS_FILTER_PARAMETERS |
14886 | |||
1592 | struct _FS_FILTER_CALLBACK_DATA | 14912 | |||
1641 | struct _FS_FILTER_CALLBACKS | 14961 | |||
1692 | enum _IO_ALLOCATION_ACTION | 27147 | 24279 | ||
1720 | struct _IO_SECURITY_CONTEXT | 27175 | 24307 | ||
1747 | struct _VPB | 27200 | 24332 | ||
1805 | struct _WAIT_CONTEXT_BLOCK | 27258 | 24390 | ||
1888 | struct _DEVICE_OBJECT | 27300 | 24473 | ||
1903 | unnamed union Queue in _DEVICE_OBJECT |
27315 | 24488 | ||
1939 | struct _DEVOBJ_EXTENSION | 27349 | 24522 | ||
2056 | struct _DRIVER_EXTENSION | 27384 | 24632 | ||
2131 | struct _DRIVER_OBJECT | 27421 | 24669 | ||
2246 | struct _SECTION_OBJECT_POINTERS | 27491 | 24739 | ||
2257 | struct _IO_COMPLETION_CONTEXT | 27502 | 24750 | ||
2312 | struct _FILE_OBJECT | 27552 | 24805 | ||
2431 | struct _IRP | 27623 | 24884 | ||
2475 | unnamed union for AssociatedIrp in _IRP |
27659 | 24928 | ||
2545 | unnamed union for Overlay in _IRP |
27729 | 24998 | ||
2546 | unnamed struct for AsynchronousParameters
in Overlay in _IRP |
27730 | 24999 | ||
2583 | unnamed union for Tail in _IRP |
27767 | 25036 | ||
2585 | unnamed struct for Overlay in Tail in _IRP |
27769 | 25038 | ||
2813 | enum _DEVICE_RELATION_TYPE | 27989 | 25261 | ||
2823 | struct _DEVICE_RELATIONS | 27999 | 25271 | ||
2836 | enum _DEVICE_USAGE_NOTIFICATION_TYPE | 28012 | 25284 | ||
2851 | struct _INTERFACE | 28027 | 25299 | ||
2862 | struct _DEVICE_CAPABILITIES | 28038 | 25310 | ||
2898 | struct _POWER_SEQUENCE | 28074 | 25346 | ||
2904 | enum BUS_QUERY_ID_TYPE | 28080 | 25352 | ||
2923 | enum DEVICE_TEXT_TYPE | 28099 | 25371 | ||
2952 | struct _IO_STACK_LOCATION | 28128 | 25400 | ||
2964 | unnamed union for Parameters in _IO_STACK_LOCATION |
28140 | 25412 | ||
2970 | unnamed struct for Create in Parameters in _IO_STACK_LOCATION |
28146 | 25418 | ||
2987 | unnamed struct for CreatePipe in Parameters in _IO_STACK_LOCATION |
28163 | 25435 | ||
3004 | unnamed struct for CreateMailslot in Parameters in _IO_STACK_LOCATION |
28180 | 25452 | ||
3016 | unnamed struct for Read in Parameters in _IO_STACK_LOCATION |
28192 | 25464 | ||
3026 | unnamed struct for Write in Parameters in _IO_STACK_LOCATION |
28202 | 25474 | ||
3036 | unnamed struct for QueryDirectory in Parameters in _IO_STACK_LOCATION |
28212 | 25484 | ||
3047 | unnamed struct for NotifyDirectory in Parameters in _IO_STACK_LOCATION |
28223 | 25495 | ||
3056 | unnamed struct for QueryFile in Parameters in _IO_STACK_LOCATION |
28232 | 25504 | ||
3065 | unnamed struct for SetFile in Parameters in _IO_STACK_LOCATION |
28241 | 25513 | ||
3085 | unnamed struct for QueryEa in Parameters in _IO_STACK_LOCATION |
28261 | |||
3096 | unnamed struct for SetEa in Parameters in _IO_STACK_LOCATION |
28272 | |||
3106 | unnamed struct for QueryVolume in Parameters in _IO_STACK_LOCATION |
28282 | 25532 | ||
3117 | unnamed struct for SetVolume in Parameters in _IO_STACK_LOCATION |
28293 | |||
3129 | unnamed struc for FileSystemControl in Parameters in _IO_STACK_LOCATION |
28305 | 25544 | ||
3139 | unnamed struct for LockControl in Parameters in _IO_STACK_LOCATION |
28315 | 25554 | ||
3168 | unnamed struct for DeviceIoControl in Parameters in _IO_STACK_LOCATION |
28344 | 25574 | ||
3179 | unnamed struct for QuerySecurity in Parameters in _IO_STACK_LOCATION |
28355 | 25585 | ||
3188 | unnamed struct for SetSecurity in Parameters in _IO_STACK_LOCATION |
28364 | 25594 | ||
3199 | unnamed struct for MountVolume in Parameters in _IO_STACK_LOCATION |
28375 | 25605 | ||
3208 | unnamed struct for VerifyVolume in Parameters in _IO_STACK_LOCATION |
28384 | 25614 | ||
3217 | unnamed struct for Scsi in Parameters in _IO_STACK_LOCATION |
28393 | 25623 | ||
3227 | unnamed struct for QueryQuota in Parameters in _IO_STACK_LOCATION |
28403 | |||
3238 | unnamed struct for SetQuota in Parameters in _IO_STACK_LOCATION |
28414 | |||
3248 | unnamed struct for QueryDeviceRelations in Parameters in _IO_STACK_LOCATION |
28424 | 25632 | ||
3256 | unnamed struct for QueryInterface in Parameters in _IO_STACK_LOCATION |
28432 | 25640 | ||
3268 | unnamed struct for DeviceCapabilities in Parameters in _IO_STACK_LOCATION |
28444 | 25652 | ||
3276 | unnamed struct for FilterResourceRequirements
in Parameters in _IO_STACK_LOCATION |
28452 | 25660 | ||
3284 | unnamed struct for ReadWriteConfig in Parameters in _IO_STACK_LOCATION |
28460 | 25668 | ||
3295 | unnamed struct for SetLock in Parameters in _IO_STACK_LOCATION |
28471 | 25679 | ||
3303 | unnamed struct for QueryId in Parameters in _IO_STACK_LOCATION |
28479 | 25687 | ||
3311 | unnamed struct for QueryDeviceText in Parameters in _IO_STACK_LOCATION |
28487 | 25695 | ||
3320 | unnamed struct for UsageNotification in Parameters in _IO_STACK_LOCATION |
28496 | 25704 | ||
3330 | unnamed struct for WaitWake in Parameters in _IO_STACK_LOCATION |
28506 | 25714 | ||
3338 | unnamed struct for PowerSequence in Parameters in _IO_STACK_LOCATION |
28514 | 25722 | ||
3347 | unnamed struct for Power in Parameters in _IO_STACK_LOCATION |
28523 | 25731 | ||
3369 | unnamed struct for StartDevice in Parameters in _IO_STACK_LOCATION |
28545 | 25753 | ||
3384 | unnamed struct for WMI in Parameters in _IO_STACK_LOCATION |
28560 | 25768 | ||
3395 | unnamed struct for Others in Parameters in _IO_STACK_LOCATION |
28571 | 25779 | ||
6248 | struct _IO_REMOVE_LOCK_COMMON_BLOCK | 30491 | 28248 | ||
6269 | struct _IO_REMOVE_LOCK | 30512 | 28269 | ||
7027 | struct _IO_MINI_COMPLETION_PACKET_USER | 28940 | |||
7623 | struct _TXN_PARAMETER_BLOCK | 10432 | 29467 | ||
7732 | struct _IO_DRIVER_CREATE_CONTEXT | 10527 | 29562 | ||
8017 | struct _IO_PRIORITY_INFO | 15697 | 29808 | ||
8483 | struct _IO_IRP_EXT_TRACK_OFFSET_HEADER | 15810 | 30203 |