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 起提供