Мой код:
#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);
}
У меня есть эта ошибка:
Английский перевод:
Точка доступа в процедуре PdhAddEnglishCounterA не найдена в библиотеке DLL pdh.dll.
Если я использую PdhAddCounter
вместо PdhAddEnglishCounter
я вижу в Status
: 0xC0000BC0 (PDH_CSTATUS_BAD_COUNTERNAME)
, Что мне с этим делать?
постскриптум Я использую Visual Studio 2010 на Windows XP.
Причина вашей ошибки, как говорит MSDN в том, что PdhAddEnglishCounter
не поддерживается в Windows XP
За PdhAddCounter
, путь счетчика должен быть правильно локализован. Обратитесь к MSDN здесь. Вы можете рассмотреть PdhLookupPerfNameByIndex
в качестве альтернативы (опять же, MSDN здесь).
Есть полезное статья на базе знаний MS тоже.
Других решений пока нет …