デバイス ドライバーの DMA 再マッピングの有効化

カーネル DMA 保護DMAGuard との互換性を確保するために、PCIe デバイス ドライバーは直接メモリ アクセス (DMA) の再マッピングをオプトインできます。

デバイス ドライバーの DMA 再マッピングは、メモリの破損や悪意のある DMA 攻撃から保護し、デバイスの互換性をより高いレベルに引き上げます。 また、DMA 再マッピング互換ドライバーを持つデバイスは、ロック画面の状態に関係なく、DMA を開始して実行できます。

カーネル DMA 保護が有効なシステムでは、DMAGuard Policy は、システム管理者によって設定されたポリシー値に応じて、 外部/に公開されている PCIe ポート (M.2、Thunderbolt™ など) に接続された DMA 再マップ非互換ドライバーを使用してデバイスをブロックする場合があります。

DMA の再マッピングを有効にしてオプトインするためのドライバー要件

ドライバーは、次のインターフェイスを使用して DMA を実行します。

ドライバーの DMA 再マップ ポリシーを調整するには、サービスのインストール セクションに次のような INF ディレクティブを追加します。

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

DmaRemappingCompatible の有効な値は次のとおりです。

Value 説明
0 オプトアウト。これは、ドライバーが DMA の再マッピングと互換性を持たしていないことをシステムに示します。
1 オプトアウト。 これは、ドライバーが DMA 再マッピングと完全に互換性があることをシステムに示します。
2 オプトイン。ただし、1 つ以上の条件が満たされた場合にのみ選択します: A。デバイスが外部デバイスである場合 (例:Thunderbolt);B。ドライバー検証ツールで DMA 検証が有効になっている場合。
レジストリ キーなし システムがポリシーを決定できるようにします。

ドライバーをテストするときは、ドライバー検証ツールを有効にします。 ドライバー検証ツールでテストを行う場合、外部デバイスを選択するための INF ディレクティブの値は 1 に昇格されます。

VT-d/AMD-Vi が有効な最新の Windows 10 ビルドを使用して、Intel x64 および AMD64 システムのドライバー機能をテストします。

警告

DMA 再マッピングは、グラフィックス デバイス ドライバーではサポートされていません。

バージョン 3 のサポートは、Windows 11でのみ使用できます。 Windows 10、INF で 3 を指定すると、システムは 2 の値にフォールバックします。

特定のデバイス ドライバー インスタンスに対して DMA 再マッピングが有効になっていることを検証する

特定のドライバーが DMA 再マッピングを選択した場合にチェックするには、デバイスの [詳細 ] タブで、DMA 再マッピング ポリシー プロパティに対応する値をデバイス マネージャー調べます。 ドライバーは、DEVPKEY_Device_DmaRemappingPolicy プロパティに対してクエリを実行して、デバイスの DMA 再マップ機能を判断できます。 そのページの潜在的な戻り値を確認し、これらの戻り値が前のセクションで示した DmaRemappingCompatible の値と同じではないことに注意してください。

Device Manager Details Tab.

Note

Windows 10バージョン 1803 および 1809 の場合、デバイス マネージャー のプロパティ フィールドでは GUID {83da6326-97a6-4088-9453-a1923f573b29}[18]