2

我的代码:

#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 错误

英文翻译:

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

如果我使用PdhAddCounter而不是PdhAddEnglishCounter,我会在Status:中看到0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME)。我需要做什么?

ps 我在 Windows XP 上使用 Visual Studio 2010。

4

1 回答 1

3

正如 MSDN 所说,您的错误的原因是PdhAddEnglishCounterWindows XP 不支持

在此处输入图像描述

对于PdhAddCounter,计数器路径必须正确定位。请参阅此处的 MSDN。您可能需要考虑PdhLookupPerfNameByIndex作为替代方案(同样,此处为 MSDN)。

MS 知识库上也有一篇有用的文章。

于 2013-07-18T11:38:22.803 回答