錯誤檢查0x1E:KMODE_EXCEPTION_NOT_HANDLED

KMODE_EXCEPTION_NOT_HANDLED錯誤檢查的值為 0x0000001E。 錯誤檢查指出核心模式程式產生錯誤處理程式未攔截的例外狀況。

重要

本文適用於程式設計人員。 如果您是 Microsoft 客戶,而您的電腦會顯示藍色畫面錯誤碼,請參閱 針對藍色畫面錯誤進行疑難解答

KMODE_EXCEPTION_NOT_HANDLED參數

參數 描述
1 未處理的例外狀況程序代碼。
2 發生例外狀況的位址。
3 例外狀況記錄的例外狀況信息參數 0。
4 例外狀況記錄的例外狀況信息參數 0。

原因

若要解譯這個錯誤檢查,您必須識別產生的例外狀況。

常見的例外狀況代碼包括:

  • 0x80000002:STATUS_DATATYPE_MISALIGNMENT

    遇到未對齊的數據參考。

  • 0x80000003:STATUS_BREAKPOINT

    當沒有核心調試程式附加至系統時,遇到斷點或ASSERT。

  • 0xC0000005:STATUS_ACCESS_VIOLATION

    發生記憶體存取違規。 (錯誤檢查的參數 4 是驅動程式嘗試存取的位址。)

如需例外狀況代碼的完整清單,請參閱 NTSTATUS值。 例外狀況代碼定義於 ntstatus.h 中,這是 Windows 驅動程式套件中的頭檔。 如需詳細資訊,請參閱 Windows 驅動程式套件中的頭檔

備註

如果您無法對此問題進行偵錯,您可以使用 藍色畫面數據中所述的一些基本疑難解答技術。 如果在錯誤檢查訊息中找出某個驅動程式,請停用驅動程式或洽詢製造商是否有驅動程式更新。

硬體不相容

確認已安裝的任何新硬體都與已安裝的 Windows 版本相容。 例如,您可以在 Windows 10 規格取得必要硬體的相關信息。

錯誤的設備驅動器或系統服務

錯誤的設備驅動器或系統服務可能會導致此錯誤。 硬體問題,例如 BIOS 不相容、記憶體衝突和 IRQ 衝突,也會產生此錯誤。

如果在錯誤檢查訊息中依名稱列出驅動程式,請停用或移除該驅動程式。 停用或移除最近新增的任何驅動程式或服務。 如果在啟動順序期間發生錯誤,且系統分割區格式化為NTFS檔案系統,您可能可以使用安全模式停用 裝置管理員中的驅動程式。

檢查系統登入 事件檢視器 是否有更多錯誤訊息,可協助您識別造成錯誤檢查的裝置或驅動程式0x1E。 同時執行系統製造商所提供的硬體診斷,特別是記憶體掃描器。 如需這些疑難解答步驟的詳細資訊,請參閱計算機的擁有者手冊。

在 Windows 安裝程式期間第一次重新啟動或安裝程式完成之後,可能會發生產生此訊息的錯誤。 錯誤的可能原因是系統 BIOS 不相容。 您可以升級系統 BIOS 版本來解決 BIOS 問題。

解決方案

當您對此問題進行偵錯時,可能會發現難以取得堆疊追蹤。 例外狀況位址 (參數 2) 應該識別造成問題的驅動程式或函式。

例外狀況程式代碼0x80000003表示已叫用硬式編碼斷點或判斷提示,但系統已從 /NODEBUG 參數啟動。 此問題應該很少發生。 如果重複發生,請確定核心調試程式已連線,且系統已啟動 /DEBUG 交換器。

如果發生例外狀況程式代碼0x80000002,陷阱畫面會提供詳細資訊。

未知的原因

如果例外狀況的特定原因不明,請考慮使用下列程式來取得堆棧追蹤。

注意

這個應用程式假設您可以找到 NT!PspUnhandledExceptionInSystemThread。 不過,在某些情況下,例如在存取違規損毀中,您將無法找到 NT!PspUnhandledExceptionInSystemThread。 在這裡情況下,請尋找 ntoskrnl!KiDispatchException。 傳遞至此函式的第三個參數是陷阱畫面位址。 使用 .trap (顯示陷阱框架) 命令搭配這個位址,將緩存器內容設定為正確的值。 然後,您可以執行堆疊追蹤併發出其他命令。

取得堆疊追蹤

如果一般堆疊追蹤程序失敗,若要取得堆疊追蹤:

  1. 使用 kb (顯示堆疊回溯) 命令,在堆疊追蹤中顯示參數。 尋找 對的 NT!PspUnhandledExceptionInSystemThread呼叫。 (如果未列出此函式,請參閱上述附注.)

  2. 的第一個參數 NT!PspUnhandledExceptionInSystemThread 是 結構的指標。 指標包含語句的 except 指標:

    typedef struct _EXCEPTION_POINTERS {
        PEXCEPTION_RECORD ExceptionRecord;
        PCONTEXT ContextRecord;
        } EXCEPTION_POINTERS, *PEXCEPTION_POINTERS;
    
    ULONG PspUnhandledExceptionInSystemThread(
        IN PEXCEPTION_POINTERS ExceptionPointers
        )
    

    使用該位址上的 dd (顯示記憶體) 命令,以顯示您需要的數據。

  3. 第一個擷取的值是例外狀況記錄。 針對例外狀況記錄,請使用 .exr (顯示例外狀況記錄) 命令。

    第二個值是內容記錄。 針對內容記錄,請使用 .cxr (顯示內容記錄) 命令。

  4. .cxr命令執行之後,使用 kb 命令來顯示以內容記錄資訊為基礎的堆疊追蹤。 此堆疊追蹤指出發生未處理例外狀況的呼叫堆疊。

範例錯誤檢查

下列範例顯示 x86 處理器上的錯誤檢查0x1E:

kd> .bugcheck                 get the bug check data
Bugcheck code 0000001e
Arguments c0000005 8013cd0a 00000000 0362cffff

kd> kb                        start with a stack trace 
FramePtr  RetAddr   Param1   Param2   Param3   Function Name 
8013ed5c  801263ba  00000000 00000000 fe40cb00 NT!_DbgBreakPoint 
8013eecc  8013313c  0000001e c0000005 8013cd0a NT!_KeBugCheckEx+0x194
fe40cad0  8013318e  fe40caf8 801359ff fe40cb00 NT!PspUnhandledExceptionInSystemThread+0x18
fe40cad8  801359ff  fe40cb00 00000000 fe40cb00 NT!PspSystemThreadStartup+0x4a
fe40cf7c  8013cb8e  fe43a44c ff6ce388 00000000 NT!_except_handler3+0x47
00000000  00000000  00000000 00000000 00000000 NT!KiThreadStartup+0xe

kd> dd fe40caf8 L2            dump EXCEPTION_POINTERS structure
0xFE40CAF8  fe40cd88 fe40cbc4                   ..@...@.

kd> .exr fe40cd88             first DWORD is the exception record
Exception Record @ FE40CD88:
   ExceptionCode: c0000005
  ExceptionFlags: 00000000
  Chained Record: 00000000
ExceptionAddress: 8013cd0a
NumberParameters: 00000002
   Parameter[0]: 00000000
   Parameter[1]: 0362cfff

kd> .cxr fe40cbc4             second DWORD is the context record
CtxFlags: 00010017
eax=00087000 ebx=00000000 ecx=03ff0000 edx=ff63d000 esi=0362cfff edi=036b3fff
eip=8013cd0a esp=fe40ce50 ebp=fe40cef8 iopl=0         nv dn ei pl nz ac po cy
vip=0    vif=0
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010617
0x8013cd0a  f3a4             rep movsb

kd> kb                        kb gives stack for context record
ChildEBP RetAddr  Args to Child
fe40ce54 80402e09 ff6c4000 ff63d000 03ff0000 NT!_RtlMoveMemory@12+0x3e
fe40ce68 80403c18 ffbc0c28 ff6ce008 ff6c4000 HAL!_HalpCopyBufferMap@20+0x49
fe40ce9c fe43b1e4 ff6cef90 ffbc0c28 ff6ce009 HAL!_IoFlushAdapterBuffers@24+0x148
fe40ceb8 fe4385b4 ff6ce388 6cd00800 ffbc0c28 QIC117!_kdi_FlushDMABuffers@20+0x28
fe40cef8 fe439894 ff6cd008 ffb6c820 fe40cf4c QIC117!_cqd_CmdReadWrite@8+0x26e
fe40cf18 fe437d92 ff6cd008 ffb6c820 ff6e4e50 QIC117!_cqd_DispatchFRB@8+0x210
fe40cf30 fe43a4f5 ff6cd008 ffb6c820 00000000 QIC117!_cqd_ProcessFRB@8+0x134
fe40cf4c 80133184 ff6ce388 00000000 00000000 QIC117!_kdi_ThreadRun@4+0xa9
fe40cf7c 8013cb8e fe43a44c ff6ce388 00000000 NT!_PspSystemThreadStartup@8+0x40