D3DKMTConnectDoorbell 函数 (d3dkmthk.h)
重要
某些信息与预发行产品相关,该产品在商业发布之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
D3DKMTConnectDoorbell 将以前 创建的门铃 (或重新连接到硬件队列) 。
语法
NTSTATUS D3DKMTConnectDoorbell(
D3DKMT_CONNECT_DOORBELL *unnamedParam1
);
参数
unnamedParam1
[in]指向描述要连接的门铃的 *D3DKMT_CONNECT_DOORBELL* 结构的指针。
返回值
当 OS 成功将门铃连接到硬件队列并且 UMD 可以使用此门铃提交工作时,D3DKMTConnectDoorbell 将返回STATUS_SUCCESS。 通常,此调用不应失败;但是,失败代码来自 GPU 丢失或停止各种不可恢复的情况。
注解
每次 UMD 将新工作提交到硬件队列并响铃时,都必须读取 DoorbellStatusCPUVirtualAddress 以检查门铃环是否成功。 如果失败,UMD 必须调用 D3DKMTConnectDoorbell 重新连接门铃,然后重试提交。
门铃可能出于多种原因而断开连接:
- 创建门铃后,OS 会将其初始化为“已断开连接”状态,并且仅在 UMD 首次调用 D3DKMTConnectDoorbell 时连接它。
- 门铃在支持专用门铃模型的硬件上被“牺牲”。 也就是说,此硬件队列的物理门铃已分配给另一个硬件队列。 这种重新分配可能是因为 GPU 上创建的硬件队列多于物理门铃。
- 作为暂停硬件队列或关闭 GPU 电源的一部分,门铃已断开连接。
当 UMD 调用 D3DKMTConnectDoorbell 以连接分配给硬件队列的门铃时,OS 会向 KMD 发出相应的 DxgkDdiConnectDoorbell 调用,以便 KMD 可以找到物理门铃,将其分配给此硬件队列,并在硬件队列、门铃、GPU 计划程序等之间建立所需的连接。
有关详细信息,请参阅 用户模式工作提交。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 11 版本 24H2 (WDDM 3.2) |
标头 | d3dkmthk.h |