성능 확장 DLL 만들기
중요하다
상당한 성능 및 안정성 제한으로 인해 이 항목에서 설명하는 성능 카운터 데이터를 제공하는 방법은 나중에 변경되거나 사용할 수 없게 될 수 있습니다. 대신 새 성능 카운터를 만들기 위해 버전 2.0 사용하여 카운터 데이터 제공에 설명된 방법을 사용하고 해당 메서드를 사용하도록 기존 성능 카운터를 마이그레이션하는 것이 좋습니다.
V1 공급자 소비자에게 카운터 데이터를 제공하는 성능 DLL을 사용합니다. 성능 DLL은 OpenPerformanceData, CollectPerformanceData및 ClosePerformanceData 함수를 내보내야 합니다. 일반적으로 모듈 정의(.def) 파일을 사용하여 DLL에서 함수를 내보냅니다. 소비자가 성능 데이터를 쿼리할 때 시스템에서 이러한 함수를 호출합니다.
소비자가 RegQueryValueEx처음 호출하거나 소비자가 RegOpenKey 또는 RegConnectRegistry 함수를 사용하여 HKEY_PERFORMANCE_DATA
열면 시스템에서 컴퓨터에 등록된 각 공급자에 대해 OpenPerformanceData 함수를 호출합니다. 예외는 공급자가 [objects]
섹션에서 지원하는 개체 목록을 지정하는 경우입니다. INI 파일. 이 경우 쿼리된 개체 중 하나가 목록의 개체와 일치하는 경우에만 시스템에서 공급자를 호출합니다.
OpenPerformanceData 함수는 각 공급자에게 성능 데이터 구조를 초기화할 수 있는 기회를 제공합니다. 그런 다음 OpenPerformanceData 함수가 성공적으로 반환되면 시스템에서 공급자의 CollectPerformanceData 함수를 호출합니다. RegQueryValueEx에 대한 후속 호출은 시스템이 CollectPerformanceData 함수를 호출하게.
소비자가 성능 데이터 수집을 마치면 RegCloseKey 함수에 대한 호출에서 HKEY_PERFORMANCE_DATA
지정합니다. 이렇게 하면 시스템에서 각 공급자에 대해 ClosePerformanceData 함수를 호출합니다. 그런 다음 공급자가 언로드됩니다.
여러 소비자가 동시에 성능 데이터를 수집할 수 있습니다. 시스템은 DLL이 로드되거나 언로드될 때마다 OpenPerformanceData 및 ClosePerformanceData 함수를 각각 한 번만 호출합니다.
메모
컴파일러가 함수 이름에 장식을 추가하지 못하도록 C++ 코드에 extern "C"를 포함해야 합니다. 그렇지 않으면 시스템에서 함수를 찾지 못할 수 있습니다.
메모
성능 DLL을 로드하거나, 함수를 찾거나, 함수를 호출하는 동안 오류가 발생하면 시스템은 동일한 프로세스 내의 후속 컬렉션에 대해 공급자를 사용하지 않도록 설정합니다. 또한 권한 있는 프로세스에서 실행하는 동안 이 문제가 발생하는 경우 시스템은 성능 키에 성능 카운터 사용 안 함 값을 추가하여 나중에 공급자가 로드되지 않도록 합니다.
성능 DLL 작성에 대한 자세한 내용은 다음 항목을 참조하세요.
- OpenPerformanceData 함수 구현
- CollectPerformanceData 함수 구현
- DLL에서의 오류 처리
- 성능 확장 DLL 대한 액세스 제한
- 성능 DLL 샘플