DXGKCB_LOG_ETW_EVENT回调函数 (dispmprt.h)
DxgkCbLogEtwEvent 函数记录 Windows (ETW) 事件跟踪。
语法
DXGKCB_LOG_ETW_EVENT DxgkcbLogEtwEvent;
void DxgkcbLogEtwEvent(
[in] const LPCGUID EventGuid,
[in] UCHAR Type,
[in] USHORT EventBufferSize,
[in] PVOID EventBuffer
)
{...}
参数
[in] EventGuid
标识要记录的事件的 GUID。
[in] Type
一个指定事件类型的常量。 这些常量在 Evntrace.h 中定义,其形式为 EVENT_TRACE_TYPE_XX。 GUID_DXGKDDI_AZURE_TRIAGE_EVENT EventGuid 时,将忽略类型。
[in] EventBufferSize
EventBuffer 指向的缓冲区的大小(以字节为单位)。 如果缓冲区大于 256 个字节,则会显著降低性能。
[in] EventBuffer
指向包含要记录的信息的缓冲区的指针。 此参数可以是 NULL,也可以是指向以下结构类型的指针,具体取决于 EventGuid 的值。
返回值
无
备注
如果未启用事件日志记录, DxgkCbLogEtwEvent 将立即返回,而不记录事件。
若要启用或禁用事件日志记录,请调用 DxgkDdiControlEtwLogging 函数。
如果 EventBufferSize 小于或等于 256,则可以将 DxgkCbLogEtwEvent 称为任何 IRQL。 如果 EventBufferSize 大于 256,则必须在 IRQL = PASSIVE_LEVEL调用 DxgkCbLogEtwEvent 。
示例:使用事件记录器记录事件
下面的代码示例演示如何使用事件记录器记录事件。
// {A7BF27A0-7401-4733-9FED-FDB51067FECC}
DEFINE_GUID(R200_DUMMY_LOGGING,
0xa7bf27a0, 0x7401, 0x4733, 0x9f, 0xed, 0xfd, 0xb5, 0x10, 0x67, 0xfe, 0xcc);
VOID
DummyTrace(
HW_DEVICE_EXTENSION* Adapter
)
{
Adapter->ddiCallback.DxgkCbLogEtwEvent(&R200_DUMMY_LOGGING,
EVENT_TRACE_TYPE_INFO,
0,
NULL);
}
记录 Azure 驱动程序事件
从 Windows Server 2022 (WDDM 2.9) 开始,图形驱动程序的 DxgkCbLogEtwEvent 回调函数可以公开与 Azure 会审和监视相关的重要事件。 随着 Azure 添加 vGPU 产品/服务,拥有一种机制来公开驱动程序看到的重要事件将变得更加重要。 对于监视和运行状况,尤其重要的是公开 (VF TDR) 和全 GPU 重置 (适配器范围的 TDR) 。 将来,此框架将允许 OS 公开其他重要事件,这些事件可能涉及特定于驱动程序的行为,这些问题在问题出现时具有会审值。
驱动程序应使用以下 GUID 来报告特定的 Azure 驱动程序事件:
DEFINE_GUID(GUID_DXGKDDI_AZURE_TRIAGE_EVENT,
0x45125F6F, 0x6132, 0x4082, 0xAD, 0x17, 0xED, 0x27, 0xF8, 0xDD, 0x02, 0xF9);
图形内核组件使用这些事件将会审信息馈送到用于事件会审的标准 Azure 监视管道中。 它们还与公开的其他图形事件集成,以生成计算机事件历史记录,并公开用于监视主机及其支持的 VM 的运行状况的有用查询。
使用此 GUID 时, EventBuffer 指向 DXGKARG_PARTITIONING_EVENT_NOTIFICATION 结构。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
目标平台 | 桌面 |
标头 | dispmprt.h (包括 Dispmprt.h) |
IRQL | 请参见“备注”部分。 |