El verdadero culpable del parpadeo del LED HDD en mi computadora portátil Acer fue el servicio internamente llamado BrcmCardReader con el nombre largo de Broadcom Card Reader Service. Tan pronto como detuve el servicio, el parpadeo también se detuvo. Y, por supuesto, no tuve que desactivar el CD-ROM ni cubrir el LED con la cinta para lograrlo. Al contrario de lo que está escrito en las otras publicaciones aquí, el sistema operativo en sí no está tan mal escrito para sondear nada. Pero este servicio escrito por Broadcom es otra historia.
Primero traté de averiguar qué causa los parpadeos solo para descubrir que era algo así como wbem wmiprvse.exe que hacía cosas como IRP_MJ_QUERY_INFORMATION
y IRP_MJ_QUERY_VOLUME_INFORMATION
para cada unidad. Como sabía que wmiprvse es en realidad un componente de ejecución de WMI escrito por Microsoft, incluso intenté usar Event Log para rastrear la actividad de WMI, como se documenta en MSDN. No fue útil, solo pude observar
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 obviamente hace un mal trabajo en este seguimiento: el CIMWin32, la identificación del host, el guid del proveedor y la ruta apuntan al binario que ejecuta el WMI, no al programa que realiza consultas WMI. Entonces, en ese momento, no pude descubrir que el servicio Broadcom Card Reader lo hace porque nada lo señaló, por eso estoy citando todo esto para aliviar el dolor de cualquiera que ponga estos artículos en la máquina de búsqueda. Esta incapacidad para ver quién realmente dirige la actividad es también la explicación de por qué algunas personas aquí afirman que "es un sistema operativo": quien se detiene en este punto no ve nada más. Pero sabía que wmiprvse no lo estaba haciendo solo, sabía que debía haber algún otro proceso al mando.
Finalmente, un día después de hacer una copia de seguridad de la imagen de todo mi sistema, comencé con el enfoque de la fuerza bruta, apagando las cosas una por una, hasta que el parpadeo se detuvo. Entonces ahora estoy seguro. Es el servicio de lector de tarjetas Broadcom . Y como en realidad soy un programador, incluso he inspeccionado las cadenas dentro c:\Program Files\Broadcom\MemoryCard\BrcmCardReader.exe
y he encontrado lo que hace exactamente, tan pronto como se enciende:
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
Dado que el parpadeo ocurre tan regularmente, es obvio que está sondeando continuamente. Esa es una programación increíblemente mala del servicio. Observe la cláusula WITHIN en las consultas. Específicamente, Microsoft documenta cómo se comportan tales construcciones en el WMI:
http://technet.microsoft.com/en-us/magazine/2006.09.wmievents.aspx
Tenga en cuenta que la cláusula WITHIN especifica el intervalo de sondeo para las clases de eventos intrínsecos. Debido a que la clase que se está monitoreando no tiene un proveedor de eventos correspondiente, el mecanismo de sondeo WMI se usa para verificar periódicamente si ha ocurrido un evento intrínseco para la clase en particular. La palabra clave WITHIN especifica este intervalo de sondeo y se mide en segundos.
Así que ahora sé que los programadores de servicio Broadcom decidieron sondeo para el __InstanceDeletionEvent
de cada disco lógico cada segundo y de __InstanceCreationEvent
incluso 10 veces por segundo ! ¡Y logran involucrar COM, procesos separados y hacer esto a través de WMI / wmiprvse de una manera que no es observable (al menos no me he enterado) de que su servicio está haciendo esto!
Mala, increíblemente mala programación.
Y no hay solución adecuada para los servicios y aplicaciones: RegisterDeviceNotification
. Los servicios pueden recibir una notificación real (es decir, silenciosa cuando no sucede nada nuevo) a través del SERVICE_CONTROL_DEVICEEVENT
evento. Ver por ejemplo:
/programming/706352/use-registerdevicenotification-for-all-usb-devices
Después de saber todo esto, la búsqueda de Broadcom Card Reader Service en realidad devuelve algunas publicaciones de personas que lo descubrieron anteriormente: en community.acer.com (estoy citando las publicaciones para las que no he encontrado enlaces permanentes):
"Vladan Re: controlador del lector de tarjetas Aspire 5750Z, Win 8 29-11-2012 06:29 AM
Acabo de descubrir que el servicio Broadcom Card Reader está causando que el disco duro parpadee varias veces por segundo, todo el tiempo. Detener y configurar este servicio en manual o incluso deshabilitado soluciona el problema de parpadeo sin afectar la funcionalidad del lector de tarjetas ".
en bleepingcomputer.com:
"Cheesenbranston Publicado 28 de mayo de 2013 - 04:47 a.m.
He tenido un problema similar desde la instalación de Win8 pro x64 como una instalación nueva, es decir, no como una actualización. En el Administrador de tareas, aunque el rendimiento del disco no parecía particularmente alto, el uso era constante al 100%. Creo que identifiqué el problema como el servicio Broadcom Card Reader. "
y en Amazon.co.uk, una revisión de SJ Harvey el 1 de febrero de 2013:
http://www.amazon.co.uk/review/R3GZB5OXP4SNP7/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=B009QZCYU4&linkCode=&nodeID=&tag=
Lo único que REALMENTE me molestó (tenga en cuenta el tiempo pasado) es que la luz de la unidad parpadeaba constantemente. No era actividad de HDD y después de un par de horas rastreé al culpable. Era el servicio Broadcom Card-Reader .
Además sugiere cambiar el servicio a manual, aunque en mi computadora tuve que desactivarlo por completo.
Por lo tanto, las personas incluso informaron un mayor uso de recursos, aparte de solo el parpadeo del LED HDD.
La solución final: deshabilite el " Servicio de lector de tarjetas Broadcom " : en Servicios vaya a sus propiedades, deténgalo y cambie su tipo de inicio a "deshabilitado". El parpadeo finalmente se detendrá. De todos modos, me gustaría saber cuál es el propósito: ¿qué me estoy perdiendo apagándolo? Viendo cuán mal está programado, ¡no me sorprendería que todo el propósito del servicio sea cambiar algún ícono cuando se inserta la tarjeta de memoria! De lo que estoy seguro es que el mal uso del WMI es una programación realmente mala.