共用方式為


ICorProfilerInfo4::GetILToNativeMapping2 方法

從通用中繼語言 (CIL) 位移取得對應到指定函式 JIT 重新編譯版本中所含程式代碼的原生位移。

語法

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]包含程式代碼之函式的識別碼。

pReJitId [in]JIT 重新編譯函式的身分識別。 .NET Framework 4.5 中的身分識別必須是零。

cMap [in]數位大小 map 上限。

pcMap [out]可用COR_DEBUG_IL_TO_NATIVE_MAP結構的總數。

map [out]結構的陣列 COR_DEBUG_IL_TO_NATIVE_MAP ,每個都會指定位移。 GetILToNativeMapping2 方法傳回之後,map 將會包含部分或所有 COR_DEBUG_IL_TO_NATIVE_MAP 結構。

備註

GetILToNativeMapping2 類似於 ICorProfilerInfo::GetILToNativeMapping 方法,不同之處在於它會允許分析工具在未來版本中指定重新編譯函式的標識碼。

注意

ICorProfilerFunctionControl::SetILInstrumentedCodeMap 方法不會在 .NET Framework 4.5 中實作,因此已重新編譯的函式不能有與原始編譯函式不同的 IL 對原生對應。 因此, GetILToNativeMapping2 無法在 .NET Framework 4.5 中使用非零 JIT 重新編譯標識符來呼叫。

GetILToNativeMapping2 方法會傳回 COR_DEBUG_IL_TO_NATIVE_MAP 結構的陣列。 為了傳達特定範圍的原生指令對應至特殊程式代碼區域(例如,初構),陣列中的專案可以將其ilOffset欄位設定為 CorDebugIlToNativeMappingTypes 列舉的值

GetILToNativeMapping2 傳回之後,您必須確認 map 緩衝區夠大,可以包含所有 COR_DEBUG_IL_TO_NATIVE_MAP 結構。 若要這樣做,請比較 cMap 的值與 pcMap 參數的值。 如果 pcMap 值乘以 COR_DEBUG_IL_TO_NATIVE_MAP 結構的大小之後大於 cMap,請配置較大的 map 緩衝區,以新的較大大小更新 cMap,然後重新呼叫 GetILToNativeMapping2

或者,您也可以先使用長度為零的 map 緩衝區來呼叫 GetILToNativeMapping2,以取得正確的緩衝區大小。 接著您就可以將緩衝區大小設定為 pcMap 中傳回的值,並再次呼叫 GetILToNativeMapping2

需求

平台:請參閱系統需求

標頭: CorProf.idl、CorProf.h

程式庫:CorGuids.lib

.NET Framework 版本: 自 4.5 起提供

另請參閱