Compartilhar via


Método ICorDebugSymbolProvider2::GetGenericDictionaryInfo

Recupera um mapa de dicionário genérico.

Sintaxe

HRESULT GetGenericDictionaryInfo(
   [out] ICorDebugMemoryBuffer** ppMemoryBuffer
);

Parâmetros

ppMemoryBuffer
[out] Um ponteiro para o endereço de um objeto ICorDebugMemoryBuffer que contém o mapa de dicionário genérico. Consulte a seção Comentários para obter mais informações.

Observações

Observação

Esse método está disponível apenas com o .NET Native.

O mapa consiste em duas seções de nível superior:

  • Um diretório que contém os RVA (endereços virtuais relativos) de todos os dicionários incluídos neste mapa.

  • Um heap alinhado a bytes que contém informações de instanciação de objeto. Ele é iniciado imediatamente após a última entrada de diretório.

O diretório

Cada entrada no diretório refere-se a um deslocamento dentro do heap; ou seja, é um deslocamento relativo ao início do heap. O valor das entradas individuais não é necessariamente exclusivo; é possível que várias entradas de diretório apontem para o mesmo deslocamento no heap.

A parte do diretório do mapa de dicionário genérico tem a seguinte estrutura:

  • Os primeiros 4 bytes contêm o número de entradas de dicionário (ou seja, o número de endereços virtuais relativos no dicionário). Vamos nos referir a esse valor como N. Se o bit alto estiver definido, as entradas serão classificadas por endereço virtual relativo em ordem crescente.

  • As entradas do diretório N seguem. 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: Deslocamento; um deslocamento relativo ao início do heap.

O heap

O tamanho do heap pode ser calculado por um leitor de fluxo subtraindo o comprimento do fluxo do tamanho do diretório + 4. Em outras palavras:

Heap Size = Stream.Length – (Directory Size + 4)

onde o tamanho do diretório é N * 8.

O formato para cada item de informações de instanciação no heap é:

  • O comprimento desse item de informações de instanciação em bytes no formato de metadados ECMA compactados. O valor exclui essas informações de comprimento.

  • O número de tipos genéricos de instanciação, ou T, no formato de metadados ECMA compactados.

  • Tipos T , cada um representado no formato de assinatura de tipo ECMA.

A inclusão do comprimento para cada elemento heap permite a classificação simples da seção de diretório sem afetar o heap.

Requirements

Plataformas: Consulte sistemas operacionais com suporte do .NET.

Cabeçalho: CorDebug.idl, CorDebug.h

Biblioteca: CorGuids.lib

Versões do .NET: Disponível desde o .NET Framework 4.6

Consulte também