WMIDPREQUEST 回调函数 (evntrace.h)

基于 RegisterTraceGuids 的 (“Classic”) 事件提供程序实现此函数以接收来自控制器的启用或禁用通知请求。

WMIDPREQUEST 类型定义指向此回调函数的指针。 ControlCallback 是应用程序定义的函数名称的占位符。

语法

WMIDPREQUEST Wmidprequest;

ULONG Wmidprequest(
  [in] WMIDPREQUESTCODE RequestCode,
       PVOID RequestContext,
       ULONG *BufferSize,
  [in] PVOID Buffer
)
{...}

参数

[in] RequestCode

请求代码。 这是以下值之一。

含义
WMI_ENABLE_EVENTS 启用提供程序或更改提供程序配置。
WMI_DISABLE_EVENTS 禁用该提供程序。

RequestContext

提供程序定义的上下文。 提供程序使用 的 RequestContext 参数
RegisterTraceGuids 以指定上下文。

BufferSize

保留以供内部使用。

[in] Buffer

指向 WNODE_HEADER 结构的指针,该结构包含有关要为其启用或禁用提供程序的事件跟踪会话的信息。

返回值

如果回调成功,应返回ERROR_SUCCESS。 请注意,ETW 忽略此函数的返回值,除非控制器调用 EnableTrace 来启用提供程序,并且提供程序尚未调用 RegisterTraceGuids。 发生这种情况时,如果注册成功, RegisterTraceGuids 将返回此回调的返回值。

注解

此函数是使用 RegisterTraceGuids 函数指定的。 当控制器调用 EnableTrace 函数来启用、禁用或更改启用标志或级别时,ETW 将调用此回调。 提供程序根据 RequestCode 值启用或禁用自身。 通常,提供程序使用此值来设置全局标志以指示其已启用状态。

提供程序定义其启用或禁用的解释。 通常,如果提供程序已启用,则会生成事件,但在禁用提供程序时不会生成事件。

ETW 不会将控制器传递给 EnableTrace 函数的启用标志和启用级别传递给此回调。 若要检索此信息,请分别调用 GetTraceEnableFlagsGetTraceEnableLevel 函数。

还需要在此回调中检索会话句柄,以便将来调用。 若要检索会话句柄,请调用 GetTraceLoggerHandle 函数。

回调函数不得调用任何可能导致 LoadLibrary 的任何内容,更具体地说, (,任何需要加载程序锁) 。

示例

有关 ControlCallback 函数的示例实现,请参阅 编写经典事件

要求

要求
最低受支持的客户端 Windows 2000 专业版 [桌面应用 |UWP 应用]
最低受支持的服务器 Windows 2000 Server [桌面应用 |UWP 应用]
目标平台 Windows
标头 evntrace.h

另请参阅

EnableTrace

GetTraceEnableFlags

GetTraceEnableLevel

GetTraceLoggerHandle

RegisterTraceGuids

WNODE_HEADER