카운터 데이터 상태 코드 확인

PDH 함수의 반환 값은 카운터 데이터의 상태 다른 함수 호출의 성공 또는 실패를 나타냅니다. PDH 구조에 반환된 카운터 값의 CStatus 멤버를 항상 검사 반환된 데이터가 사용하기 전에 유효한지 확인합니다. CStatus 멤버의 값이 성공을 나타내지 않는 경우 데이터를 사용하지 마세요. 카운터에 사용할 수 있는 상태 값은 다음과 같습니다.

의미
PDH_CSTATUS_NO_MACHINE PDH가 카운터 경로에 지정된 컴퓨터에 연결할 수 없습니다. 카운터가 추가될 때 이 상태 반환되면 카운터가 완전히 초기화되지 않습니다. 쿼리가 업데이트 될 때마다 PDH 연결을 다시 시도 합니다. 연결이 설정되면 일반 데이터 수집이 다시 시작됩니다.
PDH_CSTATUS_NO_OBJECT 지정된 컴퓨터를 찾았지만 지정된 성능 개체가 컴퓨터에서 발견되었습니다. 카운터가 추가될 때 이 상태 반환되면 지정된 카운터가 쿼리에 포함되지 않습니다. 이 상태 활성 카운터에서 반환되는 경우 해당 카운터의 데이터는 유효하지 않습니다. 데이터를 요청할 때마다 PDH는 이 카운터 데이터를 가져오려고 시도합니다.
PDH_CSTATUS_NO_INSTANCE 지정한 instance 개체에서 찾을 수 없습니다. 카운터가 쿼리에 추가되는 동안 이 상태 반환되면 카운터가 쿼리에 성공적으로 추가되지만 특정 instance 나타나고 성공적인 상태 반환될 때까지 데이터를 사용할 수 없습니다.
PDH_CSTATUS_NO_COUNTER 지정된 개체에서 지정된 카운터를 찾을 수 없습니다. 카운터가 추가될 때 이 상태 반환되면 카운터가 쿼리에 추가되지 않습니다. 이 상태 데이터 수집 후에 반환되면 해당 카운터에 대한 데이터가 유효하지 않습니다. 데이터를 요청할 때마다 PDH는 이 카운터 데이터를 가져오려고 시도합니다.
PDH_CSTATUS_INVALID_DATA 카운터를 성공적으로 찾았지만 반환된 데이터가 잘못되었습니다. 카운터 값이 이전 값보다 작은 경우 이 오류가 발생할 수 있습니다. 카운터 값은 항상 증가하므로 카운터 값이 최대값에 도달하면 0으로 롤오버됩니다. 또 다른 가능한 원인은 올바르지 않은 시스템 타이머입니다.
PDH_CSTATUS_VALID_DATA 카운터에 대한 데이터가 성공적으로 반환되었지만 카운터를 마지막으로 읽은 시점과 변경되지 않습니다.
PDH_CSTATUS_NEW_DATA 카운터에 대한 데이터가 성공적으로 반환되었으며 카운터를 마지막으로 읽은 시간과 다릅니다. 결과 속도가 마지막 샘플과 동일한 경우에도 PDH_CSTATUS_NEW_DATA 속도 카운터에 반환될 수 있습니다. 이 상태 값의 결정에 사용되는 원시 데이터 값이 계산 속도가 아니라 변경되었기 때문입니다.
PDH_MORE_DATA 제공된 버퍼가 모든 카운터 데이터를 저장할 만큼 크지 않았습니다. 더 큰 버퍼를 할당하고 함수를 다시 실행합니다.
PDH_CSTATUS_ITEM_NOT_VALIDATED 카운터가 쿼리에 추가되었지만 유효성을 검사하거나 액세스하지 않았습니다. 이 카운터에 대한 추가 상태 정보를 사용할 수 없습니다.
PDH_CSTATUS_NO_COUNTERNAME 쿼리에 카운터 이름이 지정되지 않았습니다.
PDH_CSTATUS_NO_COUNTER 지정된 카운터 이름을 찾을 수 없습니다.
PDH_CSTATUS_NO_OBJECT 지정된 성능 개체를 찾을 수 없습니다.
PDH_CALC_NEGATIVE_DENOMINATOR 카운터에는 음수 분모 값이 있습니다.
PDH_CALC_NEGATIVE_TIMEBASE 카운터에 음의 시간 기반 값이 있습니다.
PDH_CALC_NEGATIVE_VALUE 카운터에 음수 값이 있습니다.
PDH_CSTATUS_NO_COUNTERNAME 카운터 경로가 지정되지 않았습니다.
PDH_CSTATUS_BAD_COUNTERNAME 카운터 경로 형식이 잘못되었습니다.