HAL.H

The public symbol file NTKRPAMP.PDB for the original release of Windows 10 tells that the kernel is built with the HAL.H header at

d:\th\minkernel\ntos\inc

and draws from it the following type definitions:

Line Number Type Line Number
in NTOSP.H
Remarks
99 struct _DEVICE_DESCRIPTION 34620 also line 33221 in WDM.H
931 enum _IPI_TYPE 35156 loses 296
3983 struct _HAL_NODE_RANGE 37940 loses 268
3998 struct _HAL_CHANNEL_MEMORY_RANGES 37955  
4155 enum HAL_APIC_DESTINATION_MODE 38080 loses 32;
also line 12228 in NTDDK.H
4188 struct _INTERRUPT_REMAPPING_INFO 38113  
4193 unnamed union u in _INTERRUPT_REMAPPING_INFO 38118  
4196 unnamed struct Msi in u in _INTERRUPT_REMAPPING_INFO 38121  
4235 enum INTERRUPT_CONNECTION_TYPE 38160  
4246 struct _INTERRUPT_HT_INTR_INFO 38171  
4248 unnamed union LowPart in _INTERRUPT_HT_INTR_INFO 38173  
4249 unnamed struct bits in LowPart in _INTERRUPT_HT_INTR_INFO 38174  
4265 unnamed union HighPart in _INTERRUPT_HT_INTR_INFO 38190  
4266 unnamed struct bits in HighPart in _INTERRUPT_HT_INTR_INFO 38191  
4283 struct _INTERRUPT_VECTOR_DATA 38208  
4303 unnamed struct ControllerInput in _INTERRUPT_VECTOR_DATA 38228  
4310 unnamed struct XapicMessage in _INTERRUPT_VECTOR_DATA 32235  
4315 unnamed struct Hypertransport in _INTERRUPT_VECTOR_DATA 38240  
4319 unnamed struct GenericMessage in _INTERRUPT_VECTOR_DATA 38244  
4324 unnamed struct MessageRequest in _INTERRUPT_VECTOR_DATA 38249  
4337 struct _INTERRUPT_CONNECTION_DATA 38262  

The header HAL.H is not known in any Device Driver Kit (DDK) or Windows Driver Kit (WDK).

That said, all the types that the kernel is known to pick up from HAL.H are also defined in NTOSP.H. The line numbers on the left are from HAL.H, as inferred from the public symbol file for the kernel. Those on the right are from NTOSP.H, as disclosed in the “minwin” directory of the Windows 10 WDK in its original release. It is not known whether HAL.H is the source of definitions in NTOSP.H or whether both pick them up from yet another header. Whatever the mechanism, NTOSP.H does not have all that HAL.H has.

Two of the types are also defined in the standard headers WDM.H and NTDDK.H, one each.