Acer dizüstü bilgisayarımda yanıp sönen HDD LED'inin gerçek suçlusu, dahili adı BrcmCardReader olan ve uzun adı Broadcom Kart Okuyucu Hizmeti olan hizmetti . Hizmeti durdurur durdurmaz yanıp sönme de durdu. Ve elbette bunu başarmak için CD-ROM'u devre dışı bırakmak veya LED'i bantla kapatmak zorunda kalmadım. Buradaki diğer gönderilerde yazılanların aksine, işletim sisteminin kendisi hiçbir şeyi yoklamak için o kadar kötü yazılmamıştır. Ancak Broadcom tarafından yazılan bu hizmet başka bir hikaye.
Önce sadece yanıp söner gibi wbem wmiprvse.exe gibi şeyler IRP_MJ_QUERY_INFORMATIONve IRP_MJ_QUERY_VOLUME_INFORMATIONher sürücü için bir şey olduğunu bulmak için nedenleri anlamaya çalıştım . Wmiprvse aslında Microsoft tarafından yazılmış bir WMI yürütme bileşeni olduğunu bildiğim gibi MSDN'de belgelendiği gibi, WMI etkinliğini izlemek için Olay Günlüğü'nü bile denedim. Yararlı değildi, sadece gözlemleyebildim
ProviderInfo for GroupOperationId = 101; Operation = Provider::CreateInstanceEnum - CIMWin32 : Win32_LogicalDisk; HostID = 2368; ProviderName = CIMWin32; ProviderGuid = {d63a5850-8f16-11cf-9f47-00aa00bf345c}; Path = %systemroot%\system32\wbem\cimwin32.dll
Microsoft bu izlemede kötü bir iş çıkarıyor: CIMWin32, ana bilgisayar kimliği, sağlayıcı kılavuzu ve yol, WMI sorguları yapan programa değil, WMI yürüten ikili dosyaya işaret ediyor. Yani o anda Broadcom Kart Okuyucu Hizmeti'nin günlüğe kaydedilen hiçbir şey yapmadığını fark edemedim , bu yüzden bu öğeleri arama makinesine koyan herkes için acıyı hafifletmek için tüm bu teklifleri veriyorum. Bu aktiviteye kimin gerçekten emir verdiğini görememe de, buradaki bazı insanların neden "bu bir işletim sistemi" olduğunu iddia ettiklerinin açıklamasıdır: bu noktada kim durursa başka hiçbir şey görmez. Ama wmiprvse'in kendi başına yapmadığını biliyordum, başka bir işlem komutunun olması gerektiğini biliyordum.
Sonunda tüm sistemimin bir imaj yedeklemesini yaptıktan bir gün sonra, kaba kuvvet yaklaşımı ile başladım, yanıp sönme durana kadar şeyleri tek tek kapattım. Şimdi eminim. Öyle Broadcom Kart Okuyucu Servisi . Ve aslında bir programcı olduğum için, içindeki dizeleri bile inceledim ve c:\Program Files\Broadcom\MemoryCard\BrcmCardReader.exeaçıldığı anda tam olarak ne yaptığını buldum:
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
Yanıp sönme çok düzenli olduğu için sürekli yokladığı açıktır . Hizmetin inanılmaz derecede kötü programlanması. Gözlemleyin İÇİNDE sorgularda maddesi. Özellikle, Microsoft bu tür yapıların WMI'da nasıl davrandığını belgelemektedir:
http://technet.microsoft.com/en-us/magazine/2006.09.wmievents.aspx
WITHIN deyimi, iç olay sınıfları için yoklama aralığını belirtir. İzlenen sınıfın karşılık gelen bir olay sağlayıcısı olmadığından, WMI yoklama mekanizması belirli bir sınıf için gerçek bir olayın meydana gelip gelmediğini düzenli olarak kontrol etmek için kullanılır. Bu yoklama aralığı WITHIN anahtar sözcüğü ile belirtilir ve saniye cinsinden ölçülür.
Şimdi Broadcom hizmet programcılar için anket karar verdiğini biliyoruz Yani __InstanceDeletionEventbir her mantıksal disk her saniye ve için __InstanceCreationEventbile saniyede 10 kez ! Ve COM, ayrı süreçleri dahil ve bunu WMI / wmiprvse üzerinden hizmetlerinin bunu yapıyor gözlemlenebilir (en azından ben bulamadım) bir şekilde yapmayı başarıyorlar!
Kötü, inanılmaz kötü programlama.
Ve hizmet ve uygulamalar için uygun bir çözüm var: RegisterDeviceNotification. Bir gerçek bildirim yoluyla servisleri tarafından alınabilir (yeni bir şey oluyor, orada sessiz olması) SERVICE_CONTROL_DEVICEEVENTdurumunda. Örneğin bakınız:
/programming/706352/use-registerdevicenotification-for-all-usb-devices
Tüm bunları bildikten sonra, Broadcom Kart Okuyucu Hizmeti için arama daha önce keşfetmiş olan insanların birkaç gönderisini döndürür: community.acer.com'da (kalıcı bağlantılar bulamadığım gönderilerden alıntı yapıyorum):
"Vladan Re: Aspire 5750Z kart okuyucu sürücüsü, Win 8 11-29-2012 06:29
Broadcom Kart Okuyucu Hizmetinin hdd'nin saniyede birden çok kez yanıp sönmesine neden olduğunu keşfetti . Bu hizmeti durdurmak ve manuel veya hatta devre dışı olarak ayarlamak kart okuyucu işlevselliğini etkilemeden yanıp sönen sorunu giderir. "
bleepingcomputer.com adresinde:
"Cheesenbranston Yayınlanan 28 Mayıs 2013 - 04:47
Win8 pro x64'ü yeni bir kurulum olarak yüklerken benzer bir sorun yaşadım, yani yükseltme değil. Görev Yöneticisi'nde disk verimi özellikle yüksek görünmese de sürekli kullanım% 100'dü. Sorunu Broadcom Kart Okuyucu hizmeti olarak tanımladığımı düşünüyorum . "
ve Amazon.co.uk tarafından 1 Şubat 2013 tarihinde SJ Harvey tarafından yapılan bir inceleme:
http://www.amazon.co.uk/review/R3GZB5OXP4SNP7/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=B009QZCYU4&linkCode=&nodeID=&tag=
GERÇEKTEN beni rahatsız eden tek şey (geçmiş zamana dikkat edin), sürücü ışığının sürekli titremesidir. HDD faaliyeti değildi ve birkaç saat sonra suçluyu takip ettim. Öyleydi Broadcom Kart Okuyucu servisi .
Ayrıca hizmeti manuel olarak değiştirmeyi önerir, bilgisayarımda tamamen devre dışı bırakmak zorunda kaldım.
Böylece insanlar sadece HDD LED'inin yanıp sönmesi dışında daha yüksek kaynak kullanımı bildirdiler.
Son çözüm: " Broadcom Kart Okuyucu Hizmeti " ni devre dışı bırakın: Hizmetler'de özelliklerine gidin, durdurun ve başlangıç türünü "devre dışı" olarak değiştirin. Yanıp sönme sonunda duracaktır. Zaten bunun amacının ne olduğunu bilmek istiyorum - kapatarak neyi kaçırdım? Ne kadar kötü programlandığını görünce, hizmetin tüm amacının hafıza kartı takıldığında bazı simgeleri değiştirmek olduğuna şaşırmam! Emin olduğum şey, WMI'nin yanlış kullanılmasının gerçekten kötü bir programlama olduğudur.