Partilhar via


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

Ver também