Il vero colpevole del lampeggiamento del LED HDD sul mio notebook Acer è stato il servizio internamente chiamato BrcmCardReader con il nome Broadcom Card Reader Service. Non appena ho interrotto il servizio, anche il lampeggiamento si è interrotto. E ovviamente non ho dovuto disabilitare il CD-ROM o coprire il LED con il nastro per raggiungere questo obiettivo. Contrariamente a quanto scritto negli altri post qui, il sistema operativo stesso non è scritto così male per sondare nulla. Ma questo servizio scritto da Broadcom è un'altra storia.
Ho prima provato a capire cosa causa i battiti di ciglia solo per scoprire che è stato qualcosa di simile a wbem wmiprvse.exe che ha fatto cose come IRP_MJ_QUERY_INFORMATION
e IRP_MJ_QUERY_VOLUME_INFORMATION
per ogni unità. Come sapevo che wmiprvse è in realtà un componente di esecuzione WMI scritto da Microsoft, ho persino provato a utilizzare il registro eventi per tracciare l'attività WMI, come documentato su MSDN. Non è stato utile, sono stato in grado di osservare solo
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
In questa traccia Microsoft ovviamente ha un lavoro scarso: CIMWin32, l'ID host, il guid provider e il percorso puntano tutti al binario che esegue il WMI, non al programma che esegue query WMI. Quindi in quel momento non sono stato in grado di scoprire che il servizio Broadcom Card Reader fa ciò che non è stato registrato da nulla, ecco perché sto citando tutto questo per alleviare il dolore per chiunque metta questi oggetti nel motore di ricerca. Questa incapacità di vedere chi comanda effettivamente l'attività è anche la spiegazione del perché alcune persone qui affermano che "è un sistema operativo:" chiunque si fermi a questo punto non vede nient'altro. Ma sapevo che wmiprvse non lo stava facendo da solo, sapevo che doveva esserci qualche altro processo dominante.
Quindi finalmente un giorno dopo aver fatto un backup dell'immagine di tutto il mio sistema, ho iniziato con l'approccio della forza bruta, spegnendo le cose una ad una, fino a quando il battito di ciglia si è fermato. Quindi ora sono sicuro. È il servizio Broadcom Card Reader . E poiché in realtà sono un programmatore, ho persino ispezionato le stringhe all'interno di c:\Program Files\Broadcom\MemoryCard\BrcmCardReader.exe
e ho trovato quello che fa esattamente, non appena è acceso:
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
Dal momento che il battito di ciglia si verifica così regolarmente, è ovvio che si esegue il polling continuo. Questa è una programmazione incredibilmente sbagliata del servizio. Osservare la clausola WITHIN nelle query. In particolare, Microsoft documenta come si comportano tali costrutti nel WMI:
http://technet.microsoft.com/en-us/magazine/2006.09.wmievents.aspx
Si noti che la clausola WITHIN specifica l'intervallo di polling per le classi di eventi intrinseche. Poiché la classe monitorata non ha un provider di eventi corrispondente, il meccanismo di polling WMI viene utilizzato per verificare periodicamente se si è verificato un evento intrinseco per la classe particolare. Questo intervallo di polling è specificato dalla parola chiave WITHIN e misurato in secondi.
Quindi ora so che i programmatori del servizio Broadcom hanno deciso di eseguire il polling __InstanceDeletionEvent
di ogni disco logico ogni secondo e __InstanceCreationEvent
anche di 10 volte al secondo ! E riescono a coinvolgere COM, processi separati e farlo su WMI / wmiprvse in un modo che non è osservabile (almeno non ho scoperto) che il loro servizio lo sta facendo!
Programmazione errata, incredibilmente negativa.
E non c'è soluzione adeguata per servizi e applicazioni: RegisterDeviceNotification
. Una notifica reale (ovvero, silenziosa quando non accade nulla di nuovo) può essere ricevuta dai servizi tramite l' SERVICE_CONTROL_DEVICEEVENT
evento. Vedi ad esempio:
/programming/706352/use-registerdevicenotification-for-all-usb-devices
Dopo aver saputo tutto ciò, la ricerca del servizio Broadcom Card Reader restituisce effettivamente alcuni post di persone che l'hanno scoperto in precedenza: su community.acer.com (sto citando i post per i quali non ho trovato permalink):
"Vladan Re: Aspire 5750Z driver del lettore di schede, Win 8 29-11-2012 06:29
Ho appena scoperto che il servizio Broadcom Card Reader causa l'hdd che ha portato a lampeggiare più volte al secondo, sempre. L'arresto e l'impostazione di questo servizio su manuale o addirittura disabilitato risolvono il problema del lampeggiamento senza alcun impatto sulla funzionalità del lettore di schede. "
su bleepingcomputer.com:
"Cheesenbranston, pubblicato il 28 maggio 2013 - 04:47
Ho avuto un problema simile dall'installazione di Win8 pro x64 come nuova installazione, cioè non come aggiornamento. In Task Manager sebbene il throughput del disco non sembrasse particolarmente elevato, l'utilizzo era costantemente al 100%. Credo di aver identificato il problema come il servizio Broadcom Card Reader. "
e su Amazon.co.uk, una recensione di SJ Harvey il 1 febbraio 2013:
http://www.amazon.co.uk/review/R3GZB5OXP4SNP7/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=B009QZCYU4&linkCode=&nodeID=&tag=
L'unica cosa che mi ha davvero infastidito (nota il passato) è che la luce del drive tremolava costantemente. Non era l'attività dell'HDD e dopo un paio d'ore ho rintracciato il colpevole. Era il servizio Broadcom Card-Reader .
Suggerisce inoltre di cambiare il servizio in manuale, ma sul mio computer ho dovuto disabilitarlo completamente.
Quindi le persone hanno persino segnalato un maggiore utilizzo delle risorse, a parte il solo lampeggiamento dei LED dell'HDD.
L'ultima soluzione: disabilitare il " Broadcom Card Reader Service " : in Servizi vai alle sue proprietà, fermalo e cambia il suo tipo di avvio in "disabilitato". Il lampeggiamento alla fine si fermerà. Mi piacerebbe davvero sapere qual è lo scopo di ciò - che cosa mi manca spegnendolo? Visto che è programmato male, non sarei sorpreso che lo scopo del servizio sia cambiare qualche icona quando la memory card è inserita! Quello che sono sicuro è che l'uso improprio del WMI è davvero una cattiva programmazione.