FunctionEnter2 함수
업데이트: 2010년 10월
컨트롤이 함수에 전달되고 있음을 프로파일러에 알리고 스택 프레임 및 함수 인수에 대한 정보를 제공합니다. 이 함수는 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 메서드를 사용하여 이벤트 플래그를 설정할 수 있습니다.
설명
값이 변경되거나 제거될 수 있으므로 FunctionEnter2 함수가 반환된 후에는 func 및 argumentInfo 매개 변수의 값이 유효하지 않습니다.
FunctionEnter2 함수는 구현해야 하는 콜백 함수입니다. __declspec(naked) 저장소 클래스 특성을 사용하여 구현해야 합니다.
이 함수를 호출해야 실행 엔진에서 레지스터를 저장합니다.
시작할 때 FPU(부동 소수점 단위)의 레지스터를 포함하여 사용하는 모든 레지스터를 저장해야 합니다.
종료할 때 호출자에 의해 푸시되는 모든 매개 변수를 팝하여 스택을 복원해야 합니다.
가비지 수집이 지연될 수 있으므로 FunctionEnter2 구현이 차단되지 않아야 합니다. 스택이 가비지를 수집하기에 좋은 상태가 아닐 수 있으므로 구현에서는 가비지 수집을 시도하지 않아야 합니다. 가비지 수집이 시도될 경우 FunctionEnter2가 반환될 때까지 런타임이 차단됩니다.
또한 FunctionEnter2 함수에서 관리 코드를 호출하거나 관리되는 메모리를 할당해서는 안 됩니다.
요구 사항
플랫폼: .NET Framework 시스템 요구 사항 참조
헤더: CorProf.idl
라이브러리: CorGuids.lib
.NET Framework 버전: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0
참고 항목
참조
ICorProfilerInfo2::SetEnterLeaveFunctionHooks2 메서드
기타 리소스
변경 기록
날짜 |
변경 내용 |
이유 |
---|---|---|
2010년 10월 |
__stdcall을 구문에 추가했습니다. |
고객 의견 |