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形式。 当 EventGuid GUID_DXGKDDI_AZURE_TRIAGE_EVENT时,将忽略 类型。
[in] EventBufferSize
EventBuffer指向的缓冲区的大小(以字节为单位)。 如果缓冲区大于 256 个字节,则会出现显著的性能损失。
[in] EventBuffer
指向包含要记录信息的缓冲区的指针。 此参数可以是 NULL,也可以是指向以下结构类型的指针,具体取决于 EventGuid的值。
返回值
没有
言论
如果未启用事件日志记录,DxgkCbLogEtwEvent 将立即返回,而无需记录事件。
若要启用或禁用事件日志记录,请调用 DxgkDdiControlEtwLogging 函数。
如果 EventBufferSize 小于或等于 256,则可以调用任何 IRQL DxgkCbLogEtwEvent。 如果 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 | 请参阅“备注”部分。 |