Compartilhar via


Método ICorProfilerInfo4::GetILToNativeMapping2

Obtém um mapa de deslocamentos de linguagem intermediária comum (CIL) para deslocamentos nativos para o código contido na versão recompilada JIT da função especificada.

Sintaxe

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

Parâmetros

functionId [em] A ID da função que contém o código.

pReJitId [in] A identidade da função recompilada por JIT. A identidade precisa ser zero no .NET Framework 4.5.

cMap [in] O tamanho máximo da matriz map.

pcMap [out] O número total de estruturas de COR_DEBUG_IL_TO_NATIVE_MAP disponíveis.

map [saiu] Uma matriz de COR_DEBUG_IL_TO_NATIVE_MAP estruturas, cada uma das quais especifica os deslocamentos. Depois que o método GetILToNativeMapping2 retornar, map conterá algumas das ou todas as estruturas COR_DEBUG_IL_TO_NATIVE_MAP.

Comentários

GetILToNativeMapping2 é semelhante ao método ICorProfilerInfo::GetILToNativeMapping, exceto que ele permitirá que o criador de perfil especifique a ID da função recompilada em versões futuras.

Observação

O método ICorProfilerFunctionControl::SetILInstrumentedCodeMap não é implementado no .NET Framework 4.5, portanto, as funções que foram recompiladas por JIT não podem ter um mapeamento IL para nativo que difere da função originalmente compilada. Dessa forma, GetILToNativeMapping2 não pode ser chamado com uma ID não recompilada por JIT no .NET Framework 4.5.

O método GetILToNativeMapping2 retorna uma matriz de estruturas COR_DEBUG_IL_TO_NATIVE_MAP. Para transmitir que determinados intervalos de instruções nativas correspondem a regiões especiais de código (por exemplo, o diálogo), uma entrada na matriz pode ter seu campo ilOffset definido como um valor da enumeração CorDebugIlToNativeMappingTypes.

Após o retorno de GetILToNativeMapping2, você deverá verificar se o buffer map era grande o suficiente para conter todas as estruturas COR_DEBUG_IL_TO_NATIVE_MAP. Para fazer isso, compare o valor de cMapcom o valor do parâmetro pcMap. Se o valor pcMap, quando for multiplicado pelo tamanho de uma estrutura COR_DEBUG_IL_TO_NATIVE_MAP for maior do que cMap, aloque um buffer map maior, atualize cMap com o novo tamanho maior e chame GetILToNativeMapping2 novamente.

Como alternativa, primeiro você pode chamar GetILToNativeMapping2 com um buffer map de comprimento zero para obter o tamanho correto do buffer. Em seguida, você pode definir o tamanho do buffer como o valor retornado em pcMap e chamar GetILToNativeMapping2 novamente.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versões do .NET Framework: disponíveis desde 4.5

Confira também