다음을 통해 공유


FunctionTailcall 함수

업데이트: 2010년 10월

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

참고참고

FunctionTailcall 함수는 .NET Framework 버전 2.0에서 더 이상 사용되지 않습니다.이 함수를 계속 사용할 수는 있지만 성능에 영향을 줄 수 있습니다.FunctionTailcall2 함수를 대신 사용하십시오.

void __stdcall FunctionTailcall (
    [in] FunctionID funcID
);

매개 변수

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

설명

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

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

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

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

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

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

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

요구 사항

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

헤더: CorProf.idl

라이브러리: CorGuids.lib

.NET Framework 버전: 1.1, 1.0

참고 항목

참조

FunctionEnter2 함수

FunctionLeave2 함수

ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 메서드

기타 리소스

프로파일링 전역 정적 함수

변경 기록

날짜

변경 내용

이유

2010년 10월

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

고객 의견