PEVENT_CALLBACK回调函数 (evntrace.h)

ETW 事件使用者实现此回调以接收来自跟踪处理会话的事件。 不应在新代码中使用此回调。 而是实现 EventRecordCallback

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

语法

PEVENT_CALLBACK PeventCallback;

void PeventCallback(
  [in] PEVENT_TRACE pEvent
)
{...}

参数

[in] pEvent

指向包含事件信息的 EVENT_TRACE 结构的指针。

返回值

备注

注意

此回调已过时,因为它接收有关事件的不完整信息,并且与事件解码帮助程序 API(如 TdhGetEventInformation)不兼容。 实现 EventRecordCallback,而不是实现 EventCallback

若要指定 ETW 调用传递事件的函数,请设置传递给 OpenTrace 函数的 EVENT_TRACE_LOGFILE 结构的 EventCallback 成员。

注意

如果 EventCallback 函数从 ProcessTrace 接收乱码数据,请双检查提供给 OpenTrace 的结构字段中EVENT_TRACE_LOGFILE指定的ProcessTraceMode标志。 EVENT_TRACE_LOGFILEEventCallbackEventRecordCallback 字段是联合的重叠成员。 ProcessTraceMode如果字段包含 PROCESS_TRACE_MODE_EVENT_RECORD 标志,ProcessTrace 将使用 EventRecordCallback 函数签名调用回调。 否则, ProcessTrace 将使用 EventCallback 函数签名调用回调。

使用 OpenTrace 创建跟踪处理会话后,调用 ProcessTrace 函数以开始接收事件。

当 ProcessTrace 开始处理跟踪中的事件时,它可能会使用一个或多个综合事件调用回调,这些事件包含有关跟踪 (元数据) 的数据,而不是来自记录的事件的数据。 这些综合事件将 Header.Guid 设置为 EventTraceGuid ,并且基于合成事件的内容设置了 Header.Class.Type 。 例如,每个跟踪文件中的第一个事件将是类型为 0 的合成事件 ,其中包含TRACE_LOGFILE_HEADER 信息。

收到的所有其他事件都包含特定于提供程序的事件数据。 使用 EVENT_TRACEHeader.GuidHeader.Class.Type 成员来确定收到的事件类型。 可以硬编码已知事件类型的解码逻辑,但大多数事件将使用命名空间中 \\root\wmi 系统中注册的 MOF 架构信息进行解码。 有关使用事件的 MOF 架构解释事件的信息,请参阅 使用事件

示例

有关 EventCallback 函数的示例实现,请参阅 使用 MOF 检索事件数据

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 evntrace.h

另请参阅

使用事件

BufferCallback

EventRecordCallback

EVENT_TRACE_LOGFILE

OpenTrace

ProcessTrace