/*-- BUILD Version: 0001 // Increment this if a change has global effects Copyright (c) 2000 Microsoft Corporation Module Name: wmi.h Abstract: This module contains the public data structures and procedure prototypes for the WMI subsystem. Author: Jee Fung Pang (JeePang) 01-Jan-2000 Revision History: --*/ #ifndef _WMI_ #define _WMI_ #ifndef _WMIKM_ #define _WMIKM_ #endif #ifndef RUN_WPP #define RUN_WPP #endif // begin_ntddk begin_wdm #ifdef RUN_WPP #include #include #endif // #ifdef RUN_WPP // end_ntddk end_wdm #include #include typedef __int64 (*WMI_GET_CPUCLOCK_ROUTINE) ( VOID ); extern WMI_GET_CPUCLOCK_ROUTINE WmiGetCpuClock; extern ULONG WmiUsePerfClock; typedef VOID (*WMI_TRACE_BUFFER_CALLBACK) ( IN PWMI_BUFFER_HEADER Buffer, IN PVOID Context ); // begin_wmikm typedef enum tagWMI_CLOCK_TYPE { WMICT_DEFAULT, WMICT_SYSTEMTIME, WMICT_PERFCOUNTER, WMICT_PROCESS, WMICT_THREAD, WMICT_CPUCYCLE } WMI_CLOCK_TYPE; // // Trace Control APIs // NTKERNELAPI NTSTATUS WmiStartTrace( IN OUT PWMI_LOGGER_INFORMATION LoggerInfo ); NTKERNELAPI NTSTATUS WmiQueryTrace( IN OUT PWMI_LOGGER_INFORMATION LoggerInfo ); NTKERNELAPI NTSTATUS WmiStopTrace( IN PWMI_LOGGER_INFORMATION LoggerInfo ); NTKERNELAPI NTSTATUS WmiUpdateTrace( IN OUT PWMI_LOGGER_INFORMATION LoggerInfo ); NTKERNELAPI NTSTATUS WmiFlushTrace( IN OUT PWMI_LOGGER_INFORMATION LoggerInfo ); // // Trace Provider APIs // NTKERNELAPI NTSTATUS FASTCALL WmiTraceEvent( IN PWNODE_HEADER Wnode, IN KPROCESSOR_MODE RequestorMode ); NTKERNELAPI NTSTATUS FASTCALL WmiTraceFastEvent( IN PWNODE_HEADER Wnode ); NTKERNELAPI LONG64 FASTCALL WmiGetClock( IN WMI_CLOCK_TYPE ClockType, IN PVOID Context ); NTKERNELAPI NTSTATUS FASTCALL WmiGetClockType( IN TRACEHANDLE LoggerHandle, OUT WMI_CLOCK_TYPE *ClockType ); // begin_ntddk begin_wdm #ifdef RUN_WPP NTKERNELAPI NTSTATUS WmiTraceMessage( IN TRACEHANDLE LoggerHandle, IN ULONG MessageFlags, IN LPGUID MessageGuid, IN USHORT MessageNumber, IN ... ); NTKERNELAPI NTSTATUS WmiTraceMessageVa( IN TRACEHANDLE LoggerHandle, IN ULONG MessageFlags, IN LPGUID MessageGuid, IN USHORT MessageNumber, IN va_list MessageArgList ); #endif // #ifdef RUN_WPP #ifndef TRACE_INFORMATION_CLASS_DEFINE typedef enum _TRACE_INFORMATION_CLASS { TraceIdClass, TraceHandleClass, TraceEnableFlagsClass, TraceEnableLevelClass, GlobalLoggerHandleClass, EventLoggerHandleClass, AllLoggerHandlesClass, TraceHandleByNameClass } TRACE_INFORMATION_CLASS; NTKERNELAPI NTSTATUS WmiQueryTraceInformation( IN TRACE_INFORMATION_CLASS TraceInformationClass, OUT PVOID TraceInformation, IN ULONG TraceInformationLength, OUT PULONG RequiredLength OPTIONAL, IN PVOID Buffer OPTIONAL ); #define TRACE_INFORMATION_CLASS_DEFINE #endif // TRACE_INFOPRMATION_CLASS_DEFINE // end_ntddk end_wdm end_wmikm NTKERNELAPI NTSTATUS WmiSetTraceBufferCallback( IN TRACEHANDLE TraceHandle, IN WMI_TRACE_BUFFER_CALLBACK Callback, IN PVOID Context ); NTKERNELAPI NTSTATUS WmiTraceKernelEvent( IN ULONG GroupType, IN PVOID EventInfo, IN ULONG EventInfoLen, IN PETHREAD Thread ); NTKERNELAPI PPERFINFO_TRACE_HEADER FASTCALL WmiReserveWithPerfHeader( IN ULONG AuxSize, OUT PWMI_BUFFER_HEADER *BufferResource ); NTKERNELAPI ULONG FASTCALL WmiReleaseKernelBuffer( IN PWMI_BUFFER_HEADER BufferResource ); NTKERNELAPI VOID FASTCALL WmiTraceProcess( IN PEPROCESS Process, IN BOOLEAN Create ); NTKERNELAPI VOID WmiTraceThread( IN PETHREAD Thread, IN PINITIAL_TEB InitialTeb OPTIONAL, IN BOOLEAN Create ); NTKERNELAPI NTSTATUS WmiSetMark( IN PWMI_SET_MARK_INFORMATION MarkInfo, IN ULONG InBufferLen ); NTKERNELAPI VOID WmiBootPhase1( VOID ); // // Context swap routines // VOID FASTCALL WmiTraceContextSwap ( IN PETHREAD pOldEThread, IN PETHREAD pNewEThread ); VOID FASTCALL WmiStartContextSwapTrace ( ); VOID FASTCALL WmiStopContextSwapTrace ( ); #endif // _WMI_