다음을 통해 공유


FunctionIDMapper 함수

지정된 함수 식별자를 해당 함수에 대한 FunctionEnter2, FunctionLeave2FunctionTailcall2 콜백에서 사용할 대체 ID에 다시 매핑할 수 있음을 프로파일러에 알립니다. FunctionIDMapper를 통해 프로파일러는 해당 함수에 대한 콜백을 받을지 여부를 나타낼 수도 있습니다.

구문

UINT_PTR __stdcall FunctionIDMapper (  
    [in]  FunctionID  funcId,
    [out] BOOL       *pbHookFunction  
);  

매개 변수

funcId [in] 다시 매핑할 함수 식별자입니다.

true [out] 프로파일러가 FunctionEnter2, FunctionLeave2FunctionTailcall2 콜백을 받으려는 경우 pbHookFunction로 설정하는 값에 대한 포인터입니다. 그렇지 않으면 이 값을 false로 설정합니다.

Return Value

프로파일러는 실행 엔진이 대체 함수 식별자로 사용하는 값을 반환합니다. falsepbHookFunction에 반환되지 않는 한 반환 값은 null일 수 없습니다. 그러지 않은 경우 null 반환 값에서 프로세스 중지를 포함하여 예기치 않은 결과가 생성됩니다.

설명

FunctionIDMapper 함수는 콜백입니다. 프로파일러에 더 유용한 다른 식별자에 함수 ID를 다시 매핑하기 위해 프로파일러에서 구현됩니다. FunctionIDMapper는 지정된 함수에 사용할 대체 ID를 반환합니다. 그런 다음, 실행 엔진은 기존 함수 ID 외에도 이 대체 ID를 후크가 호출되는 함수를 식별하기 위해 , clientDataFunctionEnter2 후크의 매개 변수에 있는 FunctionLeave2 프로파일러로 다시 전달하여 프로파일러의 FunctionTailcall2요청을 적용합니다.

ICorProfilerInfo::SetFunctionIDMapper 메서드를 사용하여 FunctionIDMapper 함수 구현을 지정할 수 있습니다. ICorProfilerInfo::SetFunctionIDMapper 메서드를 한 번만 호출할 수 있으며 ICorProfilerCallback::Initialize 콜백에서 호출하는 것이 좋습니다.

기본적으로 ICorProfilerInfo::SetEventMask를 사용하여 COR_PRF_MONITOR_ENTERLEAVE 플래그를 설정하고 ICorProfilerInfo::SetEnterLeaveFunctionHooks 또는ICorProfilerInfo2::SetEnterLeaveFunctionHooks2를 통해 후크를 설정하는 프로파일러가 모든 함수에 대해 FunctionEnter2, FunctionLeave2FunctionTailcall2 콜백을 받아야 한다고 가정합니다. 그러나 프로파일러는 pbHookFunctionfalse 설정하여 특정 함수에 대해 이러한 콜백을 선택적으로 수신하지 않도록 FunctionIDMapper를 구현할 수 있습니다.

프로파일러는 프로파일링된 애플리케이션의 여러 스레드가 동일한 메서드/함수를 동시에 호출하는 경우를 허용해야 합니다. 이러한 경우 프로파일러는 동일한 FunctionID에 대해 여러 FunctionIDMapper 콜백을 받을 수 있습니다. 프로파일러는 동일한 FunctionID를 사용하여 여러 번 호출될 때 이 콜백에서 동일한 값을 반환해야 합니다.

요구 사항

플랫폼:시스템 요구 사항을 참조하세요.

헤더: CorProf.idl

라이브러리: CorGuids.lib

.NET Framework 버전: 1.0부터 사용 가능

참고 항목