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

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

[in] pPatch

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

返回值

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

言论

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

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

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

如果驱动程序返回错误代码,Microsoft DirectX 图形内核子系统将导致系统 bug 检查。 在故障转储文件中,错误由消息 BugCheck 0x119记录,其中包含以下四个参数。

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

要求

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

另请参阅

DXGKARG_PATCH

DxgkDdiAddDevice