FunctionEnter2 함수
컨트롤이 함수에 전달되고 있음을 프로파일러에 알리고 스택 프레임 및 함수 인수에 대한 정보를 제공합니다. 이 함수는 FunctionEnter 함수를 대체합니다.
구문
void __stdcall FunctionEnter2 (
[in] FunctionID funcId,
[in] UINT_PTR clientData,
[in] COR_PRF_FRAME_INFO func,
[in] COR_PRF_FUNCTION_ARGUMENT_INFO *argumentInfo
);
매개 변수
funcId
[in] 컨트롤이 전달되는 함수의 식별자입니다.
clientData
[in] 프로파일러가 이전에 FunctionIDMapper 함수를 사용하여 지정한 다시 매핑된 함수 식별자입니다.
func
[in] 스택 프레임에 대한 정보를 가리키는 COR_PRF_FRAME_INFO
값입니다.
프로파일러는 이를 ICorProfilerInfo2::GetFunctionInfo2 메서드에서 실행 엔진으로 다시 전달할 수 있는 불투명 핸들로 처리해야 합니다.
argumentInfo
[in] 함수 인수의 메모리에 있는 위치를 지정하는 COR_PRF_FUNCTION_ARGUMENT_INFO 구조체에 대한 포인터입니다.
인수 정보에 액세스하려면 COR_PRF_ENABLE_FUNCTION_ARGS
플래그를 설정해야 합니다. 프로파일러는 ICorProfilerInfo::SetEventMask 메서드를 사용하여 이벤트 플래그를 설정할 수 있습니다.
설명
func
및 argumentInfo
매개 변수의 값은 값이 변경되거나 제거될 수 있으므로 FunctionEnter2
함수가 반환된 후에는 유효하지 않습니다.
FunctionEnter2
함수는 콜백이며, 구현해야 합니다. 구현은 __declspec
(naked
) 스토리지 클래스 특성을 사용해야 합니다.
실행 엔진은 이 함수를 호출하기 전에 레지스터를 저장하지 않습니다.
입력 시 FPU(부동 소수점 유닛)의 레지스터를 포함하여 사용하는 모든 레지스터를 저장해야 합니다.
종료 시 호출자가 푸시한 모든 매개 변수를 제거하여 스택을 복원해야 합니다.
가비지 수집이 지연되므로 FunctionEnter2
구현을 차단해서는 안 됩니다. 스택이 가비지 수집 친화적 상태가 아닐 수 있으므로 구현에서 가비지 수집을 시도해서는 안 됩니다. 가비지 수집이 시도되면 런타임은 FunctionEnter2
가 반환될 때까지 차단됩니다.
또한 FunctionEnter2
함수는 관리 코드를 호출하거나 어떤 식으로든 관리 메모리 할당을 유발해서는 안 됩니다.
요구 사항
플랫폼:시스템 요구 사항을 참조하세요.
헤더: CorProf.idl
라이브러리: CorGuids.lib
.NET Framework 버전: 2.0부터 사용 가능
참고 항목
.NET