使用PdhAddEnglishCounter时出错

时间:2013-07-18 11:27:55

标签: c++ windows winapi pdh

我的代码:

#include <Windows.h>
#include <iostream>
#include <Pdh.h>
#pragma comment (lib, "pdh.lib")
void main()
{
    PDH_STATUS Status;
    HQUERY Query = NULL;
    HCOUNTER Counter;
    WCHAR buffer[PDH_MAX_COUNTER_PATH];
    PdhOpenQuery(NULL, NULL, &Query);
    wcscpy(buffer, L"\\NTO-PROG\Thread(_Total/_Total)\Context Switches/sec");
    Status = PdhAddEnglishCounter(Query, buffer, 0, &Counter);
}

我有这个错误:

pdh error

英文翻译:

  

程序中的访问点PdhAddEnglishCounterA在库DLL pdh.dll中找不到。

如果我使用PdhAddCounter代替PdhAddEnglishCounter,我会在Status0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME)中看到。我需要做些什么?

P.S。我在Windows XP上使用Visual Studio 2010。

1 个答案:

答案 0 :(得分:2)

您的错误原因as MSDN says是Windows XP不支持PdhAddEnglishCounter

enter image description here

对于PdhAddCounter,计数器路径必须正确本地化。 Refer to MSDN here。您可能希望将PdhLookupPerfNameByIndex视为替代方案(同样,MSDN here)。

也有一个有用的article on the MS Knowledgebase