Rich (BB code):
DRIVER_POWER_STATE_FAILURE (9f)
A driver has failed to complete a power IRP within a specific time.
Arguments:
Arg1: 0000000000000004, The power transition timed out waiting to synchronize with the Pnp
subsystem.
Arg2: 000000000000012c, Timeout in seconds.
Arg3: ffffca05941eb040, The thread currently holding on to the Pnp lock.
Arg4: ffffdb8899daf690, nt!TRIAGE_9F_PNP on Win7 and higher
Hata koduna dikkat etmemiştim, şuna bak; isteminin güç geçişini PnP Yöneticisi ile senkronize edemiyor. Yani, PnP (Tak - Çıkar ve bu durumda telefona işaret ediyor.) cihazlarının kaldırılması için genel bir durum çünkü cihazın kaldırılmasından sonra cihaz nesnesinin sistemden kaldırıldığını göstermek için Device Tree'i güncellemesi gerekiyor. Lakin bu durumda yapmıyor ya da yapsa bile bunu bir zaman aşımına uğratıyor. Uğrattığı zaman aşımı da tam olarak
Rich (BB code):
12: kd> .formats 12c
Evaluate expression:
Hex: 00000000`0000012c
Decimal: 300
Decimal (unsigned) : 300
300 saniye gibi bir süre.
Bunu tam olarak yığıtlardan da doğrulayabiliyoruz,
Rich (BB code):
12: kd> k
Child-SP RetAddr Call Site
ffffdb88`9d477240 fffff807`80760a80 nt!KiSwapContext+0x76 // Bağlam değişiminde sistem çöküyor
ffffdb88`9d477380 fffff807`806e0171 nt!KiSwapThread+0x6a0
ffffdb88`9d477450 fffff807`806deff3 nt!KiCommitThreadWait+0x271
ffffdb88`9d4774f0 fffff807`80c30cbd nt!KeWaitForSingleObject+0x773
ffffdb88`9d4775e0 fffff807`80da77c6 nt!IopSynchronousCall+0x119
ffffdb88`9d477650 fffff807`80da713f nt!IopRemoveDevice+0xe2 // Aygıtın IRP yapıları temizleniyor
ffffdb88`9d477700 fffff807`80e7eb46 nt!PnpSurpriseRemoveLockedDeviceNode+0xdb // PnP birimi belirtilen cihaz için bir suprise remove uyguluyor ? - Bu noktada cihazın aniden sistemden çıkarılmış gibi bir tepki verdiğini söyleyebilirim
ffffdb88`9d477840 fffff807`80e3543f nt!PnpProcessQueryRemoveAndEject+0x4c1
ffffdb88`9d477920 fffff807`80d6a3ee nt!PnpProcessTargetDeviceEvent+0xe7 // Spesifik bir PnP aygıtıyla ilişik içine giriyor
ffffdb88`9d477950 fffff807`8073099c nt!PnpDeviceEventWorker+0x28e // PnP aygıt yönetici başlıyor
ffffdb88`9d4779d0 fffff807`808a2d1a nt!ExpWorkerThread+0x5ec
ffffdb88`9d477bb0 fffff807`80aa6164 nt!PspSystemThreadStartup+0x5a // Sistem başlıyor
ffffdb88`9d477c00 00000000`00000000 nt!KiStartSystemThread+0x34
Durumun da ilgili sürücünün ya da bağlı olduğu cihazın bir suprise remove mevzusuna dahil olmasıyla ortaya çıktığı belli bariz. Bunu doğrulayabilmek için bir cihaz nesnesi bulamasam da IoP yapısından ilgili IRP'yi çıkarmayı başardım:
Rich (BB code):
12: kd> !irp ffffca05940986e0
Irp is active with 14 stacks 14 is current (= 0xffffca0594098b58)
No Mdl: No System Buffer: Thread ffffca05941eb040: Irp stack trace.
cmd flg cl Device File Completion-Context
>[IRP_MJ_PNP(1b), IRP_MN_SURPRISE_REMOVAL(17)]
0 1 ffffca0583c41a40 00000000 00000000-00000000 pending
\Driver\qcusbser
Args: 00000000 00000000 00000000 00000000
Burdaki bir ihtimal de PnP IRP için herhangi bir işleyici rutini olmaması diye düşünüyorum zira bence bu Sürücü bu G/Ç talebini ele almayı bilmiyor ve bu da mavi ekrana yol açıyor. Buradaki SR IRP'si, kullanıcı tarafından herhangi bir zamanda beklenmedik bir şekilde çıkarılabilen veya takılabilen PnP aygıtları için tasarlanmış bir IRP. Örneğin yukarıda da bahsettiğim gibi bir USB klavye ya da fareyi ele alırsak, klavyemi aniden çıkarabilirim, ancak sistemim hala çalışırken ekran kartımı çıkarmam pek olası değil.
Zaten bu dosyada da hata veren sürücü QUALCOMM Incorporated USB Modem/Serial Device sürücüsü olarak geçiyor. Yani bahsettiğimiz olayla direkt ilişkili bir sürücü = Telefonu bağlamak. Muhtemelen de bilgisayar açılırken telefonun USB güç yönetiminde olan bir sorundan kaynaklanıyor. Her zaman olur mu sanmam. Belki de USB kablosunda temazsızlık vardır diye bir yorum yapabilirim ancak.