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