共用方式為


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::SetHandlerIMetaDataEmit::Merge),GetSaveSize 將會對中繼資料執行兩次傳遞,以最佳化及壓縮該中繼資料。否則不會執行最佳化。

如果執行最佳化,第一個行程只是排序中繼資料結構,以調整匯入時期搜尋的效能。這個步驟一般會導致記錄四處移動,而且造成工具保留供未來參考的語彙基元失效的副作用。但中繼資料直到第二個行程才會向呼叫端告知這些語彙基元變更。在第二個行程中,會執行各種用來減少中繼資料整體大小的最佳化,例如,當參考目前中繼資料範圍中所宣告的型別或成員時,最佳化改變 (早期繫結) mdTypeRefmdMemberRef 語彙基元。在這個行程中,會發生另一回合的語彙基元對應。在這個行程之後,中繼資料引擎會向呼叫端告知 (透過其 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

請參閱

參考

IMetaDataEmit

IMetaDataEmit2