Partager via


Méthode ICorDebugSymbolProvider2::GetGenericDictionaryInfo

Récupère un mappage de dictionnaire générique.

Syntaxe

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

Paramètres

ppMemoryBuffer
[out] Pointeur vers l’adresse d’un objet ICorDebugMemoryBuffer contenant le mappage de dictionnaire générique. Pour plus d'informations, consultez la section Notes.

Notes

Notes

Cette méthode est uniquement disponible avec .NET Native.

Le mappage se compose de deux sections de niveau supérieur :

  • Un répertoire contenant les adresses virtuelles relatives (RVA) de tous les dictionnaires inclus dans ce mappage.

  • Un tas aligné sur un octet qui contient des informations d’instanciation d’objet. Il commence immédiatement après la dernière entrée du répertoire.

Répertoire

Chaque entrée du répertoire fait référence à un offset dans le tas, c'est-à-dire un offset par rapport au début du tas. La valeur d'entrées individuelles n'est pas nécessairement unique : il est possible que plusieurs entrées de répertoire pointent vers le même offset dans le tas.

La structure de la partie répertoire du mappage de dictionnaire générique est la suivante :

  • Les 4 premiers octets contiennent le nombre d'entrées de dictionnaire (c'est-à-dire le nombre d'adresses virtuelles relatives dans le dictionnaire). Appelons cette valeur N. Si le bit de poids fort est défini, les entrées sont triées par ordre croissant des adresses virtuelles relatives.

  • Viennent ensuite les N entrées de répertoire. Chaque entrée se compose de 8 octets dans deux segments de 4 octets :

    • Octets 0-3 : adresse RVA (adresse virtuelle relative du dictionnaire)

    • Octets 4-7 : offset (offset par rapport au début du tas)

Tas

La taille du tas peut être calculée par un lecteur de flux en soustrayant la longueur du flux de la taille du répertoire + 4. En d’autres termes :

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

où la taille du répertoire est N * 8.

Le format de chaque élément d'informations d'instanciation sur le tas est le suivant :

  • La longueur de cet élément d'informations d'instanciation en octets au format de métadonnées ECMA compressé. La valeur exclut ces informations de longueur.

  • Le nombre de types d’instanciation générique, ou T, au format de métadonnées ECMA compressé.

  • Les types T qui sont chacun représentés au format de signature de type ECMA.

L'inclusion de la longueur de chaque élément de tas permet d'effectuer un tri simple de la section répertoire sans affecter le tas.

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : CorDebug.idl, CorDebug.h

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 4.6, .NET Native uniquement

Voir aussi