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,则 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
目标平台 桌面
Header dispmprt.h (包括 Dispmprt.h)
IRQL 请参阅“备注”部分。

请参阅

DXGKARG_PARTITIONING_EVENT_NOTIFICATION

DxgkDdiControlEtwLogging