IMetaDataEmit::GetSaveSize メソッド
現在のスコープ内のアセンブリとメタデータの推定バイナリ サイズを取得します。
HRESULT GetSaveSize (
[in] CorSaveSize fSave,
[out] DWORD *pdwSaveSize
);
パラメーター
fSave
[入力] 正確なサイズとおおよそのサイズのどちらを取得するかを指定する CorSaveSize 列挙体の値。 有効な値は、cssAccurate、cssQuick、および cssDiscardTransientCAs の 3 つだけです。cssAccurate は正確な保存サイズを返しますが、計算に時間がかかります。
cssQuick は、安全策をとって追加を行ったサイズを返しますが、計算時間が短くなります。
cssDiscardTransientCAs は、破棄できるカスタム属性を破棄してかまわないことを GetSaveSize に指示します。
pdwSaveSize
[出力] ファイルの保存に必要なサイズへのポインター。
解説
GetSaveSize は、現在のスコープ内のアセンブリとそのメタデータのすべてを保存するために必要な領域をバイト単位で計算します。 IMetaDataEmit::SaveToStream メソッドの呼び出しにより、このバイト数が生成される可能性もあります。
呼び出し元が IMetaDataEmit::SetHandler または IMetaDataEmit::Merge によって IMapToken インターフェイスを実装する場合、GetSaveSize はメタデータに対して 2 回の操作を実行して最適化と圧縮を行います。 それ以外の場合、最適化は行われません。
最適化が実行されると、最初の操作ではメタデータ構造が単純に並べ替えられ、インポート時の検索のパフォーマンスが調整されます。 この手順により、通常はレコードが移動され、副作用として、次回の参照用にツールが保持しているトークンが無効になります。 ただし、2 番目の操作が実行されるまで、メタデータはこのトークンの変更を呼び出し元に通知しません。 2 番目の操作では、メタデータの全体のサイズを小さくするためのさまざまな最適化が行われます。たとえば、参照先が現在のメタデータ スコープで宣言されている型またはメンバーの場合、mdTypeRef トークンおよび mdMemberRef トークンが最適化によって除外されます (事前バインディング)。 この操作で、トークンの割り当てがさらにひととおり行われます。 この操作の後、メタデータ エンジンは IMapToken インターフェイスを介して、変更されたトークン値を呼び出し元に通知します。
必要条件
プラットフォーム : 「.NET Framework システム要件」を参照
ヘッダー : Cor.h
ライブラリ : MSCorEE.dll でリソースとして使用されていること
.NET Framework のバージョン : 4、3.5 SP1、3.5、3.0 SP1、3.0、2.0 SP1、2.0、1.1