【问题标题】:Detect if hard disk is being accessed or not检测硬盘是否被访问
【发布时间】:2016-01-19 10:34:03
【问题描述】:

我正在尝试制作一个非常简单的硬盘访问监视器像那些根据驱动器使用情况闪烁的嵌入式 LED 一样工作。那个 LED 确实对我有帮助,但我使用的笔记本电脑没有它。 =[

所以,我做了一个简单的托盘图标应用程序,但我不知道如何确定磁盘访问的变量。

我已经搜索过它并找到了类似 System.Diagnostics.PerformanceCounter 的东西,但我不知道将它用于我的任务。

如果有其他解决方案,我也将不胜感激! =] 谢谢。

哦!我几乎忘记了,它需要检测对硬盘驱动器的任何和每次访问。我已经测试了一个应用程序(具有完全相同的假定功能),但经过一些测试,我很容易意识到它缺少一些访问,主要是当你执行一个新程序时。

【问题讨论】:

  • 您有具体问题吗?
  • 该 LED 对您有什么帮助,真的吗?您对哪个硬盘感兴趣?如果它是带有 O/S 的驱动器,那么您不妨在工具栏上粘贴一个绿色按钮,因为 O/S 驱动器几乎一直在使用中。为了更好地了解实际活动,我建议您尝试 Process Monitor 并查看文件访问选项卡。 technet.microsoft.com/en-us/sysinternals/bb896645
  • @Igor 它通过指示系统正在执行一些磁盘任务来帮助我。例如,当我需要更新或安装某些东西并且它似乎被冻结时,led 是最实用的指示这样的任何实际活动。

标签: c# hard-drive system.diagnostics led


【解决方案1】:

我找到了一个用 VB.NET 编写的硬盘活动监视器示例应用程序。它相当简单,因此您将其转换为 c# 应该没有问题。

这个想法是为“LogicalDisk”使用两个性能计数器,“Disk Read Bytes/sec”和“Disk Write Bytes/sec”

 ReadCounter = New PerformanceCounter("LogicalDisk", "Disk Read Bytes/sec", "_Total") 
 WriteCounter = New PerformanceCounter("LogicalDisk", "Disk Write Bytes/sec", "_Total") 

然后在您的主循环(需要线程化)中调用NextValue 以确定是否存在磁盘活动。

R = ReadCounter.NextValue 
W = WriteCounter.NextValue 

完整的源代码是微软网站上的here

【讨论】:

  • 太棒了!我改编并执行了 VB 和 C#.. 它们完美地同步闪烁。我只需要你的代码 sn-ps! =]
猜你喜欢
  • 2012-03-27
  • 2012-11-18
  • 1970-01-01
  • 2010-09-18
  • 2012-04-04
  • 2014-04-15
  • 1970-01-01
  • 2023-03-09
  • 2011-02-11
相关资源
最近更新 更多