Penyebab sesungguhnya dari HDD LED yang berkedip pada notebook Acer saya adalah layanan yang secara internal dinamai BrcmCardReader dengan nama panjang Broadcom Card Reader Service. Segera setelah saya menghentikan layanan, kedipan juga berhenti. Dan tentu saja saya tidak perlu menonaktifkan CD-ROM atau menutupi LED dengan kaset untuk mencapai ini. Bertentangan dengan apa yang tertulis di posting lain di sini, sistem operasi itu sendiri tidak begitu buruk ditulis untuk polling apa pun. Tetapi layanan ini ditulis oleh Broadcom adalah cerita lain.
Saya pertama kali mencoba untuk mencari tahu apa yang menyebabkan berkedip hanya untuk menemukan bahwa itu adalah sesuatu seperti wmem wmiprvse.exe yang melakukan hal-hal seperti IRP_MJ_QUERY_INFORMATION
dan IRP_MJ_QUERY_VOLUME_INFORMATION
untuk setiap drive. Seperti yang saya tahu bahwa wmiprvse sebenarnya adalah komponen eksekusi WMI yang ditulis oleh Microsoft, saya bahkan mencoba menggunakan Event Log untuk melacak aktivitas WMI, seperti yang didokumentasikan pada MSDN. Itu tidak berguna, saya hanya bisa mengamati
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 jelas melakukan pekerjaan yang buruk dalam penelusuran ini: CIMWin32, id host, panduan provider dan path semuanya mengarah ke biner yang menjalankan WMI, bukan ke program yang membuat kueri WMI. Jadi pada saat itu saya tidak dapat menemukan Layanan Pembaca Kartu Broadcom itu melakukannya karena tidak ada yang dicatat, itulah sebabnya saya mengutip semua ini untuk mengurangi rasa sakit bagi siapa saja yang meletakkan barang-barang ini di mesin pencari. Ketidakmampuan untuk melihat siapa yang sebenarnya memerintahkan kegiatan ini juga merupakan penjelasan mengapa beberapa orang di sini mengklaim bahwa "ini adalah sistem operasi:" siapa pun yang berhenti pada titik ini tidak melihat hal lain. Tetapi saya tahu bahwa wmiprvse tidak melakukannya sendiri, saya tahu pasti ada proses lain yang memerintah.
Jadi akhirnya satu hari setelah saya membuat cadangan gambar seluruh sistem saya, saya mulai dengan pendekatan brute force, mematikan semuanya satu per satu, hingga kedipan berhenti. Jadi sekarang saya yakin. Ini adalah Layanan Pembaca Kartu Broadcom . Dan ketika saya benar-benar seorang programmer, saya bahkan telah memeriksa string-string di dalamnya c:\Program Files\Broadcom\MemoryCard\BrcmCardReader.exe
dan saya telah menemukan apa tepatnya, segera setelah dihidupkan:
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
Karena kedipan mata terjadi secara teratur, jelaslah bahwa jajak pendapat ini dilakukan secara terus menerus. Itu pemrograman layanan yang luar biasa buruk. Perhatikan klausa WITHIN dalam kueri. Secara khusus, Microsoft mendokumentasikan bagaimana konstruksi tersebut berperilaku dalam WMI:
http://technet.microsoft.com/en-us/magazine/2006.09.wmievents.aspx
Perhatikan bahwa klausa WITHIN menentukan interval polling untuk kelas acara intrinsik. Karena kelas yang dipantau tidak memiliki penyedia acara yang sesuai, mekanisme pemungutan suara WMI digunakan untuk memeriksa secara berkala apakah suatu peristiwa intrinsik telah terjadi untuk kelas tertentu. Interval pemungutan suara ini ditentukan oleh kata kunci WITHIN dan diukur dalam detik.
Jadi sekarang saya tahu bahwa programmer layanan Broadcom memutuskan untuk jajak pendapat untuk __InstanceDeletionEvent
dari setiap disk logis setiap detik dan untuk __InstanceCreationEvent
bahkan 10 kali per detik ! Dan mereka berhasil melibatkan COM, proses terpisah dan melakukan ini melalui WMI / wmiprvse dengan cara yang tidak dapat diamati (setidaknya saya belum tahu) bahwa layanan mereka melakukan ini!
Buruk, pemrograman luar biasa buruk.
Dan ada solusi yang tepat untuk layanan dan aplikasi: RegisterDeviceNotification
. Sebuah nyata pemberitahuan (yaitu, tenang ketika tidak ada yang terjadi baru) dapat diterima oleh layanan melalui SERVICE_CONTROL_DEVICEEVENT
acara. Lihat misalnya:
/programming/706352/use-registerdevicenotification-for-all-us-usb-devices
Setelah mengetahui semua ini, pencarian untuk Layanan Pembaca Kartu Broadcom sebenarnya mengembalikan beberapa posting orang yang menemukannya sebelumnya: di community.acer.com (saya mengutip posting yang belum saya temukan tautan permanennya):
"Vladan Re: driver pembaca kartu Aspire 5750Z, Win 8 11-29-2012 06:29
Baru saja menemukan bahwa Layanan Pembaca Kartu Broadcom menyebabkan hdd menyebabkan berkedip beberapa kali per detik, setiap saat. Menghentikan dan mengatur layanan ini ke manual atau bahkan dinonaktifkan memperbaiki masalah yang berkedip tanpa berdampak pada fungsionalitas pembaca kartu. "
di bleepingcomputer.com:
"Cheesenbranston Diposting 28 Mei 2013 - 04:47
Saya memiliki masalah serupa sejak menginstal Win8 pro x64 sebagai instal baru yaitu bukan upgrade. Di Task Manager meskipun throughput disk tampaknya tidak terlalu tinggi penggunaannya selalu di 100%. Saya percaya saya telah mengidentifikasi masalah ini sebagai layanan Pembaca Kartu Broadcom. "
dan di Amazon.co.uk, ulasan oleh SJ Harvey pada 1 Feb 2013:
http://www.amazon.co.uk/review/R3GZB5OXP4SNP7/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=B009QZCYU4&linkCode=&nodeID=&tag=
Satu hal yang SANGAT menyadap saya (perhatikan past tense) adalah lampu drive berkedip terus-menerus. Itu bukan aktivitas HDD dan setelah beberapa jam saya melacak pelakunya. Itu adalah layanan Pembaca Kartu Broadcom .
Dia lebih lanjut menyarankan beralih layanan ke manual, di komputer saya, saya harus menonaktifkannya sepenuhnya.
Jadi orang-orang bahkan melaporkan penggunaan sumber daya yang lebih tinggi, selain dari hanya LED HDD yang berkedip.
Solusi terakhir: nonaktifkan " Layanan Pembaca Kartu Broadcom " : di Layanan buka propertinya, hentikan dan ubah jenis startupnya menjadi "nonaktif". Kedipan akhirnya akan berhenti. Saya benar-benar ingin tahu apa tujuannya - apa yang saya lewatkan dengan mematikannya? Melihat betapa buruknya programnya, saya tidak akan terkejut bahwa seluruh tujuan dari layanan ini adalah untuk mengubah beberapa ikon ketika kartu memori dimasukkan! Yang saya yakin adalah bahwa menyalahgunakan WMI adalah pemrograman yang benar-benar buruk.