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)
Library NtosKrnl.lib
DLL NtosKrnl.exe;Ntdll.dll
IRQL 任何级别 (请参阅注释部分)

另请参阅

EtwWrite

EtwWriteString