DXGKDDI_BEGINEXCLUSIVEACCESS回呼函式 (d3dkmddi.h)
Dxgkrnl 會呼叫 DxgkDdiBeginExclusiveAccess ,通知核心模式驅動程式 IOMMU 網域交換器即將發生。
語法
DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;
NTSTATUS DxgkddiBeginexclusiveaccess(
IN_CONST_HANDLE hAdapter,
IN_PDXGKARG_BEGINEXCLUSIVEACCESS pBeginExclusiveAccess
)
{...}
參數
hAdapter
[in]與顯示配接器相關聯的內容區塊句柄。
pBeginExclusiveAccess
[in]包含 DxgkDdiBeginExclusiveAccess 之輸入自變數之DXGKARG_BEGINEXCLUSIVEACCESS結構的指標。
傳回值
如果作業成功,DxgkDdiBeginExclusiveAccess 應該傳回STATUS_SUCCESS。 否則,它應該會傳回適當的 NTSTATUS 錯誤碼。
備註
IOMMU 網域附加和中斷連結非常快速,但目前尚未不可部分完成。 這表示在交換至具有不同對應之網域時,不保證會正確轉譯透過PCIe發出的交易。
若要處理這種情況, Dxgkrnl 會呼叫下列 KMD DDI 配對:
- DxgkDdiBeginExclusiveAccess 通知 KMD,IOMMU 網域交換器即將發生。
- IOMMU 網域交換器完成後,DxgkDdiEndExclusiveAccess。
每當裝置切換至新的 IOMMU 網域時,驅動程式必須確定其硬體為無訊息。 也就是說,驅動程式必須確定這兩個呼叫之間不會從裝置讀取或寫入系統記憶體。
在這兩個呼叫之間, Dxgkrnl 保證下列各項:
- 排程器將會暫停。 所有作用中的工作負載都會排清,而且不會在硬體上傳送或排程任何新的工作負載。
- 不會進行其他 DDI 呼叫。
在這些呼叫過程中,驅動程式可以選擇停用和隱藏中斷, (包括在獨佔存取期間) 的 vsync 中斷,即使沒有 OS 的明確通知也一樣。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 10 版本 1803 (WDDM 2.4) |
標頭 | d3dkmddi.h |
IRQL | PASSIVE_LEVEL |