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 请参阅“备注”部分。

另请参阅

DXGKARG_PARTITIONING_EVENT_NOTIFICATION

DxgkDdiControlEtwLogging