2012-05-22 3 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에서 찾을 수 있습니다. 하지만 어쨌든 나는 PdhAddCounter에서 0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME) 오류 메시지가 나타납니다. 아무도 실수를 저지를 수 있니? 내가 여기서 무엇을 놓치고 있는지 잘 모르겠습니다. COUNTER_PATH에 문제가 있습니까?

답변

1

COUNTER_PATHLPCSTR에으로 전송하고 있습니다.

PdhAddCounter의 두 번째 매개 변수는 LPCTSTR이며 CONST PWSTR과 같습니다.

+0

LPCTSTR에 캐스팅했을 때, 여전히 같은 문제가 발생했습니다. 필자가 완전히 제거했을 때 컴파일러는 "매개 변수 2를 'const PWSTR'에서 'LPCSTR'로 변환 할 수 없다는 불평을했습니다. 내가 게시물에서 준 예제에서는 아무것도 캐스팅하지 않았습니다. 문제가 그 문제와 다소 관련이 있다고 생각합니까? – user945216

+1

유니 코드를 사용하도록 설정하지 않은 것 같습니다. 유니 코드 ('Project Properties'->'Configuration Properties'->'General'->'Character Set')를 켜고 캐스트를 제거하면 제대로 작동합니다. 유니 코드를 사용하지 않으려면 캐스트를 제거하고 첫 줄을 'LPCSTR COUNTER_PATH = "\\ System \\ Processes";로 변경하십시오. – Fraser

+0

도움을 주셔서 감사합니다! 그것은 문제를 해결 :) – user945216