DRIVER_POWER_STATE_FAILURE (9f) hatası genellikle bir Power IRP'sinin cihaz yığını(
Device Stack) içinde bir yerde
bloklanmasından kaynaklanıyor. Power IRP'ler Power Manager veya Power Policy Device Manager tarafından gönderilen IRP'lerdir. Bu,
PoRequestPowerIrp fonksiyonu tarafından gerçekleştiriliyor. Power IRP'ler birçok şeyle alakalı ve birçok şeyi ele almak için kullanılabilir aslında ancak bu hatanın konusu dahilinde söylemek gerekirse, Power IRP'lerin ana amacının uykudan veya uykudan güç geçişlerini ele almak olması olduğunu söyleyebiliriz.
Bu hata kontrolü ve bu kodlarla alakalı olarak 1.5 yıl önce yazdığım basit rehbere bakabilirsin :
Rehber: Minidump dosya analizi
Rich (BB code):
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: ffffe00818608de0, Physical Device Object of the stack
Arg3: ffff950cbc08f010, nt!TRIAGE_9F_POWER on Win7 and higher, otherwise the Functional Device Object of the stack
Arg4: ffffe0082488d010, The blocked IRP
En önemli iki parametre özellikle renklendirdiğim ikinci ve dördüncü parametrelerdir. Dördüncü olan bloklanan IRP'nin adresini, ikinci olan ise IRP'nin engellendiği yığın konumunun PDO adresini içeriyor.
Rich (BB code):
3: kd> !irp ffffe0082488d010
Irp is active with 15 stacks 13 is current (= 0xffffe0082488d440)
No Mdl: No System Buffer: Thread 00000000: Irp stack trace.
cmd flg cl Device File Completion-Context
>[IRP_MJ_POWER(16), IRP_MN_SET_POWER(2)]
0 e1 ffffe00813860df0 00000000 00000000-00000000 pending
\Driver\ACPI
Args: 00000000 00000001 00000001 00000000
[IRP_MJ_POWER(16), IRP_MN_SET_POWER(2)]
0 e1 ffffe0081884b7f0 00000000 fffff801d719c860-ffffe00823851ae0 Success Error Cancel pending
\Driver\usbccgp nt!PopRequestCompletion
Args: 00000000 00000001 00000001 00000000
[N/A(0), N/A(0)]
0 0 00000000 00000000 00000000-ffffe00823851ae0
Args: 00000000 00000000 00000000 00000000
Bu noktada Her IRP'nin bir
Major Function kodu ve bir
Minor Function Kodu vardır, aldığın hatada en çok karşılaştığımız IRP [16,2]'dir, burada 0x16 Major Function (IRP_MJ_POWER) ve 0x2 Minor Function'ları temsil ediyorlar (IRP_MN_SET_POWER). 0x16 IRP'nin aslında bir Power IRP'si olduğunu, 0x2 ise Power IRP'nin özel amacının sistemdeki bir güç durumu değişikliğini sürücüye bildirmek olduğunu gösteriyor... (Uykudan uyanma, bilgisayarın açılması, uykuya alma, hazırda bekletme...)
Rich (BB code):
3: kd> !devstack ffffe00818608de0
!DevObj !DrvObj !DevExt ObjectName
> ffffe00818608de0 \Driver\BTHUSB ffffe008189e9e60 InfoMask field not found for _OBJECT_HEADER at ffffe00818608db0
ffffe008189ec030 Unable to load image mtkbtfilterx.sys, Win32 error 0n2
*** WARNING: Unable to verify timestamp for mtkbtfilterx.sys
\Driver\MTKBTFilterx64ffffe008189ec180 InfoMask field not found for _OBJECT_HEADER at ffffe008189ec000
ffffe00818850120 \Driver\usbccgp ffffe00818850270 InfoMask field not found for _OBJECT_HEADER at ffffe008188500f0
!DevNode ffffe00813f273f0 :
DeviceInst is "USB\VID_13D3&PID_3596&MI_00\9&3ad53234&0&0000"
ServiceName is "BTHUSB"
Güç IRP'leri, tipik olarak bu tür IRP'leri işleyebilen tek sürücü türü olan bir veri yolu sürücüsüne ulaşana kadar aygıt yığını boyunca filtreleniyorlar. Belirli bir fiziksel aygıt nesnesi (Device Object) için aygıt yığınını !devstack (2.parametre için) kullanarak görüntüleyebiliyoruz.
Ve ayrıca, Power IRP, Power IRP'yi işleyebilen tek sürücü olma eğiliminde olan ve bu nedenle çökme için suçlanan sürücü olma eğiliminde olan veri yolu sürücüsüne ulaşana kadar bu yığından geçiyor ve sonuç olarak ilgili sürücüye ulaşıyor. Her sürücü için özel olmadığı durumlar da olabilir.
Bu device stack belirtilen sürücüye aittir. Sürücümüz de
MTKBTFilterx, yani MediaTek Bluetooth adaptör sürücüsü olarak gözüküyor. DeviceNode ile görüntülediğimiz kimlik, kendisine ait Device Stack ile ilgili olmak zorundadır.
Rich (BB code):
3: kd> !Devnode ffffe00813f273f0
DevNode 0xffffe00813f273f0 for PDO 0xffffe00818850120
Parent 0xffffe00813f31060 Sibling 0000000000 Child 0xffffe008188119a0
InterfaceType 0 Bus Number 0
InstancePath is "USB\VID_13D3&PID_3596&MI_00\9&3ad53234&0&0000"
ServiceName is "BTHUSB"
State = Unknown State (0x0)
Previous State = Unknown State (0x0)
Flags (0000000000)
Rich (BB code):
3: kd> !devobj ffffe00818850120
Device object (ffffe00818850120) is for:
InfoMask field not found for _OBJECT_HEADER at ffffe008188500f0
\Driver\usbccgp DriverObject ffffe008135554a0
Current Irp 00000000 RefCount 17 Type 00000022 Flags 00003040
SecurityDescriptor ffff9607b1a41b20 DevExt ffffe00818850270 DevObjExt ffffe008188507e0 DevNode ffffe00813f273f0
ExtensionFlags (0x00000800) DOE_DEFAULT_SD_PRESENT
Characteristics (0x00000180) FILE_AUTOGENERATED_DEVICE_NAME, FILE_DEVICE_SECURE_OPEN
AttachedDevice (Upper) ffffe008189ec030 \Driver\MTKBTFilterx64
Device queue is not busy.
Bu dosyada görebildiğim kadarıyla sürücüsü Haziran 2024'e ait. Bu sürücü sürüm tarihi ile sürücünün çıktığı tarihlerde
dahili ve harici 2 tarih olabildiği için karışıklık çıkabiliyor.
Rich (BB code):
3: kd> lmvmmtkbtfilterx
Browse full module list
start end module name
fffff801`6c2d0000 fffff801`6c351000 mtkbtfilterx T (no symbols)
Loaded symbol image file: mtkbtfilterx.sys
Image path: mtkbtfilterx.sys
Image name: mtkbtfilterx.sys
Browse all global symbols functions data
Timestamp: Sat Jun 29 18:21:15 2024 (6680266B)
CheckSum: 0008ECE9
ImageSize: 00081000
Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
Information from resource tables:
28 haziran veya 22 ekim sürücülerinden birinde olduğunu varsayaraktan, daha güncel bir sürücü kurmanı önerebilirim.