電腦出現藍屏DRIVER_POWER_STATE_FAILURE怎么修復
藍屏代碼0x0000009F代表"DRIVER_POWER_STATE_FAILURE",這意味著發生了一個驅動程序電源狀態失敗的錯誤。這種藍屏錯誤通常發生在計算機進入睡眠或休眠模式時,或者當系統試圖通過關閉、暫停、重新啟動或注銷來改變電源狀態時。
要解決這個問題,可以嘗試以下方法:
方法一:檢查電源設置
在控制面板中,打開“電源選項”,確保計算機的電源管理設置正確,嘗試調整睡眠和待機模式的設置,重新啟動計算機后觀察是否還會出現藍屏錯誤。
方法二:運行Windows內存診斷工具
運行Windows自帶的內存診斷工具,以確定是否存在內存問題,并進行必要的修復。
方法三:執行系統恢復
嘗試運行系統還原,將系統恢復到之前沒有發生錯誤的日期。
方法四:使用一鍵修復工具助手(強烈推薦)
1、首先你的電腦必須下載與完成安裝完成快快藍屏修復助手。如果你還沒有安裝點擊下方鏈接下載。
下載地址:>>>快快藍屏修復助手<<<
提示:安裝路徑不要選擇C盤,避免產生問題造成損失。
2、找到你電腦中的快快藍屏修復助手,點擊進入。看到首頁后,點擊首頁一鍵掃描按鈕開始掃描。等待幾分鐘,就能獲取你急切想要的結果。
3、掃描完成后會顯示電腦的所有藍屏記錄以及藍屏的詳細信息。
4、解決方案頁面顯示了導致該次藍屏的具體原因和解決方案,點擊右上角的一鍵修復進行修復。
5、切記,當修復完成之后我們還是需要重新啟動計算機的。畢竟一切修復的結果,需要重新后,才能被系統認可。
當你完成重啟后,你電腦的藍屏問題已經基本解決了。相信小編,不要急需卸載快快藍屏修復助手。畢竟它強大的功能是你未來的一個保障,可以隨時隨地為你服務,讓你再次遇到藍屏問題不在抓狂。
其他相關信息:
DRIVER_POWER_STATE_FAILURE bug 檢查 的值為 0x0000009F。 此 bug 檢查指示驅動程序處于不一致或無效的電源狀態。
DRIVER_POWER_STATE_FAILURE參數
參數 1 指示沖突的類型。
參數 1 | 參數 2 | 參數 3 | 參數 4 | 原因 |
---|---|---|---|---|
0x1 | 設備對象 | 預留 | 預留 | 正在釋放的設備對象仍具有尚未完成的未完成的電源請求。 |
0x2 | 目標設備的設備對象(如果可用) | 設備對象 | 驅動程序對象(如果可用) | 設備對象完成了系統電源狀態請求的 I/O 請求數據包 (IRP) ,但它未調用 PoStartNextPowerIrp。 |
0x3 | 物理設備對象 (堆棧的 PDO) | nt!_TRIAGE_9F_POWER. | 被阻止的 IRP | 設備對象阻止 IRP 的時間過長。 |
0x4 | 超時值(以秒為單位)。 | 當前持有即插即用 (PnP) 鎖的線程。 | Nt!TRIAGE_9F_PNP。 | 電源狀態轉換超時,等待與 PnP 子系統同步。 |
0x5 | 堆棧的物理設備對象 | POP_FX_DEVICE 對象 | 已保留 - 0 | 設備未能在所需時間內完成定向電源轉換。 |
0x6 | POP_FX_DEVICE 對象 | 指示這是定向關閉電源 (1) 還是 (0) 完成。 | 已保留 - 0 | 設備未成功完成其定向電源轉換回調。 |
0x500 | 保留 | 目標設備的設備對象(如果可用) | 設備對象 | 設備對象已完成系統電源狀態請求的 IRP,但它未調用 PoStartNextPowerIrp。 |
原因
有關可能原因的說明,請參閱參數部分中每個代碼的說明。 常見原因包括:
設備對象釋放,但未完成的電源請求未完成 電源狀態轉換超時 阻止 IRP 的設備對象 已完成 IRP,但未調用 PoStartNextPowerIrp解決方法
若要確定特定原因并創建代碼修補程序,需要具有編程經驗和對故障模塊源代碼的訪問權限。
當參數 1 等于 0x3 時調試 bug 檢查 0x9F
在內核調試器中,使用 !analyze -v 命令執行初始 bug 檢查分析。 詳細分析顯示 nt!TRIAGE_9F_POWER 結構,位于 Arg3 中。kd>!analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000003, A device object has been blocking an Irp for too long a time
Arg2: fffffa8007b13440, Physical Device Object of the stack
Arg3: fffff8000386c3d8, nt!_TRIAGE_9F_POWER on Win7 and higher, otherwise the Functional Device Object of the stack
Arg4: fffffa800ab61bd0, The blocked IRP
如果可以識別負責該錯誤的驅動程序,則其名稱將打印在藍屏上,并存儲在內存中 (PUNICODE_STRING) KiBugCheckDriver 的位置。 可以使用一個調試器命令 dx(顯示調試器對象模型表達式)來顯示此內容:dx KiBugCheckDriver
。
nt!TRIAGE_9F_POWER結構提供了其他 bug 檢查信息,這些信息可以幫助你確定此 bug 檢查的原因。 結構可以提供所有未完成電源 IRP 的列表、所有電源 IRP 工作線程的列表,以及指向延遲的系統輔助角色隊列的指針。
使用 dt (顯示類型) 命令并指定 nt!使用 Arg3 中的地址TRIAGE_9F_POWER結構。 0: kd> dt nt!_TRIAGE_9F_POWER fffff8000386c3d8
+0x000 Signature : 0x8000
+0x002 Revision : 1
+0x008 IrpList : 0xfffff800`01c78bd0 _LIST_ENTRY [ 0xfffffa80`09f43620 - 0xfffffa80`0ad00170 ]
+0x010 ThreadList : 0xfffff800`01c78520 _LIST_ENTRY [ 0xfffff880`009cdb98 - 0xfffff880`181f2b98 ]
+0x018 DelayedWorkQueue : 0xfffff800`01c6d2d8 _TRIAGE_EX_WORK_QUEUE
dt (顯示類型) 命令顯示結構。 可以使用各種調試器命令來跟蹤LIST_ENTRY字段,以檢查未完成的 IRP 和電源 IRP 工作線程的列表。
使用 !irp 命令檢查被阻止的 IRP。 此 IRP 的地址位于 Arg4 中。 0: kd> !irp fffffa800ab61bd0
Irp is active with 7 stacks 6 is current (= 0xfffffa800ab61e08)
No Mdl: No System Buffer: Thread 00000000: Irp stack trace.
cmd flg cl Device File Completion-Context
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-00000000
Args: 00000000 00000000 00000000 00000000
>[IRP_MJ_POWER(16), IRP_MN_SET_POWER(2)]
0 e1 fffffa800783f060 00000000 00000000-00000000 pending
\Driver\HidUsb
Args: 00016600 00000001 00000004 00000006
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-fffffa800ad00170
Args: 00000000 00000000 00000000 00000000
將 !devstack 命令與 Arg2 中的 PDO 地址一起使用,以顯示與故障驅動程序關聯的信息。
0: kd> !devstack fffffa8007b13440
!DevObj !DrvObj !DevExt ObjectName
fffffa800783f060 \Driver\HidUsb fffffa800783f1b0 InfoMask field not found for _OBJECT_HEADER at fffffa800783f030
> fffffa8007b13440 \Driver\usbhub fffffa8007b13590 Cannot read info offset from nt!ObpInfoMaskToOffset
!DevNode fffffa8007ac8a00 :
DeviceInst is "USB\VID_04D8&PID_0033\5&46fa7b7&0&1"
ServiceName is "HidUsb"
使用 !poaction 命令顯示處理電源操作和任何分配的電源 IRP 的線程。
3: kd> !poaction
PopAction: fffff801332f3fe0
State..........: 0 - Idle
Updates........: 0
Action.........: None
Lightest State.: Unspecified
Flags..........: 10000003 QueryApps|UIAllowed
Irp minor......: ??
System State...: Unspecified
Hiber Context..: 0000000000000000
Allocated power irps (PopIrpList - fffff801332f44f0)
IRP: ffffe0001d53d8f0 (wait-wake/S0), PDO: ffffe00013cae060
IRP: ffffe0001049a5d0 (wait-wake/S0), PDO: ffffe00012d42050
IRP: ffffe00013d07420 (set/D3,), PDO: ffffe00012daf840, CURRENT: ffffe00012dd5040
IRP: ffffe0001e5ac5d0 (wait-wake/S0), PDO: ffffe00013d33060
IRP: ffffe0001ed3e420 (wait-wake/S0), PDO: ffffe00013c96060
IRP: ffffe000195fe010 (wait-wake/S0), PDO: ffffe00012d32050
Irp worker threads (PopIrpThreadList - fffff801332f3100)
THREAD: ffffe0000ef5d040 (static)
THREAD: ffffe0000ef5e040 (static), IRP: ffffe00013d07420, DEVICE: ffffe00012dd5040
PopAction: fffff801332f3fe0
State..........: 0 - Idle
Updates........: 0
Action.........: None
Lightest State.: Unspecified
Flags..........: 10000003 QueryApps|UIAllowed
Irp minor......: ??
System State...: Unspecified
Hiber Context..: 0000000000000000
Allocated power irps (PopIrpList - fffff801332f44f0)
IRP: ffffe0001d53d8f0 (wait-wake/S0), PDO: ffffe00013cae060
IRP: ffffe0001049a5d0 (wait-wake/S0), PDO: ffffe00012d42050
IRP: ffffe00013d07420 (set/D3,), PDO: ffffe00012daf840, CURRENT: ffffe00012dd5040
IRP: ffffe0001e5ac5d0 (wait-wake/S0), PDO: ffffe00013d33060
IRP: ffffe0001ed3e420 (wait-wake/S0), PDO: ffffe00013c96060
IRP: ffffe000195fe010 (wait-wake/S0), PDO: ffffe00012d32050
Irp worker threads (PopIrpThreadList - fffff801332f3100)
THREAD: ffffe0000ef5d040 (static)
THREAD: ffffe0000ef5e040 (static), IRP: ffffe00013d07420, DEVICE: ffffe00012dd5040
如果使用 KMDF 驅動程序,請使用 Windows 驅動程序框架擴展 (!wdfkd) 收集其他信息。
使用 !wdfkd.wdflog 轉儲<驅動程序名稱>,查看 KMDF 是否正在等待你確認任何掛起的請求。
使用 !wdfkd.wdfdevicequeues<你的 WDFDEVICE> 檢查所有未完成的請求及其處于什么狀態。
使用 !stacks 擴展檢查每個線程的狀態,并查找可能阻礙電源狀態轉換的線程。
為了幫助你確定錯誤的原因,請考慮以下問題:
(PDO) 驅動程序 (Arg2) 的物理設備對象有哪些特征? 你能找到被阻止的線程嗎? 使用 !thread debugger 命令檢查線程時,線程由什么組成? 是否存在與阻止它的線程關聯的 IO? 堆棧上有哪些符號? 檢查受阻電源 IRP 時,你注意到了什么? 電源 IRP 的 PnP 次要函數代碼是什么?當參數 1 等于 0x4 時調試 bug 檢查 0x9F
在內核調試器中,使用 !analyze -v 命令執行初始 bug 檢查分析。 詳細分析顯示 nt!TRIAGE_9F_PNP 結構,位于參數 4 (arg4) 中。 kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time (usually 10 minutes).
Arguments:
Arg1: 00000004, The power transition timed out waiting to synchronize with the Pnp
subsystem.
Arg2: 00000258, Timeout in seconds.
Arg3: 84e01a70, The thread currently holding on to the Pnp lock.
Arg4: 82931b24, nt!TRIAGE_9F_PNP on Win7
nt!TRIAGE_9F_PNP 結構提供了其他 bug 檢查信息,這些信息可以幫助你確定錯誤的原因。 nt!TRIAGE_9F_PNP 結構提供指向結構的指針,該結構包含已調度 (但未完成) PnP IRP 的列表,并提供指向延遲的系統輔助角色隊列的指針。
使用 dt (顯示類型) 命令并指定 nt!TRIAGE_9F_PNP 結構和在 Arg4 中找到的地址。 kd> dt nt!TRIAGE_9F_PNP 82931b24
+0x000 Signature : 0x8001
+0x002 Revision : 1
+0x004 CompletionQueue : 0x82970e20 _TRIAGE_PNP_DEVICE_COMPLETION_QUEUE
+0x008 DelayedWorkQueue : 0x829455bc _TRIAGE_EX_WORK_QUEUE
dt (顯示類型) 命令顯示結構。 可以使用調試器命令按照LIST_ENTRY字段來檢查未完成的 PnP IRP 的列表。
為了幫助你確定錯誤的原因,請考慮以下問題:
是否有與線程關聯的 IRP?
CompletionQueue 中是否有 IO?
堆棧上有哪些符號?
請參閱上述參數0x3下所述的其他技術。
備注
如果你沒有能力使用上述技術來調試此問題,則可以使用一些基本的故障排除技術。
如果最近添加了新的設備驅動程序或系統服務,請嘗試刪除或更新它們。 嘗試確定系統中導致新 Bug 檢查代碼出現的原因。
查看設備管理器,查看是否有任何設備標有感嘆號 (!) 。 查看驅動程序屬性中顯示的事件日志,了解是否有任何故障驅動程序。 請嘗試更新相關驅動程序。
檢查事件查看器中的系統日志,以獲取可能有助于查明導致錯誤的設備或驅動程序的其他錯誤消息。 有關詳細信息,請參閱打開事件查看器。 在系統日志中查找與藍屏同時出現的嚴重錯誤。
若要嘗試找出原因,請使用控制面板、電源選項暫時禁用節電。 某些驅動程序問題與系統休眠的各種狀態以及電源的掛起和恢復有關。
如果最近向系統添加了硬件,請嘗試刪除或替換它。 或與制造商聯系,查看是否有可用的修補程序。
你可嘗試運行系統制造商提供的硬件診斷。
請與制造商核實是否有更新的系統 ACPI/BIOS 或其他固件可用。
另請參閱
使用 Windows 調試器 (WinDbg) 進行故障轉儲分析
使用 WinDbg 分析內核模式轉儲文件
Bug 檢查代碼參考