다음을 통해 공유


쿼리 작성

실시간 원본 또는 로그 파일에서 성능 데이터를 수집하는 새 쿼리를 만들려면 PdhOpenQuery 함수를 호출합니다. 함수는 후속 PDH 함수 호출에서 사용하는 쿼리에 대한 핸들을 반환합니다.

쿼리를 만든 후 쿼리에 추가하려는 각 카운터에 대해 PdhAddCounter 함수를 호출합니다. 다음 방법 중 하나를 사용하여 정규화된 카운터 경로를 제공할 수 있습니다.

  • 카운터 경로를 정적 문자열로 정의합니다. 항상 동일한 카운터를 모니터링하고 카운터 경로의 올바른 구문에 익숙한 경우 이 메서드를 사용합니다. 카운터를 지정하는 데 사용되는 올바른 구문에 대한 자세한 내용은 카운터 경로 지정을 참조하세요.
  • 컴퓨터, 개체, 카운터 및 instance 이름으로 PDH_COUNTER_PATH_ELEMENTS 구조를 초기화합니다. 지정된 요소에 대한 카운터 경로를 반환하는 PdhMakeCounterPath 에 이 구조를 전달합니다.
  • 와일드카드 문자가 포함된 카운터 경로를 지정하고 PdhExpandWildCardPath 를 호출하여 경로의 와일드카드 문자와 일치하는 카운터 이름 목록을 가져옵니다. 카운터 이름 목록을 검사하고 이 목록에서 원하는 카운터를 쿼리에 추가합니다.
  • PdhBrowseCounters 함수를 호출하여 사용자가 성능 카운터를 찾아 선택할 수 있는 대화 상자를 표시합니다. 자세한 내용은 검색 카운터를 참조하세요.

존재하지 않는 카운터 instance 지정된 경우 PdhAddCounter는 오류 조건을 보고하지 않습니다. 대신 ERROR_SUCCESS 반환합니다. 이 동작의 이유는 존재하지 않는 카운터 instance 지정되었거나 존재하지만 아직 만들어지지 않은 카운터인지 알 수 없기 때문입니다.

누락된 카운터 instance PdhCollectQueryData, PdhGetRawCounterValue 또는 PdhGetFormattedCounterValue에 의해 보고됩니다. 하나의 카운터 instance PdhCollectQueryData만 호출하고 카운터 instance 여전히 존재하지 않는 경우 카운터 instance 존재하지 않고 함수가 PDH_NO_DATA 반환한다고 가정합니다. 그러나 둘 이상의 카운터를 쿼리하는 경우 카운터 인스턴스 중 하나가 아직 없더라도 PdhCollectQueryData 는 여전히 ERROR_SUCCESS 반환할 수 있습니다. 이 경우 관심 있는 각 카운터 인스턴스에 대해 PdhGetRawCounterValue 또는 PdhGetFormattedCounterValue 를 호출합니다. PdhGetRawCounterValue를 호출할 때 instance 없는 경우 함수는 ERROR_SUCCESS 반환하고 PDH_RAW_COUNTER CStatus 멤버를 PDH_STATUS_NO_INSTANCE 설정합니다. PdhGetFormattedCounterValue를 호출할 때 instance 없는 경우 함수는 PDH_INVALID_DATA 반환하고 PDH_FMT_COUNTERVALUECStatus 멤버를 PDH_CSTATUS_NO_INSTANCE 설정합니다.

PdhAddCounter 함수에 지정된 카운터 경로를 지역화해야 합니다. PdhAddEnglishCounter 함수는 쿼리에 성능 카운터를 추가하는 로캘 중립적 방법을 제공합니다. 이 함수는 쿼리에 로캘 중립적 카운터를 추가하는 데 권장되는 방법입니다.

쿼리에서 카운터를 제거하려면 PdhRemoveCounter 함수를 호출합니다.

쿼리에 대한 데이터 수집을 완료한 후 PdhCloseQuery 함수를 호출하여 쿼리를 닫고 할당된 모든 시스템 리소스를 해제합니다. PdhCloseQuery 는 쿼리와 연결된 모든 카운터 핸들을 닫습니다.