다음을 통해 공유


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

설명

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

FunctionLeave2 함수는 콜백이며, 구현해야 합니다. 구현은 __declspec(naked) 스토리지 클래스 특성을 사용해야 합니다.

실행 엔진은 이 함수를 호출하기 전에 레지스터를 저장하지 않습니다.

  • 입력 시 FPU(부동 소수점 유닛)의 레지스터를 포함하여 사용하는 모든 레지스터를 저장해야 합니다.

  • 종료 시 호출자가 푸시한 모든 매개 변수를 제거하여 스택을 복원해야 합니다.

가비지 수집이 지연되므로 FunctionLeave2 구현을 차단해서는 안 됩니다. 스택이 가비지 수집 친화적 상태가 아닐 수 있으므로 구현에서 가비지 수집을 시도해서는 안 됩니다. 가비지 수집이 시도되면 런타임은 FunctionLeave2가 반환될 때까지 차단됩니다.

또한 FunctionLeave2 함수는 관리 코드를 호출하거나 어떤 식으로든 관리 메모리 할당을 유발해서는 안 됩니다.

요구 사항

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

헤더: CorProf.idl

라이브러리: CorGuids.lib

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

참고 항목