다음을 통해 공유


FunctionTailcall 함수

현재 실행 중인 함수가 다른 함수에 대한 마무리 호출을 수행하려고 한다는 것을 프로파일러에 알립니다.

참고

FunctionTailcall 함수는 .NET Framework 버전 2.0에서 더 이상 사용되지 않습니다. 계속 작동하지만 성능 저하가 발생합니다. 대신 FunctionTailcall2 함수를 사용합니다.

구문

void __stdcall FunctionTailcall (  
    [in] FunctionID funcID  
);  

매개 변수

funcID [in] 마무리 호출을 수행하려는 현재 실행 중인 함수의 식별자입니다.

설명

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

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

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

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

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

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

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

요구 사항

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

헤더: CorProf.idl

라이브러리: CorGuids.lib

.NET Framework 버전: 1.1, 1.0

참고 항목