2012-05-22 89 views
1

我想使用pdh.h計算windoes 2008服務器上的進程數。錯誤的計數器路徑,pdhAddCounter;性能監視器在Windows中

CONST PWSTR COUNTER_PATH = L"\\System\\Processes"; 
    HQUERY hQuery = NULL; 
    HCOUNTER hCounter; 
    PDH_STATUS pdhStatus = ERROR_SUCCESS; 

    pdhStatus = PdhOpenQuery(NULL, 0, &hQuery); 
    pdhStatus = PdhAddCounter(hQuery, (LPCSTR)COUNTER_PATH, 0, &hCounter); 

我從here得到了COUNTER_PATH名稱和例子可以在here找到。但不知何故,我得到0123h錯誤消息在PdhAddCounter。任何人都可以拿起我犯的任何錯誤嗎?我不確定我在這裏錯過了什麼。 COUNTER_PATH有什麼問題嗎?

回答

1

您正在將COUNTER_PATH轉換成LPCSTRPdhAddCounter,您應該不會這樣做。

PdhAddCounter的第二個參數是LPCTSTR,它與CONST PWSTR相同。

+0

當我鑄造到LPCTSTR時,它仍然產生相同的問題。當我完全刪除它時,編譯器抱怨說:「不能將參數2從'const PWSTR'轉換爲'LPCSTR'」..在我發佈的例子中,他們根本沒有投出任何東西。你認爲這個問題有點相關嗎? – user945216

+1

這聽起來像你還沒有啓用unicode。如果你打開unicode('Project Properties'->'Configuration Properties'->'General'->'Character Set'),並刪除它應該工作。如果你想禁用unicode,仍然刪除轉換,但將你的第一行改爲'LPCSTR COUNTER_PATH =「\\ System \\ Processes」;' – Fraser

+0

感謝您的幫助!它解決了這個問題:) – user945216