Compartilhar 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 [in] Um valor da enumeração CorSaveSize que especifica se um tamanho preciso ou aproximado deve ser obtido. Somente três valores são válidos: cssAccurate, cssQuick e cssDiscardTransientCAs:

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

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

  • cssDiscardTransientCAs informa GetSaveSize que ele pode jogar fora atributos personalizados descartados.

pdwSaveSize [out] 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 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á-la e compactá-la. Caso contrário, nenhuma otimização será executada.

Se a otimização for executada, a primeira passagem simplesmente classificará as estruturas de metadados para ajustar o desempenho das pesquisas de 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 após a segunda passagem. Na segunda passagem, são executadas várias otimizações destinadas a reduzir o tamanho geral dos metadados, como otimizar (associação antecipada) mdTypeRef e mdMemberRef tokens quando a referência é para um tipo ou membro que é declarado no escopo de metadados atual. Nessa passagem, ocorre outra rodada de mapeamento de token. Após essa passagem, o mecanismo de metadados notifica o chamador, por meio de sua IMapToken interface, de quaisquer valores de token alterados.

Requirements

Plataformas: Consulte sistemas operacionais com suporte do .NET.

Header: Cor.h

Library: CorGuids.lib

See also