Метод ICorDebugSymbolProvider2::GetGenericDictionaryInfo

Получает универсальную карту словаря

Синтаксис

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

Параметры

ppMemoryBuffer
[out] Указатель на адрес объекта ICorDebugMemoryBuffer , содержащего универсальную карту словаря. Дополнительные сведения см. в разделе "Примечания".

Комментарии

Примечание

Этот метод доступен только в машинном коде .NET.

Карта состоит из двух разделов верхнего уровня.

  • Каталог, содержащий относительные виртуальные адреса (RVA) всех словарей, включенных в эту карту.

  • Выровненная по байтам куча , содержащая сведения о создании экземпляра объекта. Она запускается сразу после последней записи каталога.

Каталог

Каждая запись в каталоге ссылается на смещение в куче; то есть это смещение относительно начала кучи. Значения отдельных записей, не обязательно должны быть уникальными; несколько записей каталога могут указывать на одно и то же смещение в куче.

Часть каталога универсальной карты словаря имеет следующую структуру.

  • Первые 4 байта содержит число записей словаря (т. е. число относительных виртуальных адресов в словаре). Мы будем называть это значение N. Если задан высокий бит, записи сортируются по относительному виртуальному адресу в порядке возрастания.

  • Ниже приведены N записей каталога. Каждая запись состоит из 8 байт в двух 4-байтовых сегментах.

    • Байты с 0 по 3: RVA; относительный виртуальный адрес словаря.

    • Байты с 4 по 7: смещение; смещение относительно начала кучи.

Куча

Размер кучи может быть вычислен модулем чтения потока путем вычитания длины потока из размера каталога + 4. Другими словами:

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

где размер каталога равен N * 8.

Формат каждого элемента сведений о создании экземпляра в куче выглядит следующим образом.

  • Длина этого элемента сведений о создании экземпляра в байтах в сжатом формате ECMA метаданных. Значение исключает эти сведения о длине.

  • Число универсальных типов экземпляров ( T) в сжатом формате метаданных ECMA.

  • Типы T, каждый из которых представлен в формате сигнатуры типа ECMA.

Включение длины для каждого элемента кучи позволяет простую сортировку раздела каталога без влияния на кучу.

Требования

Платформы: см. раздел Требования к системе.

Заголовок: CorDebug.idl, CorDebug.h

Библиотека: CorGuids.lib

версии платформа .NET Framework: доступно с версии 4.6, только .NET Native

См. также раздел