ICorProfilerInfo4::GetILToNativeMapping2 메서드

지정된 함수의 JIT 다시 컴파일된 버전에 포함된 코드의 네이티브 오프셋에 대한 CIL(공용 중간 언어) 오프셋에서 네이티브 오프셋으로의 맵을 가져옵니다.

구문

HRESULT GetILToNativeMapping2(
    [in] FunctionID functionId,
    [in] ReJITID reJitId,
    [in] ULONG32 cMap,
    [out] ULONG32 *pcMap,
    [out, size_is(cMap), length_is(*pcMap)]
        COR_DEBUG_IL_TO_NATIVE_MAP map[]);

매개 변수

functionId [in] 코드를 포함하는 함수의 ID입니다.

pReJitId [in] JIT 다시 컴파일된 함수의 ID입니다. ID는 .NET Framework 4.5에서 0이어야 합니다.

cMap [in] 배열의 최대 크기입니다 map .

pcMap [out] 사용 가능한 COR_DEBUG_IL_TO_NATIVE_MAP 구조체의 총 수입니다.

map [out] 각각 오프셋을 지정하는 구조체의 배열 COR_DEBUG_IL_TO_NATIVE_MAP 입니다. GetILToNativeMapping2 메서드가 반환되면 mapCOR_DEBUG_IL_TO_NATIVE_MAP 구조체가 일부 또는 모두 포함됩니다.

설명

이후 릴리스에서 프로파일러가 다시 컴파일된 함수의 ID를 지정할 수 있도록 허용한다는 점을 제외하고 GetILToNativeMapping2ICorProfilerInfo::GetILToNativeMapping 메서드와 비슷합니다.

참고 항목

ICorProfilerFunctionControl::SetILInstrumentedCodeMap 메서드는 .NET Framework 4.5에서 구현되지 않으므로 JIT 다시 컴파일된 함수가 원래 컴파일된 함수와 다른 IL-to-native 매핑을 사용할 수 없습니다. 따라서 .NET Framework 4.5에서는 0이 아닌 JIT 다시 컴파일된 ID를 사용하여 GetILToNativeMapping2를 호출할 수 없습니다.

GetILToNativeMapping2 메서드는 COR_DEBUG_IL_TO_NATIVE_MAP 구조체의 배열을 반환합니다. 특정 범위의 네이티브 명령이 코드의 특수 영역(예: 프롤로그)에 해당함을 전달하기 위해 배열의 항목에 대한 ilOffset 필드가 CorDebugIlToNativeMappingTypes 열거형의 값으로 설정될 수 있습니다.

GetILToNativeMapping2가 반환된 후 map 버퍼가 모든 COR_DEBUG_IL_TO_NATIVE_MAP 구조체를 포함하기에 충분히 큰지 확인해야 합니다. 이렇게 하려면 cMap 값을 pcMap 매개 변수의 값과 비교합니다. COR_DEBUG_IL_TO_NATIVE_MAP 구조체의 크기를 곱한 pcMap 값이 cMap보다 크면 더 큰 map 버퍼를 할당하고 cMap를 더 큰 새 크기로 업데이트한 다음 GetILToNativeMapping2를 다시 호출합니다.

또는 길이가 0인 map 버퍼로 GetILToNativeMapping2를 먼저 호출하여 올바른 버퍼 크기를 구합니다. 그런 다음 버퍼 크기를 pcMap에 반환된 값으로 설정하고 GetILToNativeMapping2을 다시 호출합니다.

요구 사항

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

헤더: CorProf.idl, CorProf.h

라이브러리: CorGuids.lib

.NET Framework 버전: 4.5부터 사용 가능

참고 항목