성능 데이터 도우미 오류 코드

모든 PDH(Performance Data Helper) 함수는 PDH_STATUS 형식의 값을 반환합니다. 함수가 성공하는 경우 반환 값은 ERROR_SUCCESS입니다. 그렇지 않으면 함수는 시스템 오류 코드 또는 PDH 오류 코드를 반환합니다. 애플리케이션에서 오류에 대한 설명 텍스트를 검색하려면 다음 예제와 같이 FormatMessage 함수를 사용합니다.

#include <windows.h>
#include <stdio.h>
#include <pdhmsg.h>

void main(void)
{
    HANDLE hPdhLibrary = NULL;
    LPWSTR pMessage = NULL;
    DWORD dwErrorCode = PDH_PLA_ERROR_ALREADY_EXISTS;

    hPdhLibrary = LoadLibrary(L"pdh.dll");
    if (NULL == hPdhLibrary)
    {
        wprintf(L"LoadLibrary failed with %lu\n", GetLastError());
        return;
    }

    if (!FormatMessage(FORMAT_MESSAGE_FROM_HMODULE |
                       FORMAT_MESSAGE_ALLOCATE_BUFFER |
                       FORMAT_MESSAGE_IGNORE_INSERTS,
                       hPdhLibrary,
                       dwErrorCode,
                       0,
                       (LPWSTR)&pMessage,
                       0,
                       NULL))
    {
        wprintf(L"Format message failed with 0x%x\n", GetLastError());
        return;
    }

    wprintf(L"Formatted message: %ls\n", pMessage);
    LocalFree(pMessage);
}

데이터 수집 및 형식 지정 함수의 경우 함수의 반환 값은 함수 호출의 성공 또는 오류를 나타내며 반드시 카운터 데이터의 성공 또는 오류를 나타내는 것은 아닙니다. 항상 반환된 카운터 값의 CStatus 멤버를 검사 반환된 데이터를 사용하기 전에 유효한지 확인합니다. CStatus 멤버의 값이 성공을 나타내지 않는 경우 데이터를 사용하지 마세요.

다음 표에서는 PDH와 관련된 오류 코드 목록을 제공합니다. 이러한 값은 헤더 파일에 정의 pdhmsg.h 됩니다.

오류 코드 설명
0x00000000(PDH_CSTATUS_VALID_DATA) 반환된 데이터가 유효합니다.
0x00000001(PDH_CSTATUS_NEW_DATA) 반환 데이터 값은 유효하며 마지막 샘플과 다릅니다.
0x800007D0(PDH_CSTATUS_NO_MACHINE) 지정된 컴퓨터에 연결할 수 없거나 컴퓨터가 오프라인 상태입니다.
0x800007D1(PDH_CSTATUS_NO_INSTANCE) 지정된 인스턴스가 없습니다.
0x800007D2(PDH_MORE_DATA) 제공된 버퍼에 맞는 것보다 더 많은 데이터를 반환해야 합니다. 더 큰 버퍼를 할당하고 함수를 다시 호출합니다.
0x800007D3(PDH_CSTATUS_ITEM_NOT_VALIDATED) 데이터 항목이 쿼리에 추가되었지만 유효성을 검사하거나 액세스하지 않았습니다. 이 데이터 항목에 대한 다른 상태 정보를 사용할 수 없습니다.
0x800007D4(PDH_RETRY) 선택한 작업을 다시 시도해야 합니다.
0x800007D5(PDH_NO_DATA) 반환할 데이터가 없습니다.
0x800007D6(PDH_CALC_NEGATIVE_DENOMINATOR) 음수 분모 값이 있는 카운터가 검색되었습니다.
0x800007D7(PDH_CALC_NEGATIVE_TIMEBASE) 시간 기준 값이 음수인 카운터가 검색되었습니다.
0x800007D8(PDH_CALC_NEGATIVE_VALUE) 음수 값이 있는 카운터가 검색되었습니다.
0x800007D9(PDH_DIALOG_CANCELLED) 사용자가 대화 상자를 취소했습니다.
0x800007DA(PDH_END_OF_LOG_FILE) 로그 파일의 끝에 도달했습니다.
0x800007DB(PDH_ASYNC_QUERY_TIMEOUT) 비동기 카운터 수집 스레드가 종료될 때까지 기다리는 동안 시간 초과가 발생했습니다.
0x800007DC(PDH_CANNOT_SET_DEFAULT_REALTIME_DATASOURCE) 설정된 기본 실시간 데이터 원본을 변경할 수 없습니다. 카운터 데이터를 수집하는 실시간 쿼리 세션이 있습니다.
0xC0000BB8(PDH_CSTATUS_NO_OBJECT) 시스템에서 지정된 개체를 찾을 수 없습니다.
0xC0000BB9(PDH_CSTATUS_NO_COUNTER) 지정된 카운터를 찾을 수 없습니다.
0xC0000BBA(PDH_CSTATUS_INVALID_DATA) 반환된 데이터가 잘못되었습니다.
0xC0000BBB(PDH_MEMORY_ALLOCATION_FAILURE) PDH 함수가 작업을 완료하기에 충분한 임시 메모리를 할당할 수 없습니다. 일부 애플리케이션을 닫거나 페이지 파일을 확장하고 함수를 다시 시도합니다.
0xC0000BBC(PDH_INVALID_HANDLE) 이 핸들은 올바른 PDH 개체가 아닙니다.
0xC0000BBD(PDH_INVALID_ARGUMENT) 필요한 인수가 없거나 잘못되었습니다.
0xC0000BBE(PDH_FUNCTION_NOT_FOUND) 지정된 함수를 찾을 수 없습니다.
0xC0000BBF(PDH_CSTATUS_NO_COUNTERNAME) 카운터가 지정되지 않았습니다.
0xC0000BC0(PDH_CSTATUS_BAD_COUNTERNAME) 카운터 경로를 구문 분석할 수 없습니다. 지정된 경로의 형식과 구문을 확인합니다.
0xC0000BC1(PDH_INVALID_BUFFER) 호출자가 전달한 버퍼가 잘못되었습니다.
0xC0000BC2(PDH_INSUFFICIENT_BUFFER) 요청된 데이터가 제공된 버퍼보다 큽합니다. 요청된 데이터를 반환할 수 없습니다.
0xC0000BC3(PDH_CANNOT_CONNECT_MACHINE) 요청된 컴퓨터에 연결할 수 없습니다.
0xC0000BC4(PDH_INVALID_PATH) 지정된 카운터 경로를 해석할 수 없습니다.
0xC0000BC5(PDH_INVALID_INSTANCE) 지정된 카운터 경로에서 인스턴스 이름을 읽을 수 없습니다.
0xC0000BC6(PDH_INVALID_DATA) 데이터가 잘못되었습니다.
0xC0000BC7(PDH_NO_DIALOG_DATA) 대화 상자 데이터 블록이 없거나 잘못되었습니다.
0xC0000BC8(PDH_CANNOT_READ_NAME_STRINGS) 지정된 컴퓨터에서 카운터 및/또는 도움말 텍스트를 읽을 수 없습니다.
0xC0000BC9(PDH_LOG_FILE_CREATE_ERROR) 지정된 로그 파일을 만들 수 없습니다.
0xC0000BCA(PDH_LOG_FILE_OPEN_ERROR) 지정된 로그 파일을 열 수 없습니다.
0xC0000BCB(PDH_LOG_TYPE_NOT_FOUND) 지정된 로그 파일 형식이 이 시스템에 설치되지 않았습니다.
0xC0000BCC(PDH_NO_MORE_DATA) 사용 가능한 데이터가 더 이상 없습니다.
0xC0000BCD(PDH_ENTRY_NOT_IN_LOG_FILE) 로그 파일에서 지정된 레코드를 찾을 수 없습니다.
0xC0000BCE(PDH_DATA_SOURCE_IS_LOG_FILE) 지정된 데이터 원본이 로그 파일입니다.
0xC0000BCF(PDH_DATA_SOURCE_IS_REAL_TIME) 지정된 데이터 원본이 현재 작업입니다.
0xC0000BD0(PDH_UNABLE_READ_LOG_HEADER) 로그 파일 헤더를 읽을 수 없습니다.
0xC0000BD1(PDH_FILE_NOT_FOUND) 지정된 파일을 찾을 수 없습니다.
0xC0000BD2(PDH_FILE_ALREADY_EXISTS) 지정된 파일 이름을 가진 파일이 이미 있습니다.
0xC0000BD3(PDH_NOT_IMPLEMENTED) 참조된 함수가 구현되지 않았습니다.
0xC0000BD4(PDH_STRING_NOT_FOUND) 성능 이름 및 도움말 텍스트 문자열 목록에서 지정된 문자열을 찾을 수 없습니다.
0x80000BD5(PDH_UNABLE_MAP_NAME_FILES) 성능 카운터 이름 데이터 파일에 매핑할 수 없습니다. 데이터는 레지스트리에서 읽고 로컬로 저장됩니다.
0xC0000BD6(PDH_UNKNOWN_LOG_FORMAT) 지정된 로그 파일의 형식이 PDH DLL에서 인식되지 않습니다.
0xC0000BD7(PDH_UNKNOWN_LOGSVC_COMMAND) 지정된 Log Service 명령 값이 인식되지 않습니다.
0xC0000BD8(PDH_LOGSVC_QUERY_NOT_FOUND) Log Service에서 지정된 쿼리를 찾을 수 없거나 열 수 없습니다.
0xC0000BD9(PDH_LOGSVC_NOT_OPENED) 성능 데이터 로그 서비스 키를 열 수 없습니다. 이는 권한이 부족하거나 서비스가 설치되지 않았기 때문일 수 있습니다.
0xC0000BDA(PDH_WBEM_ERROR) WBEM 데이터 저장소에 액세스하는 동안 오류가 발생했습니다.
0xC0000BDB(PDH_ACCESS_DENIED) 원하는 컴퓨터 또는 서비스에 액세스할 수 없습니다. 모니터링 중인 컴퓨터 또는 서비스에 대한 로그 서비스 또는 대화형 사용자 세션의 사용 권한 및 인증을 확인합니다.
0xC0000BDC(PDH_LOG_FILE_TOO_SMALL) 지정된 최대 로그 파일 크기가 너무 작아서 선택한 카운터를 기록할 수 없습니다. 이 로그 파일에는 데이터가 기록되지 않습니다. 더 작은 카운터 집합을 지정하여 로그하거나 더 큰 파일 크기를 지정하고 이 호출을 다시 시도합니다.
0xC0000BDD(PDH_INVALID_DATASOURCE) ODBC DataSource 이름에 연결할 수 없습니다.
0xC0000BDE(PDH_INVALID_SQLDB) SQL Database에는 Perfmon에 대한 유효한 테이블 집합이 포함되어 있지 않습니다.
0xC0000BDF(PDH_NO_COUNTERS) 이 Perfmon SQL 로그 집합에 대한 카운터를 찾을 수 없습니다.
0xC0000BE0(PDH_SQL_ALLOC_FAILED) %1을(를) 사용하여 SQLAllocStmt에 대한 호출이 실패했습니다.
0xC0000BE1(PDH_SQL_ALLOCCON_FAILED) SQLAlloc커넥트 호출이 %1로 실패했습니다.
0xC0000BE2(PDH_SQL_EXEC_DIRECT_FAILED) %1을(를) 사용하여 SQLExecDirect에 대한 호출이 실패했습니다.
0xC0000BE3(PDH_SQL_FETCH_FAILED) %1을(를) 사용하여 SQLFetch 호출에 실패했습니다.
0xC0000BE4(PDH_SQL_ROWCOUNT_FAILED) %1을(를) 사용하여 SQLRowCount에 대한 호출이 실패했습니다.
0xC0000BE5(PDH_SQL_MORE_RESULTS_FAILED) %1을(를) 사용하여 SQLMoreResults에 대한 호출이 실패했습니다.
0xC0000BE6(PDH_SQL_CONNECT_FAILED) %1을(를) 사용하여 SQL커넥트 호출에 실패했습니다.
0xC0000BE7(PDH_SQL_BIND_FAILED) %1을(를) 사용하여 SQLBindCol에 대한 호출이 실패했습니다.
0xC0000BE8(PDH_CANNOT_CONNECT_WMI_SERVER) 요청된 컴퓨터에서 WMI 서버에 연결할 수 없습니다.
0xC0000BE9(PDH_PLA_COLLECTION_ALREADY_RUNNING) 컬렉션 "%1!s!"이(가) 이미 실행 중입니다.
0xC0000BEA(PDH_PLA_ERROR_SCHEDULE_OVERLAP) 지정된 시작 시간은 종료 시간 이후입니다.
0xC0000BEB(PDH_PLA_COLLECTION_NOT_FOUND) 컬렉션 "%1!s!"이(가) 없습니다.
0xC0000BEC(PDH_PLA_ERROR_SCHEDULE_ELAPSED) 지정된 종료 시간이 이미 경과되었습니다.
0xC0000BED(PDH_PLA_ERROR_NOSTART) 컬렉션 "%1!s!"이(가) 시작되지 않았습니다. 오류에 대한 애플리케이션 이벤트 로그를 검사.
0xC0000BEE(PDH_PLA_ERROR_ALREADY_EXISTS) 컬렉션 "%1!s!"이(가) 이미 있습니다.
0xC0000BEF(PDH_PLA_ERROR_TYPE_MISMATCH) 설정 유형이 일치하지 않습니다.
0xC0000BF0(PDH_PLA_ERROR_FILEPATH) 지정한 정보가 올바른 경로 이름으로 확인되지 않습니다.
0xC0000BF1(PDH_PLA_SERVICE_ERROR) "성능 로그 및 경고" 서비스가 응답하지 않았습니다.
0xC0000BF2(PDH_PLA_VALIDATION_ERROR) 전달된 정보가 잘못되었습니다.
0x80000BF3(PDH_PLA_VALIDATION_WARNING) 전달된 정보가 잘못되었습니다.
0xC0000BF4(PDH_PLA_ERROR_NAME_TOO_LONG) 제공된 이름이 너무 깁니다.
0xC0000BF5(PDH_INVALID_SQL_LOG_FORMAT) SQL 로그 형식이 잘못되었습니다. 올바른 형식입니다 SQL:<DSN-name>!<LogSet-Name>.
0xC0000BF6(PDH_COUNTER_ALREADY_IN_QUERY) PdhAddCounter 호출의 성능 카운터가 성능 쿼리에 이미 추가되었습니다. 이 카운터는 무시됩니다.
0xC0000BF7(PDH_BINARY_LOG_CORRUPT) 입력 이진 로그 파일에서 카운터 정보 및 데이터를 읽을 수 없습니다.
0xC0000BF8(PDH_LOG_SAMPLE_TOO_SMALL) 입력 이진 로그 파일 중 하나 이상에는 두 개 미만의 데이터 샘플이 포함되어 있습니다.
0xC0000BF9(PDH_OS_LATER_VERSION) %1이라는 컴퓨터의 운영 체제 버전은 로컬 컴퓨터의 버전보다 늦습니다. 이 작업은 로컬 컴퓨터에서 사용할 수 없습니다.
0xC0000BFA(PDH_OS_EARLIER_VERSION) %1은(는) %2 이상을 지원합니다. %3이라는 컴퓨터에서 운영 체제 버전을 확인합니다.
0xC0000BFB(PDH_INCORRECT_APPEND_TIME) 출력 파일에는 추가할 파일보다 이전 데이터가 포함되어야 합니다.
0xC0000BFC(PDH_UNMATCHED_APPEND_COUNTER) 두 파일 모두 추가하려면 동일한 카운터가 있어야 합니다.
0xC0000BFD(PDH_SQL_ALTER_DETAIL_FAILED) SQL 데이터베이스에서 CounterDetail 테이블 레이아웃을 변경할 수 없습니다.
0xC0000BFE(PDH_QUERY_PERF_DATA_TIMEOUT) 시스템이 사용 중입니다. 카운터 데이터를 수집할 때 시간 초과가 발생했습니다. 나중에 다시 시도하거나 CollectTime 레지스트리 값을 늘리세요.