FunctionLeave2 함수
함수가 호출자에게 곧 반환될 것임을 프로파일러에 알리고 스택 프레임 및 함수 반환 값에 대한 정보를 제공합니다.
구문
void __stdcall FunctionLeave2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_RANGE *retvalRange
);
매개 변수
funcId
[in] 반환되는 함수의 식별자입니다.
clientData
[in] 프로파일러가 이전에 FunctionIDMapper 함수를 통해 지정한 다시 매핑된 함수 식별자입니다.
func
[in] 스택 프레임에 대한 정보를 가리키는 COR_PRF_FRAME_INFO
값입니다.
프로파일러는 이를 ICorProfilerInfo2::GetFunctionInfo2 메서드에서 실행 엔진으로 다시 전달할 수 있는 불투명 핸들로 처리해야 합니다.
retvalRange
[in] 함수 반환 값의 메모리 위치를 지정하는 COR_PRF_FUNCTION_ARGUMENT_RANGE 구조에 대한 포인터입니다.
반환 값 정보에 액세스하려면 COR_PRF_ENABLE_FUNCTION_RETVAL
플래그를 설정해야 합니다. 프로파일러는 ICorProfilerInfo::SetEventMask 메서드를 사용하여 이벤트 플래그를 설정할 수 있습니다.
설명
func
및 retvalRange
매개 변수의 값은 값이 변경되거나 제거될 수 있으므로 FunctionLeave2
함수가 반환된 후에는 유효하지 않습니다.
FunctionLeave2
함수는 콜백이며, 구현해야 합니다. 구현은 __declspec
(naked
) 스토리지 클래스 특성을 사용해야 합니다.
실행 엔진은 이 함수를 호출하기 전에 레지스터를 저장하지 않습니다.
입력 시 FPU(부동 소수점 유닛)의 레지스터를 포함하여 사용하는 모든 레지스터를 저장해야 합니다.
종료 시 호출자가 푸시한 모든 매개 변수를 제거하여 스택을 복원해야 합니다.
가비지 수집이 지연되므로 FunctionLeave2
구현을 차단해서는 안 됩니다. 스택이 가비지 수집 친화적 상태가 아닐 수 있으므로 구현에서 가비지 수집을 시도해서는 안 됩니다. 가비지 수집이 시도되면 런타임은 FunctionLeave2
가 반환될 때까지 차단됩니다.
또한 FunctionLeave2
함수는 관리 코드를 호출하거나 어떤 식으로든 관리 메모리 할당을 유발해서는 안 됩니다.
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
헤더: CorProf.idl
라이브러리: CorGuids.lib
.NET Framework 버전: 2.0부터 사용 가능
참고 항목
.NET