Metodo ICorDebugSymbolProvider2::GetGenericDictionaryInfo

Recupera una mappa di dizionari generici.

Sintassi

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

Parametri

ppMemoryBuffer
[out] Puntatore all'indirizzo di un oggetto ICorDebugMemoryBuffer contenente la mappa del dizionario generico. Per altre informazioni, vedere la sezione Osservazioni.

Commenti

Nota

Questo metodo è disponibile solo con .NET Native.

La mappa è costituita da due sezioni di primo livello:

  • Directory contenente gli indirizzi virtuali relativi di tutti i dizionari inclusi in questa mappa.

  • Heap allineato a byte che contiene informazioni sull'istanza dell'oggetto. Viene avviato immediatamente dopo l'ultima voce di directory.

Directory

Ogni voce nella directory fa riferimento a un offset all'interno dell'heap, ovvero un offset relativo all'inizio dell'heap. Il valore delle singole voci non è necessariamente univoco. Più voci di directory possono puntare allo stesso offset nell'heap.

La parte directory della mappa di dizionari generici presenta la struttura seguente:

  • I primi 4 byte contengono il numero di voci del dizionario, cioè il numero di indirizzi RVA (Relative Virtual Address) presenti nel dizionario. Verrà fatto riferimento a questo valore come N. Se il bit elevato è impostato, le voci vengono ordinate in base all'indirizzo virtuale relativo in ordine crescente.

  • Le voci della directory N seguono. Ogni voce è costituita da 8 byte in due segmenti di 4 byte:

    • Byte da 0 a 3: RVA, ovvero l'indirizzo RVA (Relative Virtual Address) del dizionario.

    • Byte da 4 a 7: Offset, ovvero un offset relativo all'inizio dell'heap.

Heap

È possibile calcolare le dimensioni dell'heap tramite un lettore del flusso, sottraendo la lunghezza del flusso dalle dimensioni della directory + 4. In altre parole:

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

dove le dimensioni della directory corrispondono a N * 8.

Il formato di ogni elemento delle informazioni sull'heap è il seguente:

  • Lunghezza in byte di questo elemento di informazioni sulla creazione di un'istanza, nel formato di metadati ECMA compresso. Il valore esclude le informazioni sulla lunghezza.

  • Numero di tipi di creazione di istanze generici o T in formato di metadati ECMA compressi.

  • Tipi T , ognuno rappresentato in formato di firma del tipo ECMA.

L'inclusione della lunghezza per ogni elemento dell'heap consente un ordinamento semplice della sezione della directory senza influire sull'heap.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorDebug.idl, CorDebug.h

Libreria: CorGuids.lib

Versioni di .NET Framework: Disponibile solo dalla versione 4.6, .NET Native

Vedi anche