Compartir a través de


IMetaDataEmit::GetSaveSize Method

Obtiene el tamaño binario estimado del ensamblado y sus metadatos en el ámbito actual.

Syntax

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

Parameters

fSave [in] Valor de la enumeración CorSaveSize que especifica si se debe obtener un tamaño preciso o aproximado. Solo tres valores son válidos: cssAccurate, cssQuick y cssDiscardTransientCAs:

  • cssAccurate devuelve el tamaño de ahorro exacto, pero tarda más tiempo en calcularse.

  • cssQuick devuelve un tamaño, rellenado para la seguridad, pero tarda menos tiempo en calcularse.

  • cssDiscardTransientCAs indica GetSaveSize que puede descartar atributos personalizados descartables.

pdwSaveSize [out] Puntero al tamaño necesario para guardar el archivo.

Remarks

GetSaveSize calcula el espacio necesario, en bytes, para guardar el ensamblado y todos sus metadatos en el ámbito actual. (Una llamada al método IMetaDataEmit::SaveToStream emitiría este número de bytes).

Si el autor de la llamada implementa la interfaz IMapToken (a través de IMetaDataEmit::SetHandler o IMetaDataEmit::Merge), GetSaveSize realizará dos pasos sobre los metadatos para optimizarlo y comprimirlo. De lo contrario, no se realiza ninguna optimización.

Si se realiza la optimización, el primer paso simplemente ordena las estructuras de metadatos para optimizar el rendimiento de las búsquedas en tiempo de importación. Normalmente, este paso da como resultado mover registros, con el efecto secundario de que se invalidan los tokens retenidos por la herramienta para referencia futura. Sin embargo, los metadatos no informan al autor de la llamada de estos cambios del token hasta después del segundo paso. En el segundo paso, se realizan varias optimizaciones destinadas a reducir el tamaño general de los metadatos, como optimizar (enlace anticipado) mdTypeRef y mdMemberRef tokens cuando la referencia es a un tipo o miembro declarado en el ámbito de metadatos actual. En este paso, se produce otra ronda de asignación de tokens. Después de este paso, el motor de metadatos notifica al autor de la llamada, a través de su IMapToken interfaz, de los valores de token modificados.

Requirements

Plataformas: Consulte Sistemas operativos compatibles con .NET.

Header: Cor.h

Library: CorGuids.lib

See also