Share via


IMetaDataEmit::GetSaveSize メソッド

現在のスコープ内のアセンブリとそのメタデータの推定バイナリ サイズを取得します。

構文

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

パラメーター

fSave
[in] 正確またはおおよそのサイズを取得するかどうかを指定する CorSaveSize 列挙型の値。 有効な値は、cssAccurate、cssQuick、cssDiscardTransientCAs の 3 つだけです。

  • cssAccurate は正確な保存サイズを返しますが、計算にかかる時間は長くなります。

  • cssQuick は、安全のためにパディングされたサイズを返しますが、計算にかかる時間は短くなります。

  • cssDiscardTransientCAs は、破棄可能なカスタム属性を破棄できることを GetSaveSize に示します。

pdwSaveSize
[out] ファイルを保存するために必要なサイズへのポインター。

解説

GetSaveSize では、現在のスコープ内のアセンブリとそのすべてのメタデータを保存するために必要な領域をバイト単位で計算します。 (IMetaDataEmit::SaveToStream メソッドへの呼び出しにより、このバイト数が出力されます)。

呼び出し元が IMapToken インターフェイス (IMetaDataEmit::SetHandler または IMetaDataEmit::Merge による) を実装している場合、 GetSaveSize によりメタデータに対して 2 つのパスが実行され、最適化および圧縮されます。 それ以外の場合、最適化は実行されません。

最適化が実行された場合、最初のパスは単にメタデータ構造を並べ替えて、インポート時の検索のパフォーマンスを調整します。 通常、このステップではレコードを移動することになります。後で参照するためにツールによって保持されているトークンが無効になるという副作用があります。 ただし、2 番目のパスの後まではメタデータからこれらのトークンの変更が呼び出し元に通知されません。 2 番目のパスでは、現在のメタデータ スコープ内で宣言されている型またはメンバーへの参照である場合の mdTypeRef および mdMemberRef トークンの最適化 (事前バインディング) など、メタデータの全体的なサイズを減らすさまざまな最適化が実行されます。 このパスでは、別のトークン マッピングのラウンドが発生します。 このパスの後、メタデータ エンジンから IMapToken インターフェイスを介して呼び出し元に変更されたトークン値が通知されます。

必要条件

:システム要件」を参照してください。

ヘッダー: Cor.h

ライブラリ: MSCorEE.dll でリソースとして使用されます

.NET Framework のバージョン: 1.1 以降で使用可能

関連項目