EtwWriteTransfer 函数 (wdm.h)

EtwWriteTransfer 函数标记将两个活动链接在一起的事件;此类型的事件称为 传输事件。 传输事件可以包含相同的用户定义的数据、相同的字段,并且受其他事件相同的规则的约束。

语法

NTSTATUS EtwWriteTransfer(
  [in]           REGHANDLE              RegHandle,
  [in]           PCEVENT_DESCRIPTOR     EventDescriptor,
  [in, optional] LPCGUID                ActivityId,
  [in, optional] LPCGUID                RelatedActivityId,
  [in]           ULONG                  UserDataCount,
  [in, optional] PEVENT_DATA_DESCRIPTOR UserData
);

参数

[in] RegHandle

指向事件提供程序注册句柄的指针,如果事件提供程序注册成功,则由 EtwRegister 函数返回。

[in] EventDescriptor

指向EVENT_DESCRIPTOR结构的指针。

[in, optional] ActivityId

指示与事件关联的活动的标识符。 ActivityId 提供了一种方法来对相关事件进行分组,并在端到端跟踪中使用。 此标识符是可选的,可以 NULL

[in, optional] RelatedActivityId

指示与事件关联的相关活动的标识符。 RelatedActivityID 提供了一种方法来对相关事件进行分组,并在端到端跟踪中使用。

[in] UserDataCount

EVENT_DATA_DESCRIPTOR结构数组中的元素数。

[in, optional] UserData

指向EVENT_DATA_DESCRIPTOR结构数组中第一个元素的指针。

返回值

EtwWriteTransfer 如果成功发布事件,则返回STATUS_SUCCESS。

言论

可以在任何 IRQL 中调用 EtwWriteTransfer。 但是,当 IRQL 大于 APC_LEVEL时,传递给 EtwWrite的任何数据,EtwWriteStringEtwWriteTransfer 函数不得分页。 也就是说,在大于 APC_LEVEL 的 IRQL 上运行的任何内核模式例程都无法访问可分页内存。 传递给 EtwWriteEtwWriteStringEtwWriteTransfer 函数的数据必须驻留在系统空间内存中,而不管 IRQL 是什么。

要求

要求 价值
目标平台 普遍
标头 wdm.h (包括 Wdm.h、Ntddk.h)
NtosKrnl.lib
DLL NtosKrnl.exe;Ntdll.dll
IRQL 任何级别(请参阅“批注”部分)

另请参阅

EtwWrite

EtwWriteString