IMetaDataEmit::GetSaveSize 方法

可取得目前範圍內組件及其中繼資料的估計二進位大小。

語法

HRESULT GetSaveSize (  
    [in]  CorSaveSize fSave,  
    [out] DWORD       *pdwSaveSize  
);  

參數

fSave
[in] CorSaveSize 列舉的值,指定是否要取得精確或近似的大小。 只有三個值有效:cssAccurate、cssQuick 和 cssDiscardTransientCAs:

  • cssAccurate 會傳回確切的儲存大小,但需要較長的計算時間。

  • cssQuick 會傳回大小,以安全方式進行填補,但需要較少的時間來計算。

  • cssDiscardTransientCAs 會告知 GetSaveSize 其可以丟棄可捨棄的自訂屬性。

pdwSaveSize
[out] 儲存檔案所需的大小指標。

備註

GetSaveSize 計算在目前範圍內儲存組件及其所有中繼資料所需的空間,以位元組為單位。 (呼叫 IMetaDataEmit::SaveToStream 方法會發出這個位元組數目。)

如果呼叫端透過 IMetaDataEmit::SetHandlerIMetaDataEmit::Merge 實作 IMapToken 介面,則 GetSaveSize 會對中繼資料執行兩次傳遞,以進行最佳化及壓縮。 否則,不會執行任何最佳化。

如果執行最佳化,第一個傳遞只會排序中繼資料結構,以調整匯入時間搜尋的效能。 此步驟通常會導致記錄四處移動,而工具保留語彙基元以供未來參考的副作用會失效。 不過,直到第二個傳遞之後,中繼資料才會通知呼叫端這些語彙基元的變更。 第二個傳遞會執行各種最佳化,以降低中繼資料的整體大小,例如,當參考是目前中繼資料範圍中宣告的類型或成員時,便會將 mdTypeRefmdMemberRef 語彙基元最佳化 (早期繫結)。 在此傳遞中,會發生另一輪的語彙基元對應。 在此傳遞之後,中繼資料引擎會透過其 IMapToken 介面通知呼叫端任何已變更的語彙基元值。

規格需求

平台:請參閱系統需求

標頭:Cor.h

程式庫:作為 MSCorEE.dll 中的資源使用

.NET Framework版本:自 1.1 起可用

另請參閱