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 cMap
com 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