다음을 통해 공유


FunctionLeave2 함수

업데이트: 2010년 10월

함수가 호출자에게 반환될 것임을 프로파일러에 알리고 스택 프레임 및 함수 반환 값에 대한 정보를 제공합니다.

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 메서드를 사용하여 이벤트 플래그를 설정할 수 있습니다.

설명

값이 변경되거나 제거될 수 있으므로 FunctionLeave2 함수가 반환된 후에는 func 및 retvalRange 매개 변수의 값이 유효하지 않습니다.

FunctionLeave2 함수는 구현해야 하는 콜백 함수입니다. __declspec(naked) 저장소 클래스 특성을 사용하여 구현해야 합니다.

이 함수를 호출해야 실행 엔진에서 레지스터를 저장합니다.

  • 시작할 때 FPU(부동 소수점 단위)의 레지스터를 포함하여 사용하는 모든 레지스터를 저장해야 합니다.

  • 종료할 때 호출자에 의해 푸시되는 모든 매개 변수를 팝하여 스택을 복원해야 합니다.

가비지 수집이 지연될 수 있으므로 FunctionLeave2 구현이 차단되지 않아야 합니다. 스택이 가비지를 수집하기에 좋은 상태가 아닐 수 있으므로 구현에서는 가비지 수집을 시도하지 않아야 합니다. 가비지 수집이 시도될 경우 FunctionLeave2가 반환될 때까지 런타임이 차단됩니다.

또한 FunctionLeave2 함수에서 관리 코드를 호출하거나 관리되는 메모리를 할당해서는 안 됩니다.

요구 사항

플랫폼: .NET Framework 시스템 요구 사항 참조

헤더: CorProf.idl

라이브러리: CorGuids.lib

.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0

참고 항목

참조

FunctionEnter2 함수

FunctionTailcall2 함수

ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 메서드

기타 리소스

프로파일링 전역 정적 함수

변경 기록

날짜

변경 내용

이유

2010년 10월

__stdcall을 구문에 추가했습니다.

고객 의견