Método ICorDebugSymbolProvider2::GetGenericDictionaryInfo
Obtém um mapa de dicionário genérico.
Sintaxe
HRESULT GetGenericDictionaryInfo(
[out] ICorDebugMemoryBuffer** ppMemoryBuffer
);
Parâmetros
ppMemoryBuffer
[fora] Um ponteiro para o endereço de um objeto ICorDebugMemoryBuffer que contém o mapa de dicionário genérico. Consulte a secção Observações para obter mais informações.
Observações
Nota
Este método está disponível apenas com .NET Native.
O mapa consiste em duas secções de nível superior:
Um diretório que contém os endereços virtuais relativos (RVA) de todos os dicionários incluídos neste mapa.
Uma área dinâmica para dados alinhada com bytes que contém informações de instanciação de objetos. Começa imediatamente após a última entrada de diretório.
O Diretório
Cada entrada no diretório refere-se a um deslocamento dentro da área dinâmica para dados; ou seja, é um desvio relativo ao início da área dinâmica para dados. O valor das entradas individuais não é necessariamente exclusivo; é possível que várias entradas de diretório apontem para o mesmo desvio na área dinâmica para dados.
A parte do diretório do mapa genérico do dicionário tem a seguinte estrutura:
Os primeiros 4 bytes contêm o número de entradas do dicionário (ou seja, o número de endereços virtuais relativos no dicionário). Vamos referir-nos a este valor como N. Se o bit alto estiver definido, as entradas são ordenadas por endereço virtual relativo por ordem ascendente.
Seguem-se as entradas de diretório N . Cada entrada consiste em 8 bytes, em dois segmentos de 4 bytes:
Bytes 0-3: RVA; o endereço virtual relativo do dicionário.
Bytes 4-7: Desvio; um desvio relativo ao início da área dinâmica para dados.
A Área Dinâmica para Dados
O tamanho da área dinâmica para dados pode ser calculado por um leitor de fluxo ao subtrair o comprimento do fluxo do tamanho do diretório + 4. Por outras palavras:
Heap Size = Stream.Length – (Directory Size + 4)
em que o tamanho do diretório é N * 8
.
O formato para cada item de informação de instanciação na área dinâmica para dados é:
O comprimento deste item de informação de instanciação em bytes no formato de metadados ECMA comprimidos. O valor exclui estas informações de comprimento.
O número de tipos genéricos de instanciação, ou T, no formato de metadados ECMA comprimidos.
Tipos T , cada um representado no formato de assinatura do tipo ECMA.
A inclusão do comprimento de cada elemento de área dinâmica para dados permite uma ordenação simples da secção do diretório sem afetar a área dinâmica para dados.
Requisitos
Plataformas: Veja Requisitos de Sistema.
Cabeçalho: CorDebug.idl, CorDebug.h
Biblioteca: CorGuids.lib
Versões do .NET Framework: disponível desde a versão 4.6, apenas .NET Native