Share via


Método IMetaDataEmit::GetSaveSize

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

Sintaxe

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

Parâmetros

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

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

  • cssQuick retorna um tamanho, com uma margem de 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.

Comentários

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á-lo e compactá-lo. 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 otimização (associação antecipada) dos tokens mdTypeRef e mdMemberRef quando a referência é para um tipo ou membro 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 interface IMapToken, de quaisquer valores de token alterados.

Requisitos

Plataformas: confira Requisitos do sistema.

Cabeçalho: Cor.h

Biblioteca: usada como um recurso em MSCorEE.dll

Versões do .NET Framework: disponíveis a partir da 1.1

Confira também