灯光大约每秒闪烁一次。
它正在慢慢地让我发疯。
我如何找出导致此问题的原因并禁用它?
Acer 5274 笔记本电脑/酷睿 i3
Windows 7 Home Premium
日立 HTS545050B9A300 硬盘
答案1
这可能是操作系统轮询光驱以查看您是否插入了任何东西 - 硬盘和光盘共用电路,因此 LED 可能适用于两者。您可以尝试关闭自动插入通知(设备管理器 - 查看光驱的属性)和自动运行。
这里有更多信息:.../cdtTipAutoRun.htm(已损坏,替换:http://web.archive.org/web/20100527203945/http://www.base40.com/cdtTipAutoRun.htm)
答案2
如果你想看看你的系统上发生了什么,有一个来自 sysinternals(他们制作了所有很酷的工具)的很酷的工具叫做进程它会告诉你所有正在发生的事情。你可能会惊讶地发现,当你没有进行任何操作时,竟然有这么多东西在运行。
我并不是说你能够阻止灯光时不时地闪烁,但至少你可以看到正在发生的事情。
答案3
我的 Acer 笔记本硬盘 LED 闪烁的真正罪魁祸首是内部名为Brcm卡读卡器名字很长Broadcom 读卡器服务。一旦我停止服务,闪烁也会停止。当然,我不必禁用 CD-ROM 或用胶带盖住 LED 来实现这一点。与此处其他帖子中写的内容相反,操作系统本身的编写并不差,无法轮询任何东西。但 Broadcom 编写的这项服务则是另一回事。
我首先试图找出导致闪烁的原因,结果发现是 wbem wmiprvse.exe 之类的程序对每个驱动器执行了IRP_MJ_QUERY_INFORMATION
和之类的操作IRP_MJ_QUERY_VOLUME_INFORMATION
。由于我知道 wmiprvse 实际上是 Microsoft 编写的 WMI 执行组件,我甚至尝试使用事件日志来跟踪 WMI 活动,如 MSDN 上所述。这没用,我只能观察到
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
微软显然在这个跟踪方面做得很差:CIMWin32、主机 ID、提供程序 GUID 和路径都指向执行 WMI 的二进制文件,而不是执行 WMI 查询的程序。所以当时我无法发现Broadcom 读卡器服务这样做是因为没有任何日志指向它,这就是我引用所有这些内容的原因,以便减轻任何将这些项目放入搜索引擎的人的痛苦。无法看到谁真正指挥了这项活动,这也是为什么有些人声称“这是一个操作系统”的原因:无论谁在这一点上停下来,都不会看到其他任何东西。但我知道 wmiprvse 不是在自己做这件事,我知道一定有其他进程在指挥。
所以,终于有一天,在我备份了整个系统后,我开始使用强力方法,逐个关闭所有东西,直到闪烁停止。所以现在我确定了。Broadcom 读卡器服务。而且由于我实际上是一名程序员,我甚至检查了里面的字符串c:\Program Files\Broadcom\MemoryCard\BrcmCardReader.exe
,并且发现了它一旦打开就会做什么:
SELECT * FROM __InstanceDeletionEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
SELECT * FROM __InstanceCreationEvent WITHIN 0.1 WHERE TargetInstance ISA 'Win32_LogicalDisk'
由于眨眼如此有规律,显然轮询持续不断。这是令人难以置信的糟糕服务编程。观察之内查询中的子句。具体来说,Microsoft 记录了此类构造在 WMI 中的行为方式:
http://technet.microsoft.com/en-us/magazine/2006.09.wmievents.aspx
请注意,WITHIN 子句指定了内部事件类的轮询间隔。由于被监视的类没有相应的事件提供程序,因此使用 WMI 轮询机制定期检查特定类是否发生了内部事件。此轮询间隔由 WITHIN 关键字指定,以秒为单位。
所以我现在知道 Broadcom 服务程序员决定__InstanceDeletionEvent
轮询每个逻辑磁盘 每一秒甚至__InstanceCreationEvent
每秒 10 次!他们设法让 COM 参与进来,分离进程,并通过 WMI/wmiprvse 以一种不可观察的方式完成这些工作(至少我还没有发现),他们的服务正在这样做!
糟糕,极其糟糕的编程。
并且有适合服务和应用程序的解决方案:RegisterDeviceNotification
。真实的服务可以通过事件接收通知(即,当没有新事件发生时处于静默状态)SERVICE_CONTROL_DEVICEEVENT
。例如:
https://stackoverflow.com/questions/706352/use-registerdevicenotification-for-all-usb-devices
在了解了这一切之后,寻找Broadcom 读卡器服务实际上返回了一些较早发现它的人的帖子:在 community.acer.com 上(我引用了那些我没有找到永久链接的帖子):
“Vladan 回复:Aspire 5750Z 读卡器驱动程序,Win 8 11-29-2012 06:29 AM
刚刚发现Broadcom 读卡器服务导致硬盘指示灯每秒闪烁多次,一直如此。停止并将此服务设置为手动或甚至禁用可解决闪烁问题,且不会影响读卡器功能。”
在 bleepingcomputer.com 上:
“Cheesenbranston 发表于 2013 年 5 月 28 日 - 上午 4:47
自从安装 Win8 pro x64 作为全新安装(即不是升级)以来,我遇到了类似的问题。在任务管理器中,虽然磁盘吞吐量似乎不是特别高,但使用率始终保持在 100%。我相信我已经确定问题是Broadcom 读卡器服务。“
2013 年 2 月 1 日,SJ Harvey 在 Amazon.co.uk 上发表了一篇评论:
真正让我烦恼的一件事(注意是过去时)是驱动器指示灯不断闪烁。这不是硬盘活动,几个小时后我找到了罪魁祸首。这是Broadcom 读卡器服务。
他进一步建议将服务切换为手动,但在我的计算机上我必须完全禁用它。
因此,除了 HDD LED 闪烁之外,人们甚至报告了更高的资源使用率。
最终解决方案:禁用“Broadcom 读卡器服务“:在服务中,转到其属性,停止它,并将其启动类型更改为“已禁用”。闪烁最终会停止。我真的很想知道它到底有什么用处——关闭它会让我错过什么?考虑到它的编程有多差,我不会感到惊讶,该服务的整个目的是在插入存储卡时更改某些图标!我确信误用 WMI 是糟糕的编程。
答案4
这是正常的。许多硬盘活动是由操作系统(Windows 等)生成的,您无法禁用这些活动。某些程序或其他程序总会进行硬盘活动,这只是计算机的本质。
如果活动指示灯让您感到不适,请禁用它,方法是用贴纸覆盖它,或者找到它所连接的主板上的接头并将其断开。它将被标记为 HD LED 或类似的东西。