TdhGetProperty 函数 (tdh.h)

从事件数据中检索属性值。

语法

TDHSTATUS TdhGetProperty(
  [in]  PEVENT_RECORD             pEvent,
  [in]  ULONG                     TdhContextCount,
  [in]  PTDH_CONTEXT              pTdhContext,
  [in]  ULONG                     PropertyDataCount,
  [in]  PPROPERTY_DATA_DESCRIPTOR pPropertyData,
  [in]  ULONG                     BufferSize,
  [out] PBYTE                     pBuffer
);

参数

[in] pEvent

传递给 EventRecordCallback 回调的事件记录。 有关详细信息,请参阅 EVENT_RECORD 结构。

[in] TdhContextCount

pTdhContext 中的元素数。

[in] pTdhContext

仅适用于 WPP 或经典 ETW 事件的上下文值数组;否则为 NULL。 有关详细信息,请参阅 TDH_CONTEXT 结构。 数组不得包含重复的上下文类型。

[in] PropertyDataCount

pPropertyData 中的数据描述符结构的数目。

[in] pPropertyData

定义要检索的属性 的PROPERTY_DATA_DESCRIPTOR 结构的数组。

如果调用 TdhGetPropertySize 函数来检索属性所需的缓冲区大小,则可以使用相同的数据描述符。

如果要检索不是结构成员的属性,则可以指定单个数据描述符。 如果要检索结构成员的属性,请指定包含两个数据描述符的数组, (结构不能包含或引用) 的其他结构。

[in] BufferSize

pBuffer 缓冲区的大小(以字节为单位)。 调用 TdhGetPropertySize 函数时,可以从 pPropertySize 参数获取此值。

[out] pBuffer

接收属性数据的用户分配的缓冲区。

返回值

如果成功,则返回ERROR_SUCCESS。 否则,此函数除了返回其他返回代码外,还会返回以下返回代码之一。

返回代码 说明
ERROR_NOT_FOUND
找不到事件的架构或找不到指定的属性。
ERROR_INSUFFICIENT_BUFFER
pBuffer 缓冲区太小。 若要获取所需的缓冲区大小,请调用 TdhGetPropertySize
ERROR_INVALID_PARAMETER
一个或多个参数无效。
ERROR_FILE_NOT_FOUND
清单中的 resourceFileName 属性包含提供程序二进制文件的位置。 注册清单时,该位置将写入注册表。 TDH 无法根据注册的位置找到二进制文件。
ERROR_WMI_SERVER_UNAVAILABLE
WMI 服务不可用。

注解

如果事件是 WPP 或经典 ETW 事件,则可以指定用于帮助分析事件信息的上下文信息。 如果在 EVENT_HEADER 的 Flags 成员中设置了EVENT_HEADER_FLAG_TRACE_MESSAGE标志,则事件是 WPP 事件, (看到 EVENT_RECORD) 的 EventHeader 成员。 如果设置了EVENT_HEADER_FLAG_CLASSIC_HEADER标志,则事件是旧版 ETW 事件。

有关 WPP 事件的属性列表及其数据类型,请参阅 PROPERTY_DATA_DESCRIPTOR

示例

有关演示如何调用此函数以检索顶级属性或结构成员的值的示例,请参阅 使用 TdhGetProperty 来使用事件数据

要求

要求
最低受支持的客户端 Windows Vista [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 [仅限桌面应用]
目标平台 Windows
标头 tdh.h
Library Tdh.lib
DLL Tdh.dll

另请参阅

TdhGetEventInformation

TdhGetPropertySize