Ошибка с использованием 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);
}
У меня есть эта ошибка:
Английский перевод:
Точка доступа в процедуре 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.