共用方式為


錯誤檢查0xA:IRQL_NOT_LESS_OR_EQUAL

IRQL_NOT_LESS_OR_EQUAL錯誤檢查的值為 0x0000000A。 此錯誤檢查表示Microsoft Windows 或內核模式驅動程式在引發的中斷要求層級 (IRQL) 時,於無效位址存取分頁記憶體。 原因通常是錯誤的指標或可分頁性問題。

重要

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

IRQL_NOT_LESS_OR_EQUAL參數

參數 描述
1 無法存取的虛擬記憶體位址。

使用此 位址上的 !pool 來查看其是否為分頁集區。 收集失敗相關信息的其他命令有 !pte!addressln(列出最接近符號)。
2 錯誤發生時 IRQL。


2 - IRQL 在錯誤發生時DISPATCH_LEVEL。
3 描述造成錯誤的作業的位欄位。 請注意,位 3 僅適用於支援此層級報告的晶片組。

位 0 值
0 - 讀取作業
1 - 寫入作業

位 3 值
0 - 不是執行作業
1 - 執行作業

位 0 和位 3 合併值
0x0 - 嘗試從參數 1 中的位址讀取錯誤
0x1 - 嘗試寫入參數 1 中的地址時發生錯誤
0x8 - 嘗試從參數 1 中的位址執行程式代碼時發生錯誤

此值是由下列原因所造成:
  • 在 DISPATCH_LEVEL 時,呼叫無法在DISPATCH_LEVEL呼叫的函式。
  • 忘記釋放微調鎖定。
  • 將程式代碼標示為可分頁時,它必須是不可分頁的。 例如,如果程式代碼取得微調鎖定,或在延後過程調用中呼叫 。
4 錯誤時的指令指標。

使用此位址上的 ln (列出最接近符號) 命令來查看函式的名稱。

原因

此錯誤檢查是由使用不當位址的核心模式設備驅動器所造成。

這個錯誤檢查表示嘗試在引發的中斷要求層級 (IRQL) 時存取無效的位址。 原因可能是記憶體指標錯誤或設備驅動器程式代碼的可分頁性問題。

您可以用來分類造成錯誤檢查之程式代碼錯誤類型的一般指導方針如下:

  • 如果參數 1 小於0x1000,問題可能是 NULL 指標取值。

  • 如果 !pool 報告參數 1 是分頁集 區(或其他類型的可分頁記憶體),則 IRQL 太高而無法存取此數據。 在較低的 IRQL 上執行,或在非分頁集區中配置數據。

  • 如果參數 3 表示錯誤檢查是嘗試執行可分頁程式代碼,則 IRQL 太高而無法呼叫此函式。 在較低的 IRQL 上執行,或不要將程式代碼標示為可分頁。

  • 這可能是使用後或位翻轉所造成的錯誤指標。 使用 !pte!addressln 調查參數 1 的有效性(列出最接近的符號)。

解決方法

如果核心調試程式可供使用,請取得堆疊追蹤。 從執行 !analyze 調試程序擴充功能開始,以顯示錯誤檢查的相關信息。 !analyze 擴充功能有助於判斷根本原因。 接下來,輸入其中 一個 k* (顯示堆疊回溯) 命令來檢視呼叫堆疊。

收集資訊

檢查驅動程式的名稱是否列在藍色畫面上。

檢查系統登入 事件檢視器 是否有其他錯誤訊息,這些錯誤訊息可能有助於找出造成錯誤的裝置或驅動程式。 在與藍色畫面相同的時間範圍內,尋找系統記錄檔中發生的嚴重錯誤。

驅動程式驗證器

驅動程式驗證器是一種工具,可即時執行以檢查驅動程序的行為。 例如,驅動程式驗證器會檢查記憶體資源的使用方式,例如記憶體集區。 如果它識別驅動程式程式代碼執行中的錯誤,它會主動建立例外狀況,以允許進一步審查該部分的驅動程序程序代碼。 驅動程式驗證器管理員內建於 Windows 中,可在所有 Windows 電腦上使用。

若要啟動驅動程式驗證器管理員,請在命令提示字元中輸入 驗證器 。 您可以設定要驗證的驅動程式。 驗證驅動程式的程式代碼會在執行時增加額外負荷,因此請嘗試盡可能驗證最少的驅動程式數目。 如需詳細資訊,請參閱驅動程式驗證器

下列程式代碼顯示偵錯範例:

kd> .bugcheck       [Lists bug check data.]
Bugcheck code 0000000a
Arguments 00000000 0000001c 00000000 00000000

kd> kb [Lists the stack trace.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> kv [Lists the trap frames.]
ChildEBP RetAddr  Args to Child
8013ed5c 801263ba 00000000 00000000 e12ab000 NT!_DbgBreakPoint (FPO: [0,0,0])
8013eecc 801389ee 0000000a 00000000 0000001c NT!_KeBugCheckEx+0x194
8013eecc 00000000 0000000a 00000000 0000001c NT!_KiTrap0E+0x256 (FPO: [0,0] TrapFrame @ 8013eee8)
8013ed5c 801263ba 00000000 00000000 e12ab000
8013ef64 00000246 fe551aa1 ff690268 00000002 NT!_KeBugCheckEx+0x194

kd> .trap 8013eee8 [Gets the registers for the trap frame at the time of the fault.]
eax=dec80201 ebx=ffdff420 ecx=8013c71c edx=000003f8 esi=00000000 edi=87038e10
eip=00000000 esp=8013ef5c ebp=8013ef64 iopl=0         nv up ei pl nz na pe nc
cs=0008  ss=0010  ds=0023  es=0023  fs=0030  gs=0000             efl=00010202
ErrCode = 00000000
00000000 ???????????????    [The current instruction pointer is NULL.]

kd> kb       [Gives the stack trace before the fault.]
ChildEBP RetAddr  Args to Child
8013ef68 fe551aa1 ff690268 00000002 fe5620d2 NT!_DbgBreakPoint
8013ef74 fe5620d2 fe5620da ff690268 80404690
NDIS!_EthFilterIndicateReceiveComplete+0x31
8013ef64 00000246 fe551aa1 ff690268 00000002 elnkii!_ElnkiiRcvInterruptDpc+0x1d0

備註

產生此錯誤的錯誤通常會在安裝錯誤的設備驅動器、系統服務或BIOS之後發生。

如果您在升級至較新版本的 Windows 時遇到錯誤檢查0xA,可能是由裝置驅動程式、系統服務、病毒掃描器或與新版本不相容的備份工具所造成。

解決故障的硬體問題: 如果最近已將硬體新增至系統,請將其移除,以查看錯誤是否遞歸。 如果現有的硬體失敗,請移除或取代故障的元件。 執行系統製造商所提供的硬體診斷。 如需這些程式的詳細資訊,請參閱計算機的擁有者手冊。

解決錯誤系統服務問題: 停用服務並確認是否這樣做可解決錯誤。 如果是,請連絡系統服務的製造商,以取得可能的更新。 如果在系統啟動期間發生錯誤,請調查 Windows 修復選項。 如需詳細資訊,請參閱 Windows 10 中的復原選項。

解決防病毒軟體問題: 停用程式並確認是否這樣做可解決錯誤。 如果是,請連絡計劃的製造商,以取得可能的更新。

如需疑難解答錯誤檢查的一般資訊,請參閱 分析錯誤檢查藍屏幕數據

另請參閱

錯誤檢查程式代碼參考