Partilhar via


IMetaDataEmit::GetSaveSize Method

Obtém o tamanho binário estimado do assembly e seus metadados no escopo atual.

Syntax

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

Parameters

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

  • cssAccurate retorna o tamanho exato de salvamento, mas leva mais tempo para calcular.

  • cssQuick retorna um tamanho, acolchoado para segurança, mas leva menos tempo para calcular.

  • cssDiscardTransientCAs diz GetSaveSize que pode jogar fora atributos personalizados descartáveis.

pdwSaveSize [saídas] Um ponteiro para o tamanho necessário para salvar o arquivo.

Remarks

GetSaveSize Calcula o espaço necessário, em bytes, para salvar o assembly e todos os seus metadados no escopo atual. (Uma chamada para o método IMetaDataEmit::SaveToStream emitiria esse número de bytes.)

Se o chamador implementar a interface IMapToken (por meio de IMetaDataEmit::SetHandler ou IMetaDataEmit::Merge), GetSaveSize executará duas passagens sobre os metadados para otimizá-los e compactá-los. Caso contrário, nenhuma otimização será executada.

Se a otimização for executada, a primeira passagem simplesmente classifica as estruturas de metadados para ajustar o desempenho das pesquisas em tempo de importação. Essa etapa normalmente resulta na movimentação de registros, com o efeito colateral de que os tokens retidos pela ferramenta para referência futura são invalidados. No entanto, os metadados não informam o chamador dessas alterações de token até depois da segunda passagem. Na segunda passagem, várias otimizações são realizadas com o objetivo de reduzir o tamanho geral dos metadados, como otimização (vinculação antecipada) mdTypeRef e mdMemberRef tokens quando a referência é a um tipo ou membro declarado no escopo de metadados atual. Nesta passagem, ocorre outra rodada de mapeamento de tokens. Após essa passagem, o mecanismo de metadados notifica o chamador, por meio de sua IMapToken interface, sobre quaisquer valores de token alterados.

Requirements

Plataformas: Consulte Sistemas operacionais suportados pelo .NET.

Header: Cor.h

Library: CorGuids.lib

See also