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、EtwWriteString、EtwWriteTransfer 函数的任何数据不得可分页。 也就是说,在大于 APC_LEVEL 的 IRQL 上运行的任何内核模式例程都无法访问可分页内存。 传递给 EtwWrite、 EtwWriteString、 EtwWriteTransfer 函数的数据必须驻留在系统空间内存中,而不管 IRQL 是什么。
要求
要求 | 值 |
---|---|
目标平台 | 通用 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe;Ntdll.dll |
IRQL | 任何级别 (请参阅注释部分) |