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