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记录,其中包含以下四个参数。
- 0x3
- 指向内部计划程序数据结构的指针
- 指向内部计划程序数据结构的指针
- 指向内部计划程序数据结构的指针
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
目标平台 | 桌面 |
标头 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |