IO_X.H

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