電腦提示DRIVER_VERIFIER_DMA_VIOLATION藍屏修復方法
藍屏代碼0x000000E6代表"DRIVER_VERIFIER_DMA_VIOLATION",這表示由于驅動程序驗證器檢測到了與DMA(直接內存訪問)相關的違規行為,導致系統出現了藍屏錯誤。
要解決這個問題,可以嘗試以下方法:
方法一:運行Windows內存診斷工具
打開控制面板,搜索"內存診斷工具",運行該工具來檢查RAM是否有問題,如果發現任何問題,考慮更換或修復故障的內存模塊。
方法二:完整的系統檢查
運行完整的系統檢查工具(如Windows自帶的CHKDSK或第三方磁盤掃描工具),以檢查和修復可能存在的文件系統或硬盤問題。
方法三:清理并重新安裝集成外設驅動程序
有時候,集成外設的驅動程序可能會導致此錯誤,嘗試清除設備及其驅動程序,并重新安裝它們。
方法四:使用一鍵修復工具助手(強烈推薦)
1、首先你的電腦必須下載與完成安裝完成快快藍屏修復助手。如果你還沒有安裝點擊下方鏈接下載。
下載地址:>>>快快藍屏修復助手<<<
提示:安裝路徑不要選擇C盤,避免產生問題造成損失。
2、找到你電腦中的快快藍屏修復助手,點擊進入。看到首頁后,點擊首頁一鍵掃描按鈕開始掃描。等待幾分鐘,就能獲取你急切想要的結果。
3、掃描完成后會顯示電腦的所有藍屏記錄以及藍屏的詳細信息。
4、解決方案頁面顯示了導致該次藍屏的具體原因和解決方案,點擊右上角的一鍵修復進行修復。
5、切記,當修復完成之后我們還是需要重新啟動計算機的。畢竟一切修復的結果,需要重新后,才能被系統認可。
當你完成重啟后,你電腦的藍屏問題已經基本解決了。相信小編,不要急需卸載快快藍屏修復助手。畢竟它強大的功能是你未來的一個保障,可以隨時隨地為你服務,讓你再次遇到藍屏問題不在抓狂。
其他相關信息:
DRIVER_VERIFIER_DMA_VIOLATION bug 檢查 的值為 0x000000E6。 這是所有驅動程序驗證程序 DMA 驗證沖突的 bug 檢查代碼。
注意
未啟用驅動程序驗證程序時,可以觀察到 E6 主要 bug 檢查代碼。 如果在未啟用驅動程序驗證程序的情況下遇到此代碼,請參閱 DMA 驗證頁以獲取詳細信息。
DRIVER_VERIFIER_DMA_VIOLATION參數
參數 1 是唯一感興趣的參數。 此參數標識確切的沖突。 如果附加了調試器,調試器中會顯示一條信息性消息。
參數 1 | 錯誤原因和調試器消息 |
---|---|
0x00 - 雜項 DMA 錯誤。 |
此代碼可以表示參數 2 所指示的兩種錯誤: 0x1 - 驅動程序嘗試將過多字節刷新到映射寄存器文件的末尾。 參數 3 - MDL 中剩余的字節數。 參數 4 - 請求刷新的剩余字節數。 0x2 - Windows 已用完連續映射寄存器。 參數 3 - 需要映射寄存器。 參數 4 - 連續映射寄存器的數目。 |
0x01 |
性能計數器已減少。 將顯示計數器的舊值和新值。 |
0x02 |
性能計數器增長過快。 計數器值顯示在調試器中。 |
0x03 |
驅動程序釋放了過多的 DMA 通用緩沖區。 通常,這意味著它釋放了同一緩沖區兩次。 參數 2 - 釋放的額外通用緩沖區數。 |
0x04 |
驅動程序釋放了過多的 DMA 適配器通道。 通常這意味著它釋放了同一個適配器通道兩次。 參數 2 - 釋放的額外適配器通道數。 |
0x05 |
驅動程序釋放了過多的 DMA 地圖寄存器。 通常,這意味著它釋放了同一映射寄存器兩次。 參數 2 - 釋放的額外映射寄存器數。 |
0x06 |
驅動程序釋放了過多的 DMA 散點/收集列表。 通常,這意味著它釋放了兩次相同的散點/收集列表。 參數 2 - 分配的散點-收集列表。 參數 3 - 釋放的散點集合列表。 |
0x07 |
驅動程序嘗試釋放適配器,但未首先釋放其所有通用緩沖區。 參數 2 - 指向 DMA 適配器的指針。 參數 3 - 未完成的通用緩沖區數。 參數 4 - 指向相應內部驗證程序數據的指針。 |
0x08 |
驅動程序嘗試釋放適配器,但未首先釋放所有適配器通道、公共緩沖區或散點/收集列表。 參數 2 - 指向 DMA 適配器的指針。 參數 3 - 未完成的適配器通道數。 參數 4 - 指向相應內部驗證程序數據的指針。 |
0x09 |
驅動程序嘗試釋放適配器,但未首先釋放所有映射寄存器。 參數 2 - 指向 DMA 適配器的指針。 參數 3 - 未完成的映射寄存器數。 參數 4 - 指向相應內部驗證程序數據的指針。 |
0x0A |
驅動程序嘗試釋放適配器,但未首先釋放其所有散點/收集列表。 參數 2 - 指向 DMA 適配器的指針。 參數 3 - 未完成的散點集合列表的數目。 參數 4 - 指向相應內部驗證程序數據的指針。 |
0x0B |
驅動程序同時分配了過多的適配器通道 (每個適配器只允許一個適配器通道。) 參數 2 - 未完成的適配器通道。 |
0x0C |
驅動程序嘗試同時分配過多的映射寄存器。 參數 2 - 所需的映射寄存器。 參數 3 - 最大映射寄存器數。 |
0x0D |
驅動程序未刷新其適配器緩沖區。 參數 2 - 映射的字節數。 參數 3 - 一次可以映射的最大字節數。 |
0x0E |
驅動程序在沒有鎖定緩沖區的情況下嘗試了 DMA 傳輸。 有問題的緩沖區位于分頁內存中。 參數 2 - DMA 緩沖區 MDL 的地址。 |
0x0F |
驅動程序或硬件在其分配的 DMA 緩沖區之外寫入。 參數 2 是沖突代碼。 0x01 :修改 DMA 緩沖區之前的標記。預期的標記為 DmaVrfy0。 參數 3 - 緩沖區長度。 參數 4 - 緩沖區啟動。 0x02 :修改 DMA 緩沖區后的標記。 預期的標記為 DmaVrfy0。參數 3 - 緩沖區長度。 參數 4 - 緩沖區啟動。 0x03:覆蓋了免費地圖寄存器。參數 3 - 損壞地址。 預期填充模式0x0F。 0x04:在緩沖區被錯誤修改之前進行填充。參數 3 - 緩沖區啟動。 預期填充0x0F。 參數 4 - 損壞地址。 0x05:緩沖區被錯誤修改后的填充。參數 3 - 緩沖區啟動。 參數 4 - 損壞地址。 預期填充模式0x0F。 |
0x10 |
司機試圖釋放其地圖寄存器,而有些寄存器仍然被映射。 參數 2 - 仍映射的寄存器數。 |
0x11 |
驅動程序具有太多未完成的適配器引用計數。 參數 2 - 引用計數。 參數 3 - 指向 DMA 適配器的指針。 參數 4 - 指向相應內部驗證程序數據的指針。 |
0x13 |
驅動程序在不正確的 IRQL 中調用 DMA 例程。 參數 2 是沖突代碼。 0x01:當前 IRQL 與預期不同。參數 3 - 預期的 IRQL。 參數 4 - 當前 IRQL。 0x02:當前 IRQL 高于預期。參數 3 - 預期的最大 IRQL。 參數 4 - 當前 IRQL。 |
0x14 |
驅動程序在不正確的 IRQL 中調用 DMA 例程。 |
0x15 |
驅動程序嘗試分配過多的映射寄存器。 參數 2 - 分配的映射寄存器。 參數 3 - 最大映射寄存器數。 |
0x16 |
驅動程序嘗試刷新未映射的緩沖區。 參數 2 - 映射寄存器的系統虛擬空間中的地址。 參數 3 - 指向相應的內部驗證程序數據的指針。 |
0x18 |
驅動程序嘗試使用已釋放且不再存在的適配器執行 DMA 操作。 參數 2 - 指向 DMA 適配器的指針。 參數 3 - 指向相應的內部驗證程序數據的指針。 |
0x19 |
驅動程序將 null DMA_ADAPTER 值傳遞給 HAL 例程。 |
0x1B |
驅動程序將地址和 MDL 傳遞給 HAL 例程。 但是,此地址不在此 MDL 的邊界內。 參數 2 - 超出 MDL 邊界的虛擬地址。 參數 3 - MDL。 |
0x1D |
驅動程序嘗試映射已映射的地址范圍。 參數 2 - 映射開始的緩沖區。 參數 3 - 映射末尾的緩沖區。 參數 4 - 已映射的緩沖區中的系統地址。 |
0x1E |
名為 HalGetAdapter 的驅動程序。 此函數已過時 -- 必須改用 IoGetDmaAdapter 。 |
0x1F |
無效的 DMA 緩沖區。 驅動程序引用了無效的系統地址 -- 在第一個 MDL 之前或第一個 MDL 的末尾之后,或者通過使用比 MDL 緩沖區長且跨越 MDL 中的頁邊界的傳輸長度。Parameter 2 是沖突代碼。 0x01 :虛擬緩沖區地址位于第一個 MDL 之前。 參數 3 - DMA 緩沖區開始的虛擬地址。 參數 4 - 指向描述 DMA 緩沖區的第一個 MDL 的指針。 0x02:虛擬地址位于第一個 MDL 之后。 參數 3 - DMA 緩沖區開始的虛擬地址。 參數 4 - 指向描述 DMA 緩沖區的第一個 MDL 的指針。 0x03:額外的傳輸長度將跨越頁面邊界。 參數 3 - 指向描述 DMA 緩沖區的 MDL 的指針。 參數 4 - DMA 傳輸的長度。 0x04:DMA 緩沖區的虛擬地址未對齊緩存。 參數 3 - DMA 緩沖區開始的虛擬地址。 參數 4 - 指向描述 DMA 緩沖區的 MDL 的指針。 0x05:DMA 緩沖區長度未對齊緩存。 參數 3 - DMA 緩沖區的長度。 參數 4 - 指向描述 DMA 緩沖區的 MDL 的指針。 |
0x20 |
驅動程序嘗試刷新尚未映射的映射寄存器。 參數 2 - 映射寄存器基。 參數 3 - DMA 緩沖區開頭的 VA。 參數 4 - 指向用于描述 DMA 緩沖區的 MDL 的指針。 |
0x21 |
驅動程序嘗試映射零長度緩沖區以用于傳輸。 參數 2 - 指向相應的內部驗證程序數據的指針。 |
0x22 |
DMA 緩沖區未在系統 VA 中映射。 參數 2 - MDL |
0x23 |
無法刷新尚未完成或取消的通道。 參數 2 - 沖突代碼。 值:0x00:非法通道刷新 參數 3 - 控制器 ID。 參數 4 - 通道編號。 |
0x24 |
請求的長度緩沖區不足。 參數 2 - 未記入的長度。 |
0x25 |
未知的設備說明版本。 |
0x26 |
IOMMU 檢測到 DMA 沖突。 參數 2 - 故障設備的 Device 對象。 參數 3 - 故障信息 (通常會) 物理地址出錯。 參數 4 - 故障類型 (特定于硬件的) 。 |
原因
有關原因的說明,請參閱參數部分中每個代碼的說明。
解決方法
僅當驅動程序驗證程序已指示監視一個或多個驅動程序時,才會發生此 bug 檢查。 如果不打算使用驅動程序驗證程序,則應停用它。 還可以考慮刪除導致此問題的驅動程序。
如果你是驅動程序編寫者,請使用通過此 bug 檢查獲取的信息來修復代碼中的 bug。
有關驅動程序驗證程序的詳細信息,請參閱 驅動程序驗證程序。