Dela via


ICorProfilerInfo4::GetILToNativeMapping2-metod

Hämtar en karta från CIL-förskjutningar (Common Intermediate Language) till inbyggda förskjutningar för koden som finns i den JIT-omkompilerade versionen av den angivna funktionen.

Syntax

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[]);

Parametrar

functionId [i] ID:t för funktionen som innehåller koden.

pReJitId [i] Identiteten för den JIT-omkompilerade funktionen. Identiteten måste vara noll i .NET Framework 4.5.

cMap [i] Matrisens map maximala storlek.

pcMap [ut] Det totala antalet tillgängliga COR_DEBUG_IL_TO_NATIVE_MAP strukturer.

map [ut] En matris med COR_DEBUG_IL_TO_NATIVE_MAP strukturer som var och en anger förskjutningarna. GetILToNativeMapping2 När metoden har returnerats map innehåller den vissa eller alla COR_DEBUG_IL_TO_NATIVE_MAP strukturer.

Kommentarer

GetILToNativeMapping2 liknar metoden ICorProfilerInfo::GetILToNativeMapping , förutom att profileraren kan ange ID:t för den omkompilerade funktionen i framtida versioner.

Kommentar

Metoden ICorProfilerFunctionControl::SetILInstrumentedCodeMap implementeras inte i .NET Framework 4.5, så funktioner som har JIT-omkompilerats kan inte ha en IL-till-intern mappning som skiljer sig från den ursprungligen kompilerade funktionen. Det går därför GetILToNativeMapping2 inte att anropa med ett JIT-omkompilerat ID som inte är noll i .NET Framework 4.5.

Metoden GetILToNativeMapping2 returnerar en matris med COR_DEBUG_IL_TO_NATIVE_MAP strukturer. För att förmedla att vissa intervall med inbyggda instruktioner motsvarar särskilda kodregioner (till exempel prolog) kan en post i matrisen ha sitt ilOffset fält inställt på värdet cordebugIlToNativeMappingTypes-uppräkning .

När GetILToNativeMapping2 du har returnerat den måste du kontrollera att bufferten map var tillräckligt stor för att innehålla alla COR_DEBUG_IL_TO_NATIVE_MAP strukturer. Det gör du genom att jämföra värdet cMap för med värdet för parametern pcMap . pcMap Om värdet, när det multipliceras med storleken på en COR_DEBUG_IL_TO_NATIVE_MAP struktur, är större än cMapallokerar du en större map buffert, uppdaterar cMap med den nya, större storleken och anropar GetILToNativeMapping2 igen.

Du kan också först anropa GetILToNativeMapping2 med en buffert med noll längd map för att få rätt buffertstorlek. Du kan sedan ange buffertstorleken till det värde som returneras och pcMap anropa GetILToNativeMapping2 igen.

Krav

Plattformar: Se Systemkrav.

Rubrik: CorProf.idl, CorProf.h

Bibliotek: CorGuids.lib

.NET Framework-versioner: Finns sedan 4.5

Se även