DXGKDDI_PATCH回调函数 (d3dkmddi.h)

DxgkDdiPatch 函数在将 DMA 缓冲区提交到图形硬件之前,将物理地址分配给给定的直接内存访问 (DMA) 缓冲区。

语法

DXGKDDI_PATCH DxgkddiPatch;

NTSTATUS DxgkddiPatch(
  [in] IN_CONST_HANDLE hAdapter,
  [in] IN_CONST_PDXGKARG_PATCH pPatch
)
{...}

参数

[in] hAdapter

与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序之前在 DxgkDdiAddDevice 函数的 MiniportDeviceContext 输出参数中向 Microsoft DirectX 图形内核子系统提供了此句柄。

[in] pPatch

指向 DXGKARG_PATCH 结构的指针,该结构描述要用物理地址修补的 DMA 缓冲区。

返回值

成功完成后返回 STATUS_SUCCESS 。 如果驱动程序改为返回错误代码,则操作系统会导致发生系统 bug 检查。 有关更多信息,请参见下面的“备注”部分。

注解

DxgkDdiPatch 函数必须将物理地址分配给 DMA 缓冲区。 因此,当显示微型端口驱动程序生成 DMA 缓冲区时,驱动程序必须确保 DMA 缓冲区中有可用空间来插入处理物理地址所需的指令。 请注意,物理地址可能对应于视频内存、AGP/PCI Express 内存或系统内存。

驱动程序必须检查 pPatch 参数指向的 DXGKARG_PATCH 结构的pPatchLocationList 成员中提供的修补程序位置列表,以标识 DMA 缓冲区中必须使用物理地址修补的位置。 提供的分配列表 (由 DXGKARG_PATCH) 的 pAllocationList 成员指定,还包含视频内存管理器生成的物理地址。 调用驱动程序的 DxgkDdiPatch 函数是驱动程序在将 DMA 缓冲区提交到图形处理单元 (GPU) 之前修改 DMA 缓冲区内容的最后机会。 请注意,在 DMA 缓冲区被抢占的情况下,驱动程序可以多次修补 DMA 缓冲区。

驱动程序可以将 DXGKARG_PATCH 的 SubmissionFenceId 成员中提供的值修补到 DMA 缓冲区末尾的 fence 命令中。 有关此成员的详细信息,请参阅 提供围栏标识符

如果驱动程序返回错误代码,则 Microsoft DirectX 图形内核子系统会导致发生系统 bug 检查。 在故障转储文件中, BugCheck 0x119消息指出了错误,该消息具有以下四个参数。

  1. 0x3
  2. 指向内部计划程序数据结构的指针
  3. 指向内部计划程序数据结构的指针
  4. 指向内部计划程序数据结构的指针
DxgkDdiPatch 应可分页。

要求

要求
最低受支持的客户端 Windows Vista
目标平台 桌面
标头 d3dkmddi.h
IRQL PASSIVE_LEVEL

另请参阅

DXGKARG_PATCH

DxgkDdiAddDevice