etwWriteString 函数 (wdm.h)
EventWriteString 函数是一个跟踪函数,无需复杂的数据时可以使用该函数。 此函数类似于调试打印语句。
语法
NTSTATUS EtwWriteString(
[in] REGHANDLE RegHandle,
[in] UCHAR Level,
[in] ULONGLONG Keyword,
[in, optional] LPCGUID ActivityId,
[in] PCWSTR String
);
参数
[in] RegHandle
指向事件提供程序注册句柄的指针,如果事件提供程序注册成功, 则 EtwRegister 函数将返回该句柄。
[in] Level
事件处于活动状态的级别。
[in] Keyword
事件的关键字 (keyword) 。 关键字 (keyword) 是一个位掩码,用于对事件或错误的类别进行常规语句。 由于关键字 (keyword) 是位掩码,因此可以将多个关键字 (keyword) 应用于单个事件。 可以定义关键字和位位置,也可以使用 Windows 标准关键字,也可以使用自己的关键字和 Windows 关键字的组合。
[in, optional] ActivityId
指示与事件关联的活动的标识符。 ActivityId 提供了一种对相关事件进行分组的方法,可用于端到端跟踪。 此标识符是可选的,可以为 NULL。
[in] String
以 null 结尾的字符串 (WCHAR) 。
返回值
如果成功发布事件,函数将返回STATUS_SUCCESS。
注解
由于 EventWriteString 函数生成的字符串不可本地化,因此建议不要将此函数用于生产代码。 不应使用此函数来记录高度可见的事件。
可以在任何 IRQL 中调用 EtwWriteString 。 但是,当 IRQL 大于 APC_LEVEL时,传递给 EtwWrite、EtwWriteEx、EtwWriteString 和 EtwWriteTransfer 函数的任何数据都必须不可分页。 也就是说,在大于 APC_LEVEL 的 IRQL 上运行的任何内核模式例程都无法访问可分页内存。 传递给 EtwWrite、 EtwWriteEx、 EtwWriteString 和 EtwWriteTransfer 函数的数据必须驻留在系统空间内存中,而不管 IRQL 是什么。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | 在 Windows Vista 和更高版本的 Windows 中可用。 |
目标平台 | 通用 |
标头 | wdm.h (包括 Wdm.h、Ntddk.h) |
Library | NtosKrnl.lib |
DLL | NtosKrnl.exe |
IRQL | 任何级别 (“查看注释”部分。) |