ICorDebugSymbolProvider2::GetGenericDictionaryInfo 方法

擷取泛型字典對應。

語法

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

參數

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

備註

注意

這個方法僅適用於 .NET Native。

對應是由兩個最上層區段所組成:

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

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

目錄

目錄中的每個項目是指堆積中的位移,也就是相對於堆積開頭的位移。 個別項目的值不一定是唯一的,可能會有多個目錄項目指向堆積中的同一個位移。

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

  • 前 4 個位元組包含字典項目數 (也就是字典中的相對虛擬位址數目)。 我們會將此值視為 N。如果設定高位元,項目會依相對虛擬位址的遞增順序排序。

  • 後面接著 N 個目錄項目。 每個項目是由兩個 4 位元組區段中的 8 個位元組所組成:

    • 位元組 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

另請參閱