IMetaDataEmit::GetSaveSize 方法
更新:2007 年 11 月
在目前範圍中取得預估的組件及其中繼資料的二進位大小。
HRESULT GetSaveSize (
[in] CorSaveSize fSave,
[out] DWORD *pdwSaveSize
);
參數
fSave
[in] CorSaveSize 列舉型別的值,指定要取得精確或約略的大小。只有三個值是有效的:cssAccurate、cssQuick 和 cssDiscardTransientCAs:cssAccurate 會傳回確切的儲存大小,但會花較長的時間計算。
cssQuick 會傳回基於安全理由而填補的大小,但會花較少的時間計算。
cssDiscardTransientCAs 會告知 GetSaveSize,它可以丟掉可捨棄的自訂屬性。
pdwSaveSize
[out] 為儲存此檔案所需的大小指標。
備註
GetSaveSize 會以位元組為單位,計算目前範圍中儲存此組件及其所有中繼資料所需的空間 (呼叫 IMetaDataEmit::SaveToStream 方法會發出此位元組數目)。
如果呼叫端實作 IMapToken 介面 (透過 IMetaDataEmit::SetHandler 或 IMetaDataEmit::Merge),GetSaveSize 將會對中繼資料執行兩次傳遞,以最佳化及壓縮該中繼資料。否則不會執行最佳化。
如果執行最佳化,第一個行程只是排序中繼資料結構,以調整匯入時期搜尋的效能。這個步驟一般會導致記錄四處移動,而且造成工具保留供未來參考的語彙基元失效的副作用。但中繼資料直到第二個行程才會向呼叫端告知這些語彙基元變更。在第二個行程中,會執行各種用來減少中繼資料整體大小的最佳化,例如,當參考目前中繼資料範圍中所宣告的型別或成員時,最佳化改變 (早期繫結) mdTypeRef 和 mdMemberRef 語彙基元。在這個行程中,會發生另一回合的語彙基元對應。在這個行程之後,中繼資料引擎會向呼叫端告知 (透過其 IMapToken 介面) 任何已變更的語彙基元值。
需求
**平台:**請參閱 .NET Framework 系統需求。
**標頭:**Cor.h
**程式庫:**當做 MSCorEE.dll 中的資源使用
**.NET Framework 版本:**3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1