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