다음을 통해 공유


성능 확장 DLL 만들기

중요

상당한 성능 및 안정성 제한으로 인해 이 항목에서 설명하는 성능 카운터 데이터를 제공하는 방법은 나중에 변경되거나 사용할 수 없게 될 수 있습니다. 대신 새 성능 카운터를 만들기 위해 버전 2.0을 사용하여 카운터 데이터 제공 에 설명된 메서드를 사용하고 해당 메서드를 사용하도록 기존 성능 카운터를 마이그레이션하는 것이 좋습니다.

V1 공급자는 소비자에게 카운터 데이터를 제공하는 성능 DLL을 사용합니다. 성능 DLL은 OpenPerformanceData, CollectPerformanceDataClosePerformanceData 함수를 내보내야 합니다. 일반적으로 모듈 정의(.def) 파일을 사용하여 DLL에서 함수를 내보냅니다. 소비자는 성능 데이터를 쿼리할 때 시스템에서 이러한 함수를 호출합니다.

소비자가 RegQueryValueEx를 처음 호출하거나 소비자가 RegOpenKey 또는 RegConnectRegistry 함수를 사용하여 를 여HKEY_PERFORMANCE_DATA는 경우 시스템은 컴퓨터에 등록된 각 공급자에 대해 OpenPerformanceData 함수를 호출합니다. 공급자가 .INI 파일의 섹션에서 지원하는 [objects] 개체 목록을 지정하는 경우는 예외입니다. 이 경우 시스템은 쿼리된 개체 중 하나가 목록의 개체와 일치하는 경우에만 공급자를 호출합니다.

OpenPerformanceData 함수는 각 공급자에게 성능 데이터 구조를 초기화할 수 있는 기회를 제공합니다. 그런 다음 OpenPerformanceData 함수가 성공적으로 반환되면 시스템에서 공급자의 CollectPerformanceData 함수를 호출합니다. RegQueryValueEx에 대한 후속 호출로 인해 시스템에서 CollectPerformanceData 함수를 호출합니다.

소비자가 성능 데이터 수집을 완료하면 RegCloseKey 함수에 대한 호출에서 지정합니다HKEY_PERFORMANCE_DATA. 이렇게 하면 시스템에서 각 공급자에 대해 ClosePerformanceData 함수를 호출합니다. 그런 다음 공급자가 언로드됩니다.

여러 소비자가 동시에 성능 데이터를 수집할 수 있습니다. 시스템은 DLL이 로드되거나 언로드될 때마다 OpenPerformanceDataClosePerformanceData 함수를 한 번만 호출합니다.

참고

컴파일러가 함수 이름에 장식을 추가하지 못하도록 C++ 코드에 extern "C"를 포함해야 합니다. 그렇지 않으면 시스템에서 함수를 찾지 못할 수 있습니다.

참고

성능 DLL을 로드하거나, 함수를 찾거나, 함수를 호출하는 동안 오류가 발생하면 시스템은 동일한 프로세스 내에서 후속 컬렉션에 대해 공급자를 사용하지 않도록 설정합니다. 또한 권한 있는 프로세스에서 실행하는 동안 이 문제가 발생하는 경우 시스템에서 성능 키에성능 카운터 사용 안 함 값을 추가하여 나중에 공급자가 로드되지 않도록 합니다.

성능 DLL 작성에 대한 자세한 내용은 다음 topics 참조하세요.