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

另请参阅

DXGKARG_PARTITIONING_EVENT_NOTIFICATION

DxgkDdiControlEtwLogging