錯誤檢查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 |
傳遞至 WdfObjectAcquireLock 或 WdfObjectReleaseLock 的控制碼代表不支援同步處理鎖定的物件。 |
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。