检测硬盘是否被访问

Detect if hard disk is being accessed or not

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

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

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

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

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

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

想法是使用两个性能计数器,"Disk Read Bytes/sec" 和 "Disk Write Bytes/sec" 用于 "LogicalDisk"

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

然后在你的主循环(需要线程化)中你调用 NextValue 来确定是否有磁盘 activity.

R = ReadCounter.NextValue 
W = WriteCounter.NextValue 

完整的源代码在 Microsoft 的网站上 here