다음을 통해 공유


FunctionTailcall2 함수

업데이트: 2010년 10월

현재 실행 중인 함수가 다른 함수에 대해 마무리 호출을 수행할 것임을 프로파일러에 알리고 스택 프레임에 대한 정보를 제공합니다.

void __stdcall FunctionTailcall2 (
    [in] FunctionID         funcId, 
    [in] UINT_PTR           clientData, 
    [in] COR_PRF_FRAME_INFO func
);

매개 변수

  • funcId
    [in] 마무리 호출을 수행할 현재 실행 중인 함수의 식별자입니다.

  • clientData
    [in] 마무리 호출을 수행할 현재 실행 중인 함수의 다시 매핑된 함수 식별자로서, 이전에 프로파일러에서 FunctionIDMapper를 통해 지정했습니다.

  • func
    [in] 스택 프레임에 대한 정보를 가리키는 COR_PRF_FRAME_INFO 값입니다.

    프로파일러에서는 이 값을 ICorProfilerInfo2::GetFunctionInfo2 메서드의 실행 엔진에 다시 전달할 수 있는 불투명 핸들로 처리합니다.

설명

마무리 호출의 대상 함수는 현재 스택 프레임을 사용하고 마무리 호출을 수행한 함수의 호출자에게 직접 반환합니다. 즉, 마무리 호출의 대상 함수에 대해서는 FunctionLeave2 콜백이 발생하지 않습니다.

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

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

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

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

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

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

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

요구 사항

플랫폼: .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 함수

FunctionLeave2 함수

ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 메서드

기타 리소스

프로파일링 전역 정적 함수

변경 기록

날짜

변경 내용

이유

2010년 10월

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

고객 의견