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 以降で使用可能
関連項目
.NET