共用方式為


ICorDebugSymbolProvider2::GetGenericDictionaryInfo 方法

擷取一般字典對應。

語法

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

參數

ppMemoryBuffer
[出]包含泛型字典對應之 ICorDebugMemoryBuffer 物件位址的指標。 如需詳細資訊,請參閱備註一節。

備註

備註

此方法僅適用於 .NET 原生。

地圖由兩個頂層區段組成:

  • 包含此對映中所有字典的相對虛擬位址 (RVA) 的 目錄

  • 包含物件具現化資訊的位元組對齊 積。 它會在最後一個目錄項目之後立即開始。

目錄

目錄中的每個專案都會參考堆積內的位移量;也就是說,它是相對於堆積開頭的偏移。 個別項目的值不一定是唯一的;多個目錄項目可能會指向堆中的相同位移。

泛型字典對映的目錄部分具有下列結構:

  • 前 4 個位元組包含字典項目的數目 (即字典中的相對虛擬位址數目)。 我們將此值稱為 N。如果設定了高位,則條目將按相對虛擬地址遞增排序。

  • N 個目錄 項目接著。 每一個項目都包含 8 個位元組,分為兩個 4 位元組區段:

    • 位元組 0-3:RVA;字典的相對虛擬位址。

    • 位元組 4-7:偏移量;相對於堆積開頭的位移。

資料堆的大小可以由資料流程讀取器計算,方法是從目錄大小 + 4 中減去資料流程的長度。 換句話說:

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

其中目錄大小為 N * 8

資料堆上每一個實例化資訊項目的格式為:

  • 此實例化資訊項目的長度,以壓縮 ECMA 中繼資料格式為單位,以位元組為單位。 此值會排除此長度資訊。

  • 壓縮 ECMA meta 資料格式中的泛型實例化類型 ( T) 數目。

  • T 型別,每個類型都以 ECMA 型別簽章格式表示。

包含每個堆元素的長度可讓您簡單排序目錄區段,而不會影響堆積。

需求

平台: 請參閱 .NET 支援的作業系統

標題: CorDebug.idl、CorDebug.h

圖書館: CorGuids.lib

.NET 版本: 從 .NET Framework 4.6 開始提供

另請參閱