DxgkDdiSubmitCommand 函数将 DMA 缓冲区提交到 GPU 的硬件命令执行单元之一。
语法
DXGKDDI_SUBMITCOMMAND DxgkddiSubmitcommand;
NTSTATUS DxgkddiSubmitcommand(
[in] IN_CONST_HANDLE hAdapter,
[in] IN_CONST_PDXGKARG_SUBMITCOMMAND pSubmitCommand
)
{...}
参数
[in] hAdapter
与显示适配器关联的上下文块的句柄。 显示微型端口驱动程序(KMD)以前在 DxgkDdiAddDevice 函数的 MiniportDeviceContext 输出参数中向 Dxgkrnl 提供了此句柄。
[in] pSubmitCommand
指向 DXGKARG_SUBMITCOMMAND 结构的指针,该结构描述 KMD 提交到硬件命令执行单元的 DMA 缓冲区。
返回值
DxgkDdiSubmitCommand 成功完成后返回 STATUS_SUCCESS。 如果驱动程序改为返回错误代码,则作系统会导致系统 bug 检查发生。 请参阅“备注”。
言论
DxgkDdiSubmitCommand 适用于物理内存寻址,而 DxgkDdiSubmitCommandVirtual 则通过虚拟内存调用。
由于分页作被视为系统作,因此它们不与特定的应用程序上下文或图形上下文相关联。 因此,提交用于分页作时,使用 pSubmitCommand 参数指向的 DXGKARG_SUBMITCOMMAND 结构的 hDevice 成员中指定的 NULL 调用 DxgkDdiSubmitCommand 函数。
但是,如果特定硬件和驱动程序的体系结构必须在内部具有设备,驱动程序必须在适配器初始化期间内部创建设备,并且必须将设备作为系统默认设备在内部保留,以便在分页作中使用。
驱动程序可以将DXGKARG_SUBMITCOMMAND的 SubmissionFenceId 成员中提供的值写入环形缓冲区中的围栏命令。 有关围栏命令的详细信息,请参阅 提供围栏标识符。
如果驱动程序返回错误代码, Dxgkrnl 将导致系统 bug 检查发生。 在故障转储文件中,错误消息 BugCheck 0x119指出,该消息将具有以下四个参数。
- 0x2(标识错误的原因)
- 从失败的驱动程序调用返回的 NTSTATUS 错误代码
- 指向 DXGKARG_SUBMITCOMMAND 结构的指针
- 指向内部计划程序数据结构的指针
应将 DxgkDdiSubmitCommand 设置为不可分页,因为它在 IRQL = DISPATCH_LEVEL 上运行。
要求
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista |
目标平台 | 桌面 |
标头 | d3dkmddi.h |
IRQL | DISPATCH_LEVEL |