Windows存储将数据量读取写入硬盘驱动器

问题描述:

我想开发一个跟踪写入硬盘驱动器的数据量的程序。我搜索了互联网,但没有找到必要的API调用。 但是他们必须存在,因为我发现了一个商业程序(www.hddled.com),它正是我想要达到的目标,它甚至显示了在Windows启动后启动时读取/写入的数据量。因此,我强烈地认为Windows会自己跟踪这个数字吗?Windows存储将数据量读取写入硬盘驱动器

通常,这种信息可通过Windows Performance Counters获得。特别是,磁盘子系统将发布(某处)读取和写入每个磁盘设备的字节数。准备好进行一些挖掘以准确找到您要查找的信息。

物理上?可能在文件文件描述符表中。

经过一些在互联网上进一步挖掘,我发现了一个完美的解决方案。它被称为“Windows管理基础设施”,下面的C#代码行提供了一个windows会话期间的读/写数据量,尽管值的名字有点误导:

ManagementObjectSearcher searcher = 
    new ManagementObjectSearcher("SELECT * FROM Win32_PerfRawData_PerfDisk_PhysicalDisk"); 
ManagementObjectCollection col = searcher.Get(); 
m.GetPropertyValue("DiskReadBytesPerSec"); 
m.GetPropertyValue("DiskWriteBytesPerSec"); 
foreach (ManagementObject m in col) 
{ 
    m.GetPropertyValue("DiskReadBytesPerSec"); 
    m.GetPropertyValue("DiskWriteBytesPerSec"); 
}