WmiTraceMessageVa 函数 (wdm.h)

WmiTraceMessageVa 例程将消息添加到 WPP 软件跟踪会话的输出日志。

语法

NTSTATUS WmiTraceMessageVa(
  [in] TRACELOGGER_HANDLE LoggerHandle,
  [in] ULONG              MessageFlags,
  [in] LPCGUID            MessageGuid,
  [in] USHORT             MessageNumber,
  [in] va_list            MessageArgList
);

参数

[in] LoggerHandle

指定软件跟踪会话的跟踪句柄。

[in] MessageFlags

指定一个或多个消息标志的按位 OR。 有关详细信息,请参见“备注”部分。

[in] MessageGuid

指定标识软件跟踪类的 GUID。

[in] MessageNumber

标识消息子类型。 子类型的含义特定于软件跟踪类和提供程序。

[in] MessageArgList

提供指定一组消息部分的消息参数的必需列表。 参数组织为参数对序列,其中每个参数对指定完整消息的一部分。 每个参数对由指向数据的 PVOID 指针组成,后跟一个指定数据长度的 ULONG 值。 参数列表必须由 NULL PVOID 指针终止,后跟 ULONG (0) 。

返回值

WmiTraceMessageVa 返回以下值之一:

返回代码 说明
STATUS_SUCCESS
操作已成功完成。
STATUS_INVALID_HANDLE
LoggerHandle 不是有效的软件跟踪句柄。
STATUS_NO_MEMORY
缓冲区内存不足,无法记录消息。 有关详细信息,请参阅备注部分。
其他 NTSTATUS 值
发生内部错误。

注解

调用方可以使用 WmiTraceMessageWmiTraceMessageVa 将消息添加到 WPP 软件跟踪会话的输出日志。 WmiTraceMessage 通过在调用 WmiTraceMessageVa 之前处理变量列表机制来简化调用方的代码。

调用方可以设置以下消息标志:

标志 描述
TRACE_MESSAGE_SEQUENCE 在消息中包含序列号。 只有在为 LoggerHandle 指定的软件跟踪会话启用消息序列化时,才能使用它。
TRACE_MESSAGE_GUID MessageGuid 指定标识软件跟踪类的 GUID。 必须设置此标志。
TRACE_MESSAGE_TIMESTAMP 在邮件中包含时间戳。
TRACE_MESSAGE_PERFORMANCE_TIMESTAMP 此标志未实现且 已过时。 不得使用它。
TRACE_MESSAGE_SYSTEMINFO 将线程标识符 (TID) 和进程标识符 (PID) 包含在消息中。
 

如果以下情况之一为 true,WmiTraceMessageVa 不会记录消息:

  • 消息数据和消息标头的总大小(以字节为单位)大于为软件跟踪会话分配的单个消息缓冲区的大小。 (最大消息头大小为 48 字节。)
  • 分配给软件跟踪会话的所有消息缓冲区已满。
WmiTraceMessageVa 在调用方 IRQL 上运行。

要求

要求
最低受支持的客户端 在 Windows XP 和更高版本的 Windows 中可用。
目标平台 通用
标头 wdm.h(包括 Wdm.h、Ntddk.h、Ntifs.h)
Library NtosKrnl.lib
DLL NtosKrnl.exe
IRQL 请参见“备注”部分。

另请参阅

IoWmiWriteEvent

TRACE_INFORMATION_CLASS

WmiFireEvent

WmiQueryTraceInformation

WmiTraceMessage