共用方式為


啟用裝置驅動程式的 DMA 重新對應

為了確保與 核心 DMA 保護DMAGuard 策略相容,PCIe 裝置驅動程式可以選擇啟用直接記憶體存取 (DMA) 重新對應。

裝置驅動程式的 DMA 重新對應可防範記憶體損毀和惡意 DMA 攻擊,併為裝置提供更高層級的相容性。 此外,具有 DMA 重新對應相容驅動程式的裝置可以啟動和執行 DMA,而不論鎖定畫面狀態為何。

在已啟用核心 DMA 保護的系統上,裝置可能被 DMAGuard 原則封鎖,若其驅動程式不相容於 DMA 重新對應並連接至 外部/公開 PCIe 連接埠(例如 M.2、Thunderbolt),依系統管理員所設定的原則值而定。

啟用和選擇加入 DMA 重新對應之驅動程式需求

驅動程式會使用下列介面執行 DMA:

若要調整驅動程式的 DMA 重新對應原則,請新增 INF 指示詞。 有兩種可能的方法:個別裝置(建議和慣用)機制和個別驅動程式(舊版)機制。

個別裝置選擇加入機制

針對 Windows 24H2 和更新版本,請使用此個別裝置方法。 如果存在,則個別裝置選擇加入會覆寫舊版個別驅動程式方法(例如,如果已設定 RemappingSupported,則會忽略 DmaRemappingCompatible 鍵)。

將如以下所示的 INF 指示詞新增至裝置列舉區段:

[MyDriver_Device.NT.HW]
AddReg=DMA_Remapping_OptIn_AddReg

[DMA_Remapping_OptIn_AddReg]
HKR,"DMA Management","RemappingSupported",0x00010001,1

DMA Management\RemappingSupported的有效值:

價值 意義
0 選擇退出。指出裝置和驅動程式與 DMA 重新映射不相容。
1 同意加入 表示裝置和驅動程式與 DMA 重映射完全相容。
沒有登錄機碼 讓系統判斷原則。

您可以選擇性地新增 RemappingFlags,以進一步控制行為:

[DMA_Remapping_OptIn_AddReg]
HKR,"DMA Management","RemappingSupported",0x00010001,1
HKR,"DMA Management","RemappingFlags",0x00010001,0x00000001

DMA Management\RemappingFlags的有效值:

價值 意義
0 如果 支援重新映射 為 1,請無條件加入。
1 如果 重新對應Supported 為 1,則選擇啟用,但只有在符合下列一或多個條件時:A. 裝置是外部裝置(例如,雷電);B. 在驅動程式驗證器中已啟用 DMA 驗證。
沒有登錄機碼 與 0 值相同。

這些登錄機碼會出現在列舉樹狀結構下:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\PCI\<device instance path>\Device Parameters\DMA Management

個別驅動程式選擇加入機制

只針對 Windows 11 23H2 的 Windows 版本使用此個別驅動程式方法。 建議使用基於每個裝置的方法

新增 INF 指令,例如下列內容至服務安裝區段:

[MyServiceInstall_AddReg]
HKR,Parameters,DmaRemappingCompatible,0x00010001,1    ; where 1 = opt-in

DmaRemappingCompatible的有效值:

價值 意義
0 選擇退出。指出您的驅動程式與 DMA 映射不相容。
1 同意加入。 表示您的驅動程式與 DMA 重新對應完全相容。
2 選擇加入,但只有在符合下列一或多個條件時:A。裝置是外部裝置(例如雷電);B。驅動程式驗證器中已啟用 DMA 驗證
3 選擇加入
沒有登錄機碼 讓系統判斷原則。

測試驅動程式時,請啟用驅動程式驗證器。 為了在驅動程式驗證器下進行測試,選擇外部裝置的 INF 指示詞值會升階為 1。

登錄機碼會出現在服務安裝樹狀結構下:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<driver name>\Parameters

警告

圖形設備驅動程式不支援 DMA 重新映射。

驗證特定裝置驅動程序實例已啟用 DMA 重新對應

使用已啟用 VT-d/AMD-Vi 的最新 Windows 組建,在 Intel x64 和 AMD64 系統上測試驅動程式功能。

若要檢查特定驅動程式是否選擇重新對應 DMA,請在裝置的 [詳細數據] 索引標籤中查看設備管理員,以取得對應至 DMA 重新對應原則屬性的值。 驅動程式可以查詢 DEVPKEY_Device_DmaRemappingPolicy 屬性,以判斷裝置的 DMA 重新對應功能。 請參閱該頁面上的潛在傳回值,並請注意,這些傳回值與上一節所列 DmaRemappingCompatible 的值不同。

設備管理器詳細數據索引標籤。

注意

針對 Windows 10 版本 1803 和 1809,設備管理器中的屬性字段會使用 GUID {83da6326-97a6-4088-9453-a1923f573b29}[18]