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消息指出了错误,该消息具有以下四个参数。
- 0x3
- 指向内部计划程序数据结构的指针
- 指向内部计划程序数据结构的指针
- 指向内部计划程序数据结构的指针
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows Vista |
目标平台 | 桌面 |
标头 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |