为什么我的硬盘 LED 灯每秒闪烁一次?

为什么我的硬盘 LED 灯每秒闪烁一次?

灯光大约每秒闪烁一次。

它正在慢慢地让我发疯。

我如何找出导致此问题的原因并禁用它?

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 上发表了一篇评论:

http://www.amazon.co.uk/review/R3GZB5OXP4SNP7/ref=cm_cr_rdp_perm?ie=UTF8&ASIN=B009QZCYU4&linkCode=&nodeID=&tag=

真正让我烦恼的一件事(注意是过去时)是驱动器指示灯不断闪烁。这不是硬盘活动,几个小时后我找到了罪魁祸首。这是Broadcom 读卡器服务

他进一步建议将服务切换为手动,但在我的计算机上我必须完全禁用它。

因此,除了 HDD LED 闪烁之外,人们甚至报告了更高的资源使用率。

最终解决方案:禁用“Broadcom 读卡器服务:在服务中,转到其属性,停止它,并将其启动类型更改为“已禁用”。闪烁最终会停止。我真的很想知道它到底有什么用处——关闭它会让我错过什么?考虑到它的编程有多差,我不会感到惊讶,该服务的整个目的是在插入存储卡时更改某些图标!我确信误用 WMI 是糟糕的编程。

答案4

这是正常的。许多硬盘活动是由操作系统(Windows 等)生成的,您无法禁用这些活动。某些程序或其他程序总会进行硬盘活动,这只是计算机的本质。

如果活动指示灯让您感到不适,请禁用它,方法是用贴纸覆盖它,或者找到它所连接的主板上的接头并将其断开。它将被标记为 HD LED 或类似的东西。

相关内容