D3DKMTConnectDoorbell 函数 (d3dkmthk.h)

重要

某些信息与预发行产品相关,该产品在商业发布之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。

D3DKMTConnectDoorbell以前创建的门铃对象 (或重新连接到硬件队列) 。

语法

NTSTATUS D3DKMTConnectDoorbell(
  D3DKMT_CONNECT_DOORBELL *unnamedParam1
);

参数

unnamedParam1

[in]指向描述要连接的门铃 的D3DKMT_CONNECT_DOORBELL 结构的指针。

返回值

当 OS 成功将门铃对象连接到硬件队列并且 UMD 可以将此门铃用于工作提交时,D3DKMTConnectDoorbell 将返回STATUS_SUCCESS。 通常,此调用不应失败;但是,失败代码来自 GPU 丢失或停止各种不可恢复的情况。

注解

每当 UMD 将新工作提交到队列并响铃时,它都必须读取 pDoorbellStatusCPUVirtualAddress,以检查门铃环是否成功。 如果失败,UMD 必须调用 D3DKMTConnectDoorbell 重新连接门铃,然后重试提交。

门铃可能出于多种原因断开连接,例如:

  • 创建门铃后,OS 会将其初始化为“已断开连接”状态,并且仅在 UMD 首次调用 D3DKMTConnectDoorbell 时连接。
  • 门铃在支持专用门铃模型的硬件上被“牺牲”。 也就是说,此硬件队列的物理门铃已分配给另一个硬件队列。 这种重新分配可能是因为 GPU 上创建的硬件队列多于物理门铃。
  • 作为暂停硬件队列或关闭 GPU 电源的一部分,门铃已断开连接。

当 UMD 调用 D3DKMTConnectDoorbell 以连接分配给硬件队列的门铃时,OS 会向 KMD 发出相应的 DxgkDdiConnectDoorbell 调用,以便 KMD 可以找到物理门铃,将其分配给此硬件队列,并在硬件队列、门铃、GPU 计划程序等之间建立所需的连接。

要求

要求
最低受支持的客户端 WIN11_FUTURE
标头 d3dkmthk.h

另请参阅

D3DKMT_CONNECT_DOORBELL

D3DKMTCreateDoorbell

DxgkDdiConnectDoorbell