ドライバー検証DMA違反BSODエラーを解決する方法
DMA Verifier の停止コード 0x000000E6 のバグチェックは少し奇妙ですが、何が起こっているのかが分かれば修正不可能ではありません。基本的に、Windows は DMA エラー (ドライバーが処理する直接メモリ アクセスに関するもので、バッファー リークやメモリの管理ミスが発生する可能性があるもの) を検出すると、この BSOD をスローします。場合によっては、問題のあるドライバーを見つけるための組み込みツールである Driver Verifier が原因で、または BIOS のハードウェア設定 (特に IOMMU または VT-D 周辺) が原因で、このエラーが表示されることがあります。これを修正するには、エラー コードだけでなく、いくつかの重要な設定を微調整する必要があります。また、ダンプ ファイルを分析して、どのドライバーが異常を起こしたかを詳しく調べると役に立ちます。ただし、ほとんどの人にとっては、Driver Verifier をリセットし、BIOS で IOMMU/VT-D を無効にするとうまくいきます。
ただし、これらの設定を停止しても、BSODは一時的に解消されるだけであることにご注意ください。真の原因であるドライバーやハードウェアの不具合は、まだどこかに潜んでいる可能性があります。そのため、クラッシュが収まったら、ドライバーのトラブルシューティングやハードウェアコンポーネントのチェックを行う価値がありますが、それはまた別の話です。とりあえず、Driver Verifierを無効にしてBIOS設定を変更し、エラーを鎮静化させる方法をご紹介します。
ドライバー検証を無効にする
この方法は、Driver Verifier がアクティブにドライバーをキャッチしている場合に役立ちます。これは、動作が不安定なドライバーや設定の残存によってトリガーされることがあります。疑わしいドライバーをテストする前に有効にしていた可能性がありますが、誤って構成されていたり、それ自体が BSOD を引き起こしていたりする場合は面倒です。無効にするとすべての監視がリセットされ、後で実際のドライバーまたはハードウェアの問題をトラブルシューティングする間、Windows がより正常に動作するようになります。特定のシステムでは、Driver Verifier が標準メニューから適切にオフにならない場合があるため、コマンド ラインまたはレジストリを使用してオフにすると、手間が省ける場合があります。そしてもちろん、PC が正常に起動しない場合は、セーフ モードが役に立ちます。そこで無効にするか、Windows インストール メディアを使用して WinRE に入ってみてください。
ドライバー検証マネージャーの使用
- Win + Rを押して と入力し
verifier、Enter キーを押します。これにより検証ツールが直接開き、既存の設定を削除できる場合もあります。 - 検証を「既存の設定を削除する」に設定します。
- これにより、以前に設定したすべてのドライバー チェックがリセットされ、BSOD が停止されるはずです。
この方法は簡単で、ドライバー検証ツールがクラッシュループを引き起こしている場合に有効です。他に問題がなければ、Windowsはその後正常に再起動するはずです。この方法が機能しない場合、またはドライバー検証ツールが無効化されない場合は、コマンドライン方式を試してください。
コマンドライン経由
- Win + Rを開き、 と入力して
cmd、Ctrl + Shift + Enterを押して管理者として実行します。基本的に、検証ツールを管理するには昇格された権限が必要です。 - 入力
verifier /resetしてEnterキーを押します。このコマンドは、すべての検証設定をデフォルトにリセットし、ドライバーの監視とクラッシュの発生を停止します。
レジストリの不具合により、この方法でも検証ツールの設定が完全にクリアされない場合があります。その場合は、レジストリキーを手動で削除する必要があるかもしれません。ただし、Windows は必要以上にレジストリを複雑にするため、必ず事前にレジストリをバックアップしてください。
レジストリのクリーンアップ
- Win + Rを押して、 と入力し
regedit、 Enter キーを押します。 - 移動先: Computer\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management
- VerifyDrivers キーとVerifyDriverLevelキーを探して削除します。
念のため、これを行う前にレジストリをバックアップしてください。ブートループに陥ったり、Windowsに通常通りアクセスできない場合は、セーフモードで起動するか、回復オプションを使用してください。セーフモードで検証機能を無効にすれば問題が解決する場合もあります。
BIOSで仮想化を無効にする
実は、このBSODは、BIOSでIntel VT-DまたはAMD IOMMUが有効になっている場合にも発生する可能性があります。これらの設定をいじったことがない場合でもです。Windowsは仮想化やメモリ保護のためにこれらの機能を使用しますが、特に外付けPCIeデバイスを搭載したマシンでは、DMAに干渉することがあります。解決策は、BIOSでこれらのオプションを無効にすることです。
BIOS メニューはマザーボードのブランドによって大きく異なるため、大まかな手順は次のとおりです。
- PCを再起動し、BIOSキー(DelキーやF2キー、場合によってはEscキーやF10キーなど)を繰り返し押します。不明な場合は、マザーボードまたはノートパソコンのモデル名と「BIOSキー」をGoogleで検索してください。
- 中に入ったら、 「Advanced CPU Configuration(CPUの詳細設定)」や「Chipset(チップセット)」などの設定項目を探します。通常は「Advanced(詳細設定)」や「Security(セキュリティ)」などのタブの下にあります。
- 仮想化関連のオプションを探します。これらは通常、Intel VT-X、AMD-V、VTx、VT-D、またはKernel DMA Protectionというラベルが付いています。BIOSメニューをざっと検索してみてください。他のメニューの後ろに隠れている場合もあります。
- これらのオプションを無効にしてください。BIOSに「Kernel DMA Protection」のトグルがある場合は、 「Disabled」に設定してください。
- 変更を保存して(通常はF10を使用)、終了します。
マザーボードごとに処理方法が異なるため、少し面倒です。また、BIOSアップデートによってメニュー構造が変更される場合もあり、設定によってはSVM(Secure Virtual Machine)などの仮想化オプションもDMAに影響を与える可能性があるため、無効にする必要があるかもしれません。
BIOSをいじった後、Windowsを再起動してクラッシュが止まるかどうか確認してください。それでも止まらない場合は、BIOSを再度確認するか、ダンプファイルの分析に移行してください。
さらに深く掘り下げたい場合はダンプファイルを分析する
この問題の原因となっているドライバーやハードウェアを本当に知りたい場合は、ダンプファイルを分析できます。ダンプファイルは通常、%windir%\Minidumpに保存されます。Microsoft Store のWinDbg Previewなどのツールは、この際に非常に便利です。
インストールが完了したら、管理者として実行し、最新のダンプファイルを開いて!analyze -v を実行してください。MODULE_NAMEまたはProbably caused byセクションを探してください。必ずしも明確ではありませんが、どのドライバーまたはモジュールが問題を起こしたかのヒントが得られる場合があります。場合によっては、一般的なカーネルエラーが発生することがあります。その場合は消去法で対応していくことになります。特にグラフィック、ネットワーク、ストレージなどのドライバーを更新またはロールバックしてみてください。
ダンプファイルの解析は難解な問題を引き起こす可能性がありますが、多くの場合、真の原因が特定できます。多くの場合、ドライバが破損していたり、アップデート後に正常に動作しなくなったりすることが原因です。
問題のあるドライバーのトラブルシューティング
それでもBSODが繰り返し発生し、ダンプ解析で特定のドライバーが指摘された場合は、ドライバーを直接トラブルシューティングする必要があります。通常は、アップデートまたはロールバックが最も簡単です。ネットワークドライバーとGPUドライバーはよくある原因なので、まずはそこから始めることをお勧めします。手順は非常に簡単です。
ドライバーの更新
- Win + Xまたはスタートを右クリックしてデバイスマネージャーを開きます。
- デバイス (ネットワーク アダプター、ディスプレイ カードなど) を右クリックし、[ドライバーの更新]を選択します。
- 「ドライバーを自動的に検索する」を選択すると、Windows は Windows Update 経由で最新のドライバーを検索します。または、手動でダウンロードしたドライバー ファイルを指定します。
メーカーのウェブサイトでは、より新しい、またはより安定したドライバーが提供されている場合があります。Windows Update で問題が解決しない場合は、それらのドライバーを試してみてください。また、最新のドライバーが不安定な場合は、より実績のある古いバージョンにロールバックするのが最善策かもしれません。
ドライバーのロールバック
- デバイス マネージャーを開き、デバイスを見つけてダブルクリックします。
- [ドライバー]タブに移動し、[ドライバーのロールバック]をクリックします。
- プロンプトが表示されたら理由を選択し、ロールバックします。
ロールバックが利用できない場合、またはドライバーが最新の場合は、既知の安定バージョンをアンインストールしてから再インストールする必要があるかもしれません。場合によっては、メーカーのセットアップツールを使用するのが最も簡単なこともあります。さらに、ディスプレイドライバーアンインストーラー(DDU)などのドライバークリーンアップツールを使用すれば、再インストール前に、頑固で問題のあるドライバーを消去できます。
Windows を更新する
もちろん、Windows自体も最新の状態に保ってください。Microsoftは、特に20H2以降の新しいビルドでDMA関連のバグを修正しました。古いバージョンのWindows、特に20H2より前のバージョンでは、特に外付けPCIeデバイスやレガシーハードウェアでこのエラーを引き起こすバグが発生する可能性があります。そのため、以下の点にご注意ください。
- Win + Rを押して、 と入力し
control update、 Enter キーを押します。 - 「更新プログラムの確認」をクリックし、利用可能な更新プログラムをインストールします。
- 再起動して、BSOD が続くかどうかを確認します。
それでも問題が解決しない場合は、ハードウェア自体に問題がある可能性があります。しかし、ソフトウェア側のチェックを行うことで、ほとんどの一般的なシナリオに対応できます。