275 lines
4.2 KiB
C
275 lines
4.2 KiB
C
|
/*-- 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 <evntrace.h>
|
||
|
#include <stdarg.h>
|
||
|
#endif // #ifdef RUN_WPP
|
||
|
// end_ntddk end_wdm
|
||
|
#include <wmistr.h>
|
||
|
#include <ntwmi.h>
|
||
|
|
||
|
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_
|