2011-03-02 69 views
5

夥計們,我有以下代碼:使用PerformanceCounters針對特定的驅動器

using System.Diagnostics; 

private PerformanceCounter diskRead = new PerformanceCounter(); 
private PerformanceCounter diskWrite = new PerformanceCounter(); 

diskRead.CategoryName = "PhysicalDisk"; 
diskRead.CounterName = "Disk Reads/sec"; 
diskRead.InstanceName = "_Total"; 

diskWrite.CategoryName = "PhysicalDisk"; 
diskWrite.CounterName = "Disk Writes/sec"; 
diskWrite.InstanceName = "_Total"; 

此代碼跟蹤磁盤每秒讀取每秒磁盤寫入,它工作正常。我的問題是,我如何跟蹤一個特定驅動器的讀寫?我的電腦中有3個硬盤驅動器,現在它將所有3個驅動器合併在一起。我怎樣才能專門選擇我想要監視的驅動器?

回答

9

你應該用適當的驅動器號替換 「_Total」:

diskRead.InstanceName = "0"; 

早該檢查發現。您需要指定名稱,如"0 C: D:"。讓人驚訝。

編輯2:

您可以

var cat = new System.Diagnostics.PerformanceCounterCategory("PhysicalDisk"); 
    var instNames = cat.GetInstanceNames(); 

得到的名稱和它probaly安全過濾掉以數字開頭的名稱。 (_Total也在列表中)。

+0

感謝您的回覆。這工作,我能夠得到我所需要的。謝謝! – Icemanind 2011-03-02 21:38:01

+0

它仍然得到所有驅動器的計數器。如何分離出特定的驅動器,如C:,D:? – 2014-04-01 08:40:21

+0

必須是「0 C:D:」......對於微軟來說,這非常非常...... ocd ...... – Patrick 2016-03-02 05:18:31

2

使用特定的InstanceName而不是_Total。使用Perfmon.exe查找實例名稱。