DXGKDDI_PREEMPTCOMMAND回调函数 (d3dkmddi.h)
DxgkDdiPreemptCommand 函数抢占以前提交到硬件命令执行单元中且当前排队的直接内存访问(DMA)缓冲区。
语法
DXGKDDI_PREEMPTCOMMAND DxgkddiPreemptcommand;
NTSTATUS DxgkddiPreemptcommand(
[in] IN_CONST_HANDLE hAdapter,
[in] IN_CONST_PDXGKARG_PREEMPTCOMMAND pPreemptCommand
)
{...}
参数
[in] hAdapter
与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序以前向 MiniportDeviceContext 中的 Microsoft DirectX 图形内核子系统提供了此句柄,DxgkDdiAddDevice 函数的输出参数。
[in] pPreemptCommand
指向 DXGKARG_PREEMPTCOMMAND 结构的指针,该结构描述用于抢占以前提交到硬件命令执行单元的 DMA 缓冲区的命令。
返回值
成功完成后返回 STATUS_SUCCESS。 如果驱动程序改为返回错误代码,则作系统会导致系统 bug 检查发生。 有关详细信息,请参阅以下“备注”部分。
言论
如果驱动程序确定硬件已完成处理所有提交的 DMA 缓冲区,并且硬件已通知图形处理单元(GPU)计划程序完成-当调用其 DxgkDdiPreemptCommand 函数以抢占 DMA 缓冲区时, 驱动程序应执行以下作,而不是将 PreemptionFenceId 标识的抢占围栏DXGKARG_PREEMPTCOMMAND 成员提交到硬件:
- 将 IRQL 提升为中断级别。 例如,驱动程序可以调用 DxgkCbSynchronizeExecution 函数来与其 DxgkDdiInterruptRoutine 函数同步。
-
告知 GPU 计划程序抢占信息。 驱动程序可以直接调用 DxgkCbNotifyInterrupt 函数,也可以直接调用其 DxgkDdiInterruptRoutine 函数(例如,如果驱动程序还必须执行其他更新)。
请注意,GPU 计划程序处理硬件因超时检测和恢复(TDR)工作而停止响应的实例。
- 0x2
- 从失败的驱动程序调用返回的 NTSTATUS 错误代码
- 指向 DXGKARG_PREEMPTCOMMAND 结构的指针
- 指向内部计划程序数据结构的指针
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
目标平台 | 桌面 |
标头 | d3dkmddi.h |
IRQL | DISPATCH_LEVEL |