DXGKDDI_BEGINEXCLUSIVEACCESS回呼函式 (d3dkmddi.h)
Dxgkrnl 會呼叫 DxgkDdiBeginExclusiveAccess,以通知內核模式驅動程式 IOMMU 網域交換器即將發生。
語法
DXGKDDI_BEGINEXCLUSIVEACCESS DxgkddiBeginexclusiveaccess;
NTSTATUS DxgkddiBeginexclusiveaccess(
IN_CONST_HANDLE hAdapter,
IN_PDXGKARG_BEGINEXCLUSIVEACCESS pBeginExclusiveAccess
)
{...}
參數
hAdapter
[in]與顯示配接器相關聯的內容區塊句柄。
pBeginExclusiveAccess
[in]DXGKARG_BEGINEXCLUSIVEACCESS 結構的指標,其中包含 DxgkDdiBeginExclusiveAccess的輸入自變數。
傳回值
如果作業成功,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 |