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 函数的启用标志和启用级别传递给此回调。 若要检索此信息,请分别调用 GetTraceEnableFlags 和 GetTraceEnableLevel 函数。
还需要在此回调中检索会话句柄,以便将来调用。 若要检索会话句柄,请调用 GetTraceLoggerHandle 函数。
回调函数不得调用任何可能导致 LoadLibrary 的任何内容,更具体地说, (,任何需要加载程序锁) 。
示例
有关 ControlCallback 函数的示例实现,请参阅 编写经典事件。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 专业版 [桌面应用 |UWP 应用] |
最低受支持的服务器 | Windows 2000 Server [桌面应用 |UWP 应用] |
目标平台 | Windows |
标头 | evntrace.h |