Ошибка с использованием PdhAddEnglishCounter

Мой код:

#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

Английский перевод:

Точка доступа в процедуре PdhAddEnglishCounterA не найдена в библиотеке DLL pdh.dll.

Если я использую PdhAddCounter вместо PdhAddEnglishCounterя вижу в Status: 0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME), Что мне с этим делать?

PS Я использую Visual Studio 2010 на Windows XP.

1 ответ

Причиной вашей ошибки, как говорит MSDN, является то, что PdhAddEnglishCounter не поддерживается в Windows XP

За PdhAddCounter, путь счетчика должен быть правильно локализован. Обратитесь к MSDN здесь. Вы можете рассмотреть PdhLookupPerfNameByIndex в качестве альтернативы (опять MSDN здесь).

Также есть полезная статья о базе знаний MS.

Другие вопросы по тегам