現在のスコープ内のアセンブリとそのメタデータの推定バイナリ サイズを取得します。
Syntax
HRESULT GetSaveSize (
[in] CorSaveSize fSave,
[out] DWORD *pdwSaveSize
);
Parameters
fSave [in]正確なサイズまたはおおよそのサイズを取得するかどうかを指定する CorSaveSize 列挙体の値。 有効な値は、cssAccurate、cssQuick、cssDiscardTransientCA の 3 つだけです。
cssAccurate は正確な保存サイズを返しますが、計算に時間がかかります。
cssQuick は、安全のために埋め込まれたサイズを返しますが、計算にかかる時間は短くなります。
cssDiscardTransientCAs は、破棄可能なカスタム属性を破棄できることを
GetSaveSizeに通知します。
pdwSaveSize [out]ファイルを保存するために必要なサイズへのポインター。
Remarks
GetSaveSize は、アセンブリとそのすべてのメタデータを現在のスコープに保存するために必要な領域をバイト単位で計算します。 ( IMetaDataEmit::SaveToStream メソッドを呼び出すと、このバイト数が出力されます)。
呼び出し元が IMapToken インターフェイスを実装する場合 ( IMetaDataEmit::SetHandler または IMetaDataEmit::Merge を使用)、 GetSaveSize はメタデータを 2 回渡して最適化および圧縮します。 それ以外の場合、最適化は実行されません。
最適化が実行された場合、最初のパスはメタデータ構造を単純に並べ替えて、インポート時検索のパフォーマンスを調整します。 通常、この手順によりレコードが移動され、将来の参照のためにツールによって保持されるトークンが無効になるという副作用が生じます。 ただし、メタデータは、2 番目のパスの後まで、これらのトークンの変更を呼び出し元に通知しません。 2 番目のパスでは、メタデータの全体的なサイズを小さくすることを目的としたさまざまな最適化が実行されます。たとえば、現在のメタデータ スコープで宣言されている型またはメンバーへの参照である場合は、 mdTypeRef の最適化 (早期バインディング) や mdMemberRef トークンなどです。 このパスでは、トークン マッピングの別のラウンドが発生します。 このパスの後、メタデータ エンジンは、 IMapToken インターフェイスを介して、変更されたトークン値を呼び出し元に通知します。
Requirements
プラットフォーム:サポートされている .NET オペレーティング システムを参照してください。
Header: Cor.h
Library: CorGuids.lib
See also
.NET