Delen via


Methode ICorDebugSymbolProvider2::GetGenericDictionaryInfo

Hiermee haalt u een algemene woordenlijstkaart op.

Syntaxis

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

Parameters

ppMemoryBuffer
[uit] Een verwijzing naar het adres van een ICorDebugMemoryBuffer-object dat de algemene woordenlijsttoewijzing bevat. Zie de sectie Opmerkingen voor meer informatie.

Opmerkingen

Notitie

Deze methode is alleen beschikbaar met systeemeigen .NET.

De kaart bestaat uit twee secties op het hoogste niveau:

  • Een map met de relatieve virtuele adressen (RVA) van alle woordenlijsten die in deze kaart zijn opgenomen.

  • Een byte-uitgelijnde heap die informatie over de instantiëring van objecten bevat. Deze wordt direct na de laatste mapvermelding gestart.

De map

Elke vermelding in de map verwijst naar een verschuiving in de heap; dat wil gezegd, het is een verschuiving die relatief is ten opzichte van het begin van de heap. De waarde van afzonderlijke vermeldingen is niet noodzakelijkerwijs uniek; het is mogelijk dat meerdere directoryvermeldingen naar dezelfde verschuiving in de heap wijzen.

Het mapgedeelte van de algemene woordenlijsttoewijzing heeft de volgende structuur:

  • De eerste 4 bytes bevatten het aantal woordenlijstvermeldingen (dat wil gezegd, het aantal relatieve virtuele adressen in de woordenlijst). We verwijzen naar deze waarde als N. Als de hoge bit is ingesteld, worden de vermeldingen gesorteerd op relatief virtueel adres in oplopende volgorde.

  • De N-adreslijstvermeldingen volgen. Elke vermelding bestaat uit 8 bytes, in twee segmenten van 4 bytes:

    • Bytes 0-3: RVA; het relatieve virtuele adres van de woordenlijst.

    • Bytes 4-7: Verschuiving; een verschuiving ten opzichte van het begin van de heap.

De heap

De grootte van de heap kan worden berekend door een streamlezer door de lengte van de stream af te trekken van de mapgrootte + 4. Met andere woorden:

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

waarbij de mapgrootte is N * 8.

De indeling voor elk exemplaargegevensitem op de heap is:

  • De lengte van dit instantiegegevensitem in bytes in gecomprimeerde ECMA-metagegevensindeling. De waarde sluit deze lengtegegevens uit.

  • Het aantal algemene instantiëringstypen, of T, in gecomprimeerde ECMA-metagegevensindeling.

  • T-typen , die elk worden weergegeven in de indeling van de ECMA-typehandtekening.

De opname van de lengte voor elk heap-element maakt een eenvoudige sortering van de mapsectie mogelijk zonder dat dit van invloed is op de heap.

Vereisten

Platforms: Zie Systeemvereisten.

Header: CorDebug.idl, CorDebug.h

Bibliotheek: CorGuids.lib

.NET Framework versies: beschikbaar sinds 4.6, alleen systeemeigen .NET

Zie ook