2011-03-28 14 views
0

我找實例和文檔,但我還是不明白這一點...使用的RegQueryValueEx和HKEY_PERFORMANCE_COUNTER獲取「磁盤字節/秒%

如何使用RegQueryValueEx的PdhXxx函數)來查詢像Disk Bytes/sec

我已經試過如下:?

DWORD type; 
static union { TCHAR Data[32 * 1024]; PERF_DATA_BLOCK Perf; } perf;//Stack buffer 
DWORD cbData = sizeof(perf); 
LSTATUS s = RegQueryValueEx(HKEY_PERFORMANCE_DATA, 
    _T("PhysicalDisk"), NULL, &type, (LPBYTE)&perf, &cbData); 
PPERF_OBJECT_TYPE pObjType = 
    (PPERF_OBJECT_TYPE)((BYTE*)&perf + perf.Perf.HeaderLength); 

,但它只是返回一個頭,沒有數據:(

回答

1

您不能按照名稱查詢數據。相反,你需要按索引查詢。 MSDN可以幫助你用一些代碼找出適當的索引來查詢。不幸的是,你需要在運行時確定哪個索引。

例如,以下應該檢索處理器的性能數據。

LSTATUS s = RegQueryValueEx(HKEY_PERFORMANCE_DATA, _T("238"), NULL, 
    &type, (LPBYTE)&perf, &cbData); 
+0

啊,這是有道理的,謝謝! :) – Mehrdad 2011-03-28 21:03:52