FunctionIDMapper 함수
함수의 지정된 식별자가 해당 함수의 FunctionEnter2, FunctionLeave2 및 FunctionTailcall2 콜백에 사용할 대체 ID에 다시 매핑될 수 있음을 프로파일러에 알립니다. FunctionIDMapper를 사용하면 프로파일러에서 해당 함수의 콜백을 받을지 여부를 나타낼 수 있습니다.
UINT_PTR __stdcall FunctionIDMapper (
[in] FunctionID funcId,
[out] BOOL *pbHookFunction
);
매개 변수
funcId
[in] 다시 매핑될 함수 식별자입니다.pbHookFunction
[out] 프로파일러에서 FunctionEnter2, FunctionLeave2 및 FunctionTailcall2 콜백을 받으려는 경우 true로 설정하고 그렇지 않는 경우 false로 설정하는 값에 대한 포인터입니다.
반환 값
프로파일러는 실행 엔진에서 대체 함수 식별자로 사용하는 값을 반환합니다. 반환 값은 pbHookFunction에서 false가 반환되지 않는 한 null이 될 수 없습니다. 그렇지 않은 경우에 null 값이 반환되면 프로세스 중지를 포함한 예기치 않는 결과가 발생할 수 있습니다.
설명
FunctionIDMapper 함수는 콜백 함수입니다. 이 함수는 프로파일러에서 구현되며 함수 ID를 프로파일러에 더 유용한 다른 식별자로 다시 매핑합니다. FunctionIDMapper는 지정된 함수에 사용할 대체 ID를 반환합니다. 그런 다음 실행 엔진에서는 프로파일러의 요청에 따라 기존의 함수 ID와 함께 이 대체 ID를 FunctionEnter2, FunctionLeave2 및 FunctionTailcall2 후크의 clientData 매개 변수로 프로파일에 다시 전달하여 후크가 호출되는 함수를 식별합니다.
ICorProfilerInfo::SetFunctionIDMapper 메서드를 사용하여 FunctionIDMapper 함수의 구현을 지정할 수 있습니다. ICorProfilerInfo::SetFunctionIDMapper 메서드는 한 번만 호출할 수 있으며 ICorProfilerCallback::Initialize 콜백에서 호출하는 것이 좋습니다.
기본적으로 ICorProfilerInfo::SetEnterLeaveFunctionHooks 또는 ICorProfilerInfo2::SetEnterLeaveFunctionHooks2를 통해 후크를 설정하는 ICorProfilerInfo::SetEventMask를 사용하여 COR_PRF_MONITOR_ENTERLEAVE 플래그를 설정하는 프로파일러에서는 모든 함수에 대해 FunctionEnter2, FunctionLeave2, and FunctionTailcall2 콜백을 받는다고 가정합니다. 그러나 프로파일러에서는 FunctionIDMapper를 구현하여 pbHookFunction을 false로 설정함으로써 선택적으로 특정 함수에 대해 이러한 콜백을 받지 않을 수 있습니다.
프로파일러에서는 프로파일링된 응용 프로그램의 여러 스레드에서 같은 메서드/함수를 동시에 호출하는 경우를 허용할 수 있어야 합니다. 이런 경우 프로파일러에서는 동일한 FunctionID에 대해 여러 FunctionIDMapper 콜백을 받을 수 있습니다. 프로파일러에서 같은 FunctionID를 사용하여 이 콜백을 여러 번 호출할 때 같은 값이 반환되어야 합니다.
요구 사항
플랫폼: .NET Framework 시스템 요구 사항 참조
헤더: CorProf.idl
라이브러리: CorGuids.lib
.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0, 1.1, 1.0
참고 항목
참조
ICorProfilerInfo::SetFunctionIDMapper 메서드