IMetaDataEmit::GetSaveSize Method

Získá odhadovanou binární velikost sestavení a jeho metadata v aktuálním oboru.

Syntax

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

Parameters

fSave [v] Hodnota výčtu CorSaveSize , která určuje, jestli se má získat přesná nebo přibližná velikost. Platné jsou pouze tři hodnoty: cssAccurate, cssQuick a cssDiscardTransientCAs:

  • CssAccurate vrátí přesnou velikost uložení, ale výpočet trvá déle.

  • CssQuick vrátí velikost, paddded pro bezpečnost, ale trvá méně času k výpočtu.

  • CssDiscardTransientCAs říká GetSaveSize , že může zahodit zahozené vlastní atributy.

pdwSaveSize [ven] Ukazatel na velikost, která je nutná k uložení souboru.

Remarks

GetSaveSize vypočítá požadované místo v bajtech k uložení sestavení a všech jeho metadat v aktuálním oboru. (Volání metody IMetaDataEmit::SaveToStream by vygenerovalo tento počet bajtů.)

Pokud volající implementuje rozhraní IMapToken (prostřednictvím IMetaDataEmit::SetHandler nebo IMetaDataEmit::Merge), GetSaveSize provede dvě předávání metadat pro optimalizaci a komprimaci. V opačném případě se neprovedou žádné optimalizace.

Pokud se provede optimalizace, první předání jednoduše seřadí struktury metadat a vyladí výkon hledání v čase importu. Tento krok obvykle vede k přesouvání záznamů s vedlejším účinkem, který tokeny zachované nástrojem pro budoucí odkazy zneplatní. Metadata neinformují volajícího o těchto změnách tokenů, dokud však po druhém průchodu neinformuje. Ve druhém průchodu se provádějí různé optimalizace, které mají snížit celkovou velikost metadat, například optimalizovat pryč (časnou vazbu) mdTypeRef a mdMemberRef tokeny, pokud je odkaz na typ nebo člen, který je deklarován v aktuálním oboru metadat. V tomto průchodu dojde k dalšímu kolo mapování tokenů. Po tomto předání modul metadat volajícímu prostřednictvím rozhraní IMapToken oznámí všechny změněné hodnoty tokenu.

Requirements

Platformy: Viz podporované operační systémy .NET.

Header: Cor.h

Library: CorGuids.lib

See also