Partilhar via


Método IMetaDataEmit::GetSaveSize

Obtém o tamanho binário estimado da assemblagem e os respetivos metadados no âmbito atual.

Sintaxe

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

Parâmetros

fSave
[in] Um valor da enumeração CorSaveSize que especifica se pretende obter um tamanho preciso ou aproximado. Apenas três valores são válidos: cssAccurate, cssQuick e cssDiscardTransientCAs:

  • cssAccurate devolve o tamanho de poupança exato, mas demora mais tempo a calcular.

  • cssQuick devolve um tamanho, acolchoado por segurança, mas demora menos tempo a calcular.

  • cssDiscardTransientCAs indica GetSaveSize que pode deitar fora atributos personalizados elimináveis.

pdwSaveSize
[fora] Um ponteiro para o tamanho necessário para guardar o ficheiro.

Observações

GetSaveSize calcula o espaço necessário, em bytes, para guardar a assemblagem e todos os metadados no âmbito atual. (Uma chamada para o método IMetaDataEmit::SaveToStream emitiria este número de bytes.)

Se o autor da chamada implementar a interface IMapToken (através de IMetaDataEmit::SetHandler ou IMetaDataEmit::Merge), GetSaveSize efetuará dois passes sobre os metadados para o otimizar e comprimir. Caso contrário, não são realizadas otimizações.

Se a otimização for realizada, o primeiro passe ordena simplesmente as estruturas de metadados para otimizar o desempenho das pesquisas de tempo de importação. Normalmente, este passo resulta na movimentação de registos, com o efeito colateral de que os tokens retidos pela ferramenta para referência futura são invalidados. No entanto, os metadados só informam o autor da chamada destas alterações de token após a segunda passagem. No segundo passe, são realizadas várias otimizações que se destinam a reduzir o tamanho geral dos metadados, como otimizar (enlace antecipado) mdTypeRef e mdMemberRef tokens quando a referência se destina a um tipo ou membro declarado no âmbito de metadados atual. Neste passe, ocorre outra ronda de mapeamento de tokens. Após esta passagem, o motor de metadados notifica o autor da chamada, através da respetiva IMapToken interface, de quaisquer valores de token alterados.

Requisitos

Plataformas: Veja Requisitos do Sistema.

Cabeçalho: Cor.h

Biblioteca: Utilizado como recurso no MSCorEE.dll

.NET Framework Versões: Disponível desde a 1.1

Ver também