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 NTWMI.H header at
d:\th.public.fre\internal\sdk\inc\minwin
and draws from it the following type definitions:
Line Number | Type |
---|---|
421 | struct _ETW_REF_CLOCK |
428 | enum _ETW_BUFFER_STATE |
466 | enum _ETW_RT_EVENT_LOSS |
476 | struct _WMI_BUFFER_HEADER |
3799 | struct _PERFINFO_GROUPMASK |
4193 | struct _PERFINFO_PPM_STATE_SELECTION |
4412 | enum _PERFINFO_KERNELMEMORY_USAGE_TYPE |
4428 | enum _PERFINFO_MM_STAT |
The header NTWMI.H is published in the “minwin” directory of the Windows Driver Kit (WDK) for Windows 10 in the original and Version 1511 editions. Microsoft is not known to have published it before or since.
Perhaps by oversight, but perhaps not, Microsoft has since Windows 8 distributed some private symbol files in downloadable packages of otherwise public symbol files. Though Microsoft no longer packages symbol files for downloading, these same private symbol files and updates of them for newer Windows 10 releases continue to be made available at Microsoft’s public symbol server. A few of these private symbol files show that their corresponding binaries were built with NTWMI.H included by the source files. They thus tell of many more types that are defined in NTWMI.H than do the public symbol files for the kernel. The appilcable binaries are conspicuously few (up to and including the 2004 release of Windows 10):
Since this header’s contents are completely known for the early releases of Windows 10 but not before or since, it is as well to move on a few years. The table below is of types that are defined in the otherwise unseen NTWMI.H in the 2004 edition of WIndows 10:
Line Number (Version 2004) |
Type |
---|---|
258 | struct _WMI_TRACE_PACKET |
275 | struct _EVENT_INSTANCE_GUID_HEADER |
286 | unnamed struct Class in anonymous union in struct _EVENT_INSTANCE_GUID_HEADER |
327 | struct _PERFINFO_TRACE_HEADER |
351 | struct _SYSTEM_TRACE_HEADER |
381 | struct _WMI_TRACE_MESSAGE_PACKET |
387 | struct _MESSAGE_TRACE_HEADER |
402 | struct _MESSAGE_TRACE |
412 | struct _MESSAGE_TRACE_USER |
427 | struct _ETW_REF_CLOCK |
434 | enum _ETW_BUFFER_STATE |
477 | enum _ETW_RT_EVENT_LOSS |
489 | struct _WMI_BUFFER_HEADER |
537 | struct _TRACE_ENABLE_FLAG_EXTENSION |
543 | struct _TRACE_ENABLE_FLAG_EXT_HEADER |
548 | struct _TRACE_ENABLE_FLAG_EXT_ITEM |
574 | struct _ETW_STACK_CACHING_CONFIG |
1700 | struct _CPU_CONFIG_RECORD |
1722 | struct _PROCESSOR_RECORD |
1735 | struct _PHYSICAL_DISK_RECORD |
1752 | struct _VIRTUALIZATION_RECORD |
1759 | struct _BOOT_RECORD |
1776 | struct _LOGICAL_DISK_EXTENTS |
1800 | struct _LOGICAL_DISK_DEFRAG |
1843 | struct _OPTICAL_MEDIA_RECORD |
1868 | struct _NIC_RECORD |
1884 | struct _VIDEO_RECORD |
1898 | struct _WMI_DPI_RECORD |
1907 | struct _WMI_POWER_RECORD |
1922 | struct _WMI_IRQ_RECORD |
1932 | struct _WMI_PNP_RECORD_V3 |
1939 | struct _WMI_PNP_RECORD_V4 |
1953 | struct _WMI_PNP_RECORD_V5 |
1974 | struct _WMI_IDE_CHANNEL_RECORD |
1982 | struct _WMI_JOB_INFORMATION |
1989 | struct _WMI_JOB_ASSIGN_PROCESS |
1996 | struct _WMI_JOB_REMOVE_PROCESS |
2004 | struct _WMI_JOB_SET_QUERY_CPU_RATE |
2009 | struct _WMI_JOB_SET_QUERY_NET_RATE |
2015 | struct _WMI_JOB_SET_QUERY_INFORMATION |
2021 | struct _WMI_JOB_SEND_NOTIFICATION_INFORMATION |
2032 | struct _WMI_PROCESS_INFORMATION |
2048 | struct _WMI_PROCESS_INFORMATION64 |
2060 | struct _WMI_THREAD_INFORMATION |
2067 | struct _WMI_EXTENDED_THREAD_INFORMATION |
2088 | struct _WMI_EXTENDED_THREAD_INFORMATION64 |
2116 | struct _WMI_IMAGELOAD_INFORMATION |
2133 | struct _WMI_IMAGELOAD_INFORMATION32 |
2150 | struct _WMI_IMAGELOAD_INFORMATION64 |
2169 | structc _WMI_IMAGEID_INFORMATION |
2178 | struct _WMI_IMAGEID_INFORMATION32 |
2187 | struct _WMI_IMAGEID_INFORMATION64 |
2201 | struct _ETW_DISKIO_READWRITE_V2 |
2224 | struct _ETW_DISKIO_FLUSH_BUFFERS_V2 |
2239 | struct _ETW_DISKIO_READWRITE_V3 |
2240 | struct _ETW_DISKIO_FLUSH_BUFFERS_V3 |
2242 | struct _WMI_DISKIO_READWRITE_INIT |
2247 | struct _WMI_DISKIO_IO_REDIRECTED_INIT |
2252 | struct _ETW_OPTICALIO_READWRITE |
2264 | struct _ETW_OPTICALIO_FLUSH_BUFFERS |
2272 | struct _ETW_OPTICALIO_INIT |
2277 | struct _WMI_REGISTRY |
2288 | struct _WMI_TXR |
2296 | struct _ETW_REGNOTIF_REGISTER |
2304 | struct _WMI_FILE_IO |
2309 | struct _WMI_TCPIP |
2318 | struct _WMI_UDP |
2329 | struct _WMI_PAGE_FAULT |
2334 | struct _WMI_CONTEXTSWAP |
2372 | struct _WMI_SPINLOCK |
2425 | struct _WMI_RESOURCE |
2446 | struct _WMI_QUEUE |
2455 | struct _WMI_PUSHLOCK |
2461 | struct _WMI_WAIT_SINGLE |
2467 | struct _WMI_WAIT_OBJECT_RECORD |
2477 | struct _WMI_WAIT_MULTIPLE |
2486 | struct _WMI_DELAY_EXECUTION |
2495 | struct _ETW_READY_THREAD_EVENT |
2516 | struct _ETW_KQUEUE_ENQUEUE_EVENT |
2521 | struct _ETW_KQUEUE_DEQUEUE_EVENT |
2531 | struct _ETW_ANTI_STARVATION_BOOST_EVENT |
2542 | struct _ETW_AUTOBOOST_SET_PRIORITY_FLOOR_EVENT |
2568 | struct _ETW_AUTOBOOST_CLEAR_PRIORITY_FLOOR_EVENT |
2574 | struct _ETW_AUTOBOOST_NO_ENTRIES_EVENT |
2583 | struct _ETW_PRIORITY_EVENT |
2591 | struct _ETW_IDEAL_PROCESSOR_EVENT |
2597 | struct _ETW_THREAD_AFFINITY_EVENT |
2604 | struct _ETW_THREAD_SET_NAME_EVENT |
2610 | struct _ETW_DEBUG_PRINT_EVENT |
2624 | struct _ETW_POOL_EVENT |
2637 | struct _ETW_CREATE_HANDLE_EVENT |
2648 | struct _ETW_DUPLICATE_HANDLE_EVENT |
2659 | struct _ETW_OBJECT_TYPE_EVENT |
2665 | struct _ETW_OBJECT_HANDLE_EVENT |
2672 | struct _ETW_REFDEREF_OBJECT_EVENT |
2678 | struct _ETW_CREATEDELETE_OBJECT_EVENT |
2687 | struct _ETW_WAKE_COUNTER_EVENT |
2701 | struct _ETW_HEAP_EVENT_COMMON |
2718 | struct _ETW_HEAP_EVENT_ALLOC |
2738 | struct _ETW_HEAP_EVENT_FREE |
2757 | struct _ETW_HEAP_EVENT_REALLOC |
2774 | struct _ETW_HEAP_EVENT_EXPANSION |
2798 | struct _ETW_HEAP_EVENT_CONTRACTION |
2822 | struct _ETW_HEAP_EVENT_CREATE |
2855 | struct _HEAP_EVENT_COMMIT_DECOMMIT |
2865 | struct _HEAP_COMMIT_DECOMMIT |
2877 | struct _HEAP_EVENT_SUBSEGMENT_ALLOC_FREE |
2886 | struct _HEAP_SUBSEGMENT_FREE |
2893 | struct _HEAP_SUBSEGMENT_ALLOC |
2903 | struct _HEAP_SUBSEGMENT_INIT |
2919 | struct _HEAP_AFINITY_MANAGER_ENABLE |
2932 | struct _HEAP_AFFINITY_SLOT_ASSIGN |
2946 | struct _HEAP_REUSE_THRESHOLD_ACTIVATED |
2960 | struct _HEAP_SUBSEGMENT_ACTIVATED |
2973 | struct _ETW_HEAP_EVENT_SNAPSHOT |
2994 | struct _ETW_HEAP_EVENT_RUNDOWN_RANGE |
3006 | struct _ETW_HEAP_EVENT_RUNDOWN |
3022 | struct _HEAP_EVENT_RANGE_CREATE |
3028 | struct _HEAP_EVENT_RANGE |
3036 | struct _HEAP_RANGE_CREATE |
3043 | struct _HEAP_RANGE_DESTROY |
3050 | struct _HEAP_RANGE_LOG |
3057 | struct _ETW_CRITSEC_EVENT_COLLISION |
3067 | struct _ETW_CRITSEC_EVENT_INIT |
3075 | struct _STACK_WALK_EVENT_DATA |
3084 | struct _ETW_LBR_ENTRY |
3092 | struct _LBR_TRACE_EVENT_DATA |
3102 | struct _IPT_TRACE_EVENT_DATA |
3114 | struct _LOAD_DLL_EVENT_DATA |
3120 | struct _CM_PERF_COUNTERS |
3138 | struct _CI_LOG_SCHEDULER_EVENT |
3149 | struct _CI_LOG_SCHEDULER_WAKEUP |
3157 | struct _CI_LOG_SCHEDULER_SLEEP |
3163 | struct _CI_LOG_SCHEDULER_SLEEP_RESPONSE |
3169 | struct _CI_LOG_MMCSS_START |
3175 | struct _CI_LOG_MMCSS_STOP |
3187 | struct _ETW_UMS_EVENT_DIRECTED_SWITCH_START |
3196 | struct _ETW_UMS_EVENT_DIRECTED_SWITCH_END |
3207 | struct _ETW_UMS_EVENT_PARK |
3213 | struct _ETW_UMS_EVENT_DISASSOCIATE |
3221 | struct _ETW_UMS_EVENT_CONTEXT_SWITCH |
3236 | struct _ETW_SET_TIMER_EVENT |
3248 | struct _ETW_CANCEL_TIMER_EVENT |
3252 | struct _ETW_TIMER_EXPIRATION_EVENT |
3259 | struct _ETW_TIMER_EXPIRATION_START_EVENT |
3282 | struct _ETW_SET_KTIMER2_EVENT |
3295 | struct _ETW_CANCEL_KTIMER2_EVENT |
3304 | struct _ETW_DISABLE_KTIMER2_EVENT |
3311 | struct _ETW_FINALIZE_KTIMER2_EVENT |
3321 | enum _PERFINFO_DYNAMIC_TICK_VETO_REASON |
3332 | enum _PERFINFO_DYNAMIC_TICK_DISABLE_REASON |
3340 | struct _ETW_CLOCK_CONFIGURATION_EVENT |
3346 | struct _ETW_CLOCK_TIME_UPDATE |
3351 | struct _ETW_CLOCK_STATE_CHANGE_EVENT |
3368 | struct _ETW_PER_SESSION_QUOTA |
3379 | struct _ETW_DFSS_START_NEW_INTERVAL |
3394 | struct _ETW_DFSS_RELEASE_THREAD_ON_IDLE |
3406 | struct _ETW_CPU_CACHE_FLUSH_EVENT |
3756 | struct _ETW_TP_EVENT_CALLBACK_ENQUEUE |
3775 | struct _ETW_TP_EVENT_CALLBACK_START |
3794 | struct _ETW_TP_EVENT_CALLBACK_CANCEL |
3807 | struct _ETW_TP_EVENT_POOL_CREATE |
3815 | struct _ETW_TP_EVENT_POOL_CLOSE |
3823 | struct _ETW_TP_EVENT_POOL_TH_MIN_SET |
3832 | struct _ETW_TP_EVENT_POOL_TH_MAX_SET |
3841 | struct _ETW_TP_EVENT_WORKER_NUMANODE_SWITCH |
3858 | struct _ETW_TP_EVENT_TIMER_SET |
3870 | struct _ETW_TP_EVENT_TIMER_CANCELLED |
3878 | struct _ETW_TP_EVENT_TIMER_SET_NTTIMER |
3887 | struct _ETW_TP_EVENT_TIMER_CANCEL_NTTIMER |
3894 | struct _ETW_TP_EVENT_TIMER_EXPIRATION_BEGIN |
3901 | struct _ETW_TP_EVENT_TIMER_EXPIRATION_END |
3908 | struct _ETW_TP_EVENT_TIMER_EXPIRATION |
3925 | struct _ETW_THREAD_EVENT_SUBPROCESSTAG |
3935 | struct _ETW_WNF_EVENT_SUBSCRIBE |
3950 | struct _ETW_WNF_EVENT_CALLBACK |
3963 | struct _ETW_WNF_EVENT_PUBLISH |
3971 | struct _ETW_WNF_EVENT_NAME_SUB_RUNDOWN |
3995 | struct _PERFINFO_GROUPMASK |
4063 | struct _PERFINFO_MARK_EVENT |
4077 | struct _PERFINFO_DRIVER_MAJORFUNCTION |
4089 | struct _PERFINFO_DRIVER_MAJORFUNCTION_RET |
4097 | struct _PERFINFO_DRIVER_COMPLETE_REQUEST |
4119 | struct _PERFINFO_DRIVER_COMPLETE_REQUEST_RET |
4133 | struct _PERFINFO_DRIVER_COMPLETIONROUTINE |
4143 | struct _PERFINFO_BATTERY_LIFE_INFO |
4148 | struct _PERFINFO_IDLE_STATE_CHANGE |
4159 | struct _PERFINFO_SET_POWER_ACTION |
4175 | struct _PERFINFO_SET_POWER_ACTION_RET |
4186 | struct _PERFINFO_SET_DEVICES_STATE |
4197 | struct _PERFINFO_SET_DEVICES_STATE_RET |
4206 | struct _PERFINFO_PO_NOTIFY_DEVICE |
4256 | struct _PERFINFO_PO_NOTIFY_DEVICE_COMPLETE |
4268 | struct _PERFINFO_PO_POSTSLEEP |
4276 | struct _PERFINFO_PO_SESSION_CALLOUT |
4283 | struct _PERFINFO_PO_PRESLEEP |
4288 | struct _PERFINFO_PO_POSTSLEEP |
4292 | struct _PERFINFO_PO_CALIBRATED_PERFCOUNTER |
4296 | struct _PERFINFO_BOOT_PHASE_START |
4300 | struct _PERFINFO_BOOT_PREFETCH_INFORMATION |
4306 | struct _PERFINFO_PO_SESSION_CALLOUT_RET |
4310 | struct _PERFINFO_PPM_IDLE_STATE_CHANGE |
4377 | struct _PERFINFO_PPM_IDLE_STATE_ENTER |
4391 | struct _PERFINFO_PPM_IDLE_STATE_EXIT |
4396 | struct _PERFINFO_PPM_STATE_SELECTION |
4423 | struct _PERFINFO_PPM_IDLE_EXIT_LATENCY |
4434 | struct _PERFINFO_PPM_PERF_STATE_CHANGE |
4442 | struct _PERFINFO_PPM_THERMAL_CONSTRAINT |
4451 | struct _PERFINFO_FILEOBJECT_INFORMATION |
4455 | struct _PERFINFO_FILENAME_SAME_INFORMATION |
4460 | struct _PERFINFO_PFMAPPED_SECTION_INFORMATION |
4466 | struct _PERFINFO_PFMAPPED_SECTION_OBJECT_INFORMATION |
4475 | struct _PERFINFO_SAMPLED_PROFILE_INFORMATION |
4492 | struct _PERFINFO_SAMPLED_PROFILE_CACHE |
4497 | struct _PERFINFO_SAMPLED_PROFILE_CONFIG |
4503 | struct _PERFINFO_PMC_SAMPLE_INFORMATION |
4510 | struct _PERFINFO_DPC_INFORMATION |
4515 | struct _PERFINFO_DPC_ENQUEUE_INFORMATION |
4524 | struct _PERFINFO_DPC_EXECUTION_INFORMATION |
4529 | struct _PERFINFO_YIELD_PROCESSOR_INFORMATION |
4537 | struct _PERFINFO_INTERRUPT_INFORMATION |
4549 | struct _PERFINFO_CLOCK_INTERRUPT_INFORMATION |
4563 | struct _PERFINFO_SPINLOCK_CONFIG |
4584 | struct _PERFINFO_EXECUTIVE_RESOURCE_CONFIG |
4596 | struct _PERFINFO_SESSIONCREATE_INFORMATION |
4601 | struct _PERFINFO_PAGE_RANGE_IDENTITY |
4617 | enum _PERFINFO_KERNELMEMORY_USAGE_TYPE |
4624 | struct _PERFINFO_KERNELMEMORY_RANGE_USAGE |
4633 | enum _PERFINFO_MM_STAT |
4648 | struct _PERFINFO_PAGECOMBINE_AGGREGATE_STAT |
4672 | struct _PERFINFO_PAGECOMBINE_ITERATION_STAT |
4685 | struct _PERFINFO_HARDPAGEFAULT_INFORMATION |
4697 | struct _PERFINFO_VIRTUAL_ALLOC |
4704 | struct _PERFINFO_VIRTUAL_ALLOC_XPARTITION |
4709 | struct _PERFINFO_VAD_ROTATE_INFO |
4721 | enum _PERFINFO_MEM_RESET_INFO_TYPE |
4728 | struct _PERFINFO_MEM_RESET_INFO |
4752 | struct _PERFINFO_CC_WORKITEM_ENQUEUE |
4761 | struct _PERFINFO_CC_WORKITEM_DEQUEUE |
4765 | struct _PERFINFO_CC_WORKITEM_COMPLETE |
4774 | struct _PERFINFO_CC_READ_AHEAD |
4783 | struct _PERFINFO_CC_SCHEDULE_READ_AHEAD |
4800 | struct _PERFINFO_CC_LAZY_WRITE_SCAN |
4815 | struct _PERFINFO_CC_CAN_WRITE_FAIL |
4822 | struct _PERFINFO_CC_FLUSH_SECTION |
4846 | struct _PERFINFO_CC_FLUSH_CACHE |
4856 | struct _PERFINFO_CC_LOGGED_STREAM_INFO |
4872 | struct _PERFINFO_CC_EXTRA_WB_THREAD_INFO |
4884 | struct _PERFINFO_IMAGELOAD_IN_PAGEFILE_INFO |
4888 | unnamed union Flags in struct _PERFINFO_IMAGELOAD_IN_PAGEFILE_INFO |
4902 | struct _PERFINFO_SYSCALL_ENTER_DATA |
4906 | struct _PERFINFO_SYSCALL_EXIT_DATA |
4917 | struct _PERFINFO_IPI_SEND_DATA |
4926 | struct _PERFINFO_IPI_RECEIVE_DATA |
4938 | struct _PERFINFO_MARK_INFORMATION |
4950 | struct _PERFINFO_FILE_CREATE |
4960 | struct _PERFINFO_FILE_INFORMATION |
4969 | struct _PERFINFO_FILE_DIRENUM |
4980 | struct _PERFINFO_FILE_PATH_OPERATION |
4995 | struct _PERFINFO_FILE_READ_WRITE |
5006 | struct _PERFINFO_FILE_SIMPLE_OPERATION |
5013 | struct _PERFINFO_FILE_OPERATION_END |
5019 | struct _PERFINFO_FLT_OPERATION |
5028 | struct _PERFINFO_FLT_OPERATION_STATUS |
5046 | struct _PERFINFO_MEMORY_INFORMATION |
5057 | struct _PERFINFO_SYSTEM_MEMORY_INFORMATION |
5070 | struct _PERFINFO_WORKINGSET_ENTRY |
5088 | struct _PERFINFO_WORKINGSET_INFORMATION |
5100 | struct _PERFINFO_MEMORY_NODE_ENTRY |
5113 | struct _PERFINFO_MEMORY_NODE_INFORMATION |
5124 | struct _PERFINFO_CONTIGUOUS_PAGE_GENERATE |
5133 | enum _PERFINFO_DEBUG_EVENT_REASON |
5139 | struct _PERFINFO_DEBUG_EVENT |
5145 | enum _PERFINFO_DOMAIN_CHANGE_EVENT_REASON |
5155 | struct _PERFINFO_DOMAIN_CHANGE_EVENT |
5165 | struct _PERFINFO_VTL_CHANGE |
5176 | struct _PERFINFO_SPEC_CONTROL_RETPOLINE_EXIT |
5184 | struct _PERFINFO_HV_HYPERCALL |
5243 | enum _PERFINFO_CCSWAP_TYPE |
5268 | struct _PERFINFO_CCSWAP_BUFFER |
5282 | struct _PERFINFO_CCSWAP_IDLE_SHORT |
5295 | struct _PERFINFO_CCSWAP_IDLE |
5309 | struct _PERFINFO_CCSWAP_LITE |
5325 | struct _PERFINFO_CCSWAP |
5338 | struct _PERFINFO_PROCESS_PERFCTR |
5363 | struct _PERFINFO_PROCESS_PERFCTR32 |
5385 | struct _PERFINFO_PROCESS_PERFCTR64 |
5411 | struct _PERFINFO_PROCESS_INSWAP |
5422 | struct _PERFINFO_IO_TIMER |
5440 | struct _WMI_LOGGER_INFORMATION |