Partager via


IMetaDataEmit::GetSaveSize Method

Obtient la taille binaire estimée de l’assembly et de ses métadonnées dans l’étendue actuelle.

Syntax

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

Parameters

fSave [in] Valeur de l’énumération CorSaveSize qui spécifie s’il faut obtenir une taille précise ou approximative. Seules trois valeurs sont valides : cssAccurate, cssQuick et cssDiscardTransientCAs :

  • cssAccurate retourne la taille exacte de l’enregistrement, mais prend plus de temps à calculer.

  • cssQuick retourne une taille, rembourrée pour la sécurité, mais prend moins de temps à calculer.

  • cssDiscardTransientCAs indique GetSaveSize qu’il peut jeter des attributs personnalisés ignorés.

pdwSaveSize [out] Pointeur vers la taille requise pour enregistrer le fichier.

Remarks

GetSaveSize calcule l’espace nécessaire, en octets, pour enregistrer l’assembly et toutes ses métadonnées dans l’étendue actuelle. (Un appel à la méthode IMetaDataEmit ::SaveToStream émettrait ce nombre d’octets.)

Si l’appelant implémente l’interface IMapToken (via IMetaDataEmit ::SetHandler ou IMetaDataEmit ::Merge), GetSaveSize effectue deux passes sur les métadonnées pour l’optimiser et la compresser. Sinon, aucune optimisation n’est effectuée.

Si l’optimisation est effectuée, la première passe trie simplement les structures de métadonnées pour optimiser les performances des recherches au moment de l’importation. Cette étape entraîne généralement le déplacement d’enregistrements, avec l’effet secondaire que les jetons conservés par l’outil pour référence ultérieure sont invalidés. Toutefois, les métadonnées n’informent pas l’appelant de ces modifications de jeton avant la deuxième passe. Dans la deuxième passe, différentes optimisations sont effectuées afin de réduire la taille globale des métadonnées, telles que l’optimisation (liaison anticipée) mdTypeRef et mdMemberRef les jetons lorsque la référence est à un type ou à un membre déclaré dans l’étendue des métadonnées actuelle. Dans cette passe, un autre tour de mappage de jetons se produit. Après cette transmission, le moteur de métadonnées notifie l’appelant, par le biais de son IMapToken interface, de toutes les valeurs de jeton modifiées.

Requirements

Plates-formes: Consultez les systèmes d’exploitation pris en charge par .NET.

Header: Cor.h

Library: CorGuids.lib

See also