检索泛型字典映射。
Syntax
HRESULT GetGenericDictionaryInfo(
[out] ICorDebugMemoryBuffer** ppMemoryBuffer
);
参数
ppMemoryBuffer
[out]指向包含泛型字典映射的 ICorDebugMemoryBuffer 对象的地址的指针。 有关详细信息,请参阅“备注”部分。
注解
注释
此方法仅适用于 .NET Native。
地图由两个顶级部分组成:
目录
目录中的每个条目都引用堆内的偏移量;也就是说,它是相对于堆开始的偏移量。 单个条目的值不一定是唯一的;多个目录条目可能指向堆中的同一偏移量。
泛型字典映射的目录部分具有以下结构:
前 4 个字节包含字典条目数(即字典中的相对虚拟地址数)。 我们将此值称为 N。如果设置了高位,则条目按相对虚拟地址按升序排序。
后面有 N 个目录条目。 每个条目包含 8 个字节,两个 4 字节段:
字节 0-3:RVA;字典的相对虚拟地址。
字节 4-7:偏移量;相对于堆开始的偏移量。
堆
通过从目录大小 + 4 中减去流的长度,流读取器可以计算堆的大小。 换句话说:
Heap Size = Stream.Length – (Directory Size + 4)
其中目录大小为 N * 8.
堆上每个实例化信息项的格式为:
此实例化信息项的长度(以字节为单位)采用压缩的 ECMA 元数据格式。 该值排除此长度信息。
采用压缩 ECMA 元数据格式的泛型实例化类型或 T 的数量。
T 类型,每个类型都以 ECMA 类型签名格式表示。
包含每个堆元素的长度可实现对目录部分的简单排序,而不会影响堆。
要求
平台: 请参阅 .NET 支持的作系统。
页眉: CorDebug.idl、CorDebug.h
图书馆: CorGuids.lib
.NET 版本: 自 .NET Framework 4.6 起可用