錯誤檢查0x10D:WDF_VIOLATION

WDF_VIOLATION錯誤檢查的值為 0x0000010D。 這表示 Kernel-Mode 驅動程式架構 (KMDF) 偵測到 Windows 在架構驅動程式中發現錯誤。

重要

本文適用于程式設計人員。 如果您是在使用電腦時收到藍色螢幕錯誤碼的客戶,請參閱 針對藍色畫面錯誤進行疑難排解

WDF_VIOLATION參數

參數 1 表示錯誤檢查的特定錯誤碼。 保留參數 4。

參數 1 參數 2 參數 3 錯誤原因

0x1

WDF_POWER_ROUTINE_TIMED_OUT_DATA 結構的指標

保留

架構型驅動程式在電源作業期間逾時。 這通常表示裝置堆疊未設定DO_POWER_PAGABLE位,驅動程式在分頁裝置堆疊關閉電源之後嘗試可分頁作業。

0x2

保留

保留

嘗試取得目前保留的鎖定。

0x3

WDFREQUEST 控制碼

這兩個緩衝區上保留的未處理參考數目

Windows Driver Framework 驗證程式發生嚴重錯誤。 特別是,I/O 要求已完成,但無法刪除架構要求物件,因為輸入緩衝區、輸出緩衝區或兩者都有未完成的參考。

0x4

保留

呼叫端的位址

Null參數已傳遞至需要非Null值的函式。

0x5

傳入的控制碼值

保留

不正確的型別架構物件控制碼已傳遞至 Framework 物件方法。

0x6

請參閱下表。

0x7

架構物件的控制碼

保留

驅動程式嘗試藉由呼叫 WdfObjectDereference 刪除控制碼,而不是呼叫 WdfObjectDelete,嘗試刪除架構物件。

0x8

DMA 交易對象的控制碼

保留

作業在 DMA 交易對象未處於正確狀態時發生。

0x9

目前未使用。

0xA

WDF_QUEUE_FATAL_ERROR_DATA 結構的指標

保留

處理目前在佇列中的要求時發生嚴重錯誤。

0xB

請參閱下表。

0xC

WDFDEVICE 控制碼

新 PnP IRP 的指標

當驅動程式正在處理另一個狀態變更的 PnP IRP 時,新的狀態變更 PnP IRP 到達。

0xD

WDFDEVICE 控制碼

Power IRP 的指標

裝置的電源原則擁有者收到未要求電源 IRP。 可能有多個電源原則擁有者,但只允許一個。 KMDF 驅動程式可以藉由呼叫 WdfDeviceInitSetPowerPolicyOwnership來變更電源原則擁有權。

0xE

呼叫事件回呼函式的 IRQL。

傳回事件回呼函式的 IRQL。

事件回呼函式未在呼叫它的相同 IRQL 上傳回。 回呼函式會藉由取得微調鎖定來直接或間接變更 IRQL (,這會引發 IRQL DISPATCH_LEVEL,但不會釋放微調鎖定) 。

0xF

事件回呼函式的位址。

保留

事件回呼函式已進入重大區域,但未在傳回之前離開重要區域。

參數 1 等於 0x6

如果參數 1 等於0x6,則處理 WDF 要求時發生嚴重錯誤。 在此情況下,參數 2 會進一步指定已建立的嚴重錯誤類型,如列舉WDF_REQUEST_FATAL_ERROR所定義。

參數 2 參數 3 錯誤原因

0x1

IRP 的位址

沒有其他 I/O 堆疊位置可用來格式化基礎 IRP。

0x2

WDF 要求控制碼值

嘗試格式化不包含 IRP 的架構要求物件。

0x3

WDF 要求控制碼值

驅動程式嘗試傳送已傳送至 I/O 目標的架構要求。

0x4

WDR_REQUEST_FATAL_ERROR_INFORMATION_LENGTH_MISMATCH_DATA 結構的指標,其中包含 IRP 的指標、WDF 要求控制碼值、IRP 主要函式,以及嘗試寫入的位元組數目

驅動程式已完成架構要求,但已將比 IRP 中指定的更多位元組寫入輸出緩衝區。

參數 1 等於 0xB

如果參數 1 等於0xB,則嘗試取得或釋放鎖定無效。 在此情況下,參數 3 會進一步指定已發生的錯誤。

參數 2 參數 3 錯誤原因

控制碼值

0x0

傳遞至 WdfObjectAcquireLockWdfObjectReleaseLock 的控制碼代表不支援同步處理鎖定的物件。

WDF 微調鎖定控點

0x1

微調鎖定正由未取得它的執行緒釋放。

原因

如需原因的說明,請參閱 Parameters 一節中的每個程式碼描述。

解決方案

!analyze偵錯延伸模組會顯示錯誤檢查的相關資訊,而且有助於收集資訊,例如錯誤碼模組。

一般而言,WDF 傾印檔案會產生造成這個錯誤檢查之驅動程式的進一步資訊。 使用此命令來查看記錄檔。

kd> !wdfkd.wdflogdump <WDF_Driver_Name>

如果參數 1 等於 0x2,請檢查呼叫端的堆疊,以判斷有問題的鎖定。

如果參數 1 等於 0x3,驅動程式的 Kernel-Mode Driver Framework 錯誤記錄檔將包含未完成參考的詳細資料。

如果 Parameter 1 等於 0x4,請使用 ln 偵錯工具 命令搭配 Parameter 3 的值做為其引數,以判斷哪一個函式需要非Null 參數。

如果 Parameter 1 等於 0x7,請使用 !wdfkd.wdfhandleParameter 2 extension 命令來判斷控制碼類型。

如果參數 1 等於 0xA,則WDF_QUEUE_FATAL_ERROR_DATA結構會指出有問題的要求或佇列控制碼。 如果有的話,它也會指出 NTSTATUS,如果沒有STATUS_SUCCESS。