Partager via


IMetaDataEmit::GetSaveSize, méthode

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

Syntaxe

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

Paramètres

fSave
[in] Valeur de l’énumération CorSaveSize qui stipule l’obtention d’une taille précise ou approximative. Seules trois valeurs sont valides : cssAccurate, cssQuick et cssDiscardTransientCAs :

  • cssAccurate retourne la taille d’enregistrement exacte, mais la durée du calcul est plus longue.

  • cssQuick retourne une taille, gonflée pour des raisons de sécurité, mais la durée du calcul est plus courte.

  • cssDiscardTransientCAs indique à GetSaveSize d’ignorer les attributs personnalisés qui peuvent l’être.

pdwSaveSize
[out] Pointeur vers la taille nécessaire pour enregistrer le fichier.

Notes

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 (par le biais de IMetaDataEmit::SetHandler ou IMetaDataEmit::Merge), GetSaveSize effectue deux passes sur les métadonnées pour les optimiser et les compresser. Sinon, aucune optimisation n’est effectuée.

Si une optimisation est effectuée, la première passe trie simplement les structures de métadonnées pour ajuster les performances des recherches au moment de l’importation. Cette étape entraîne généralement un déplacement des enregistrements, ce qui a pour effet de rendre non valides les jetons conservés par l’outil à des fins de référence ultérieure. Toutefois, les métadonnées n’informent pas l’appelant de ces modifications apportées aux jetons tant que la seconde passe n’est pas terminée. Lors de la seconde passe, diverses optimisations sont effectuées afin de réduire la taille globale des métadonnées, comme l’optimisation (liaison anticipée) des jetons mdTypeRef et mdMemberRef quand la référence correspond à un type ou membre déclaré dans l’étendue de métadonnées actuelle. Pendant cette passe, un nouveau mappage de jetons se produit. Après cette passe, le moteur de métadonnées notifie l’appelant, par le biais de son interface IMapToken, de toutes les valeurs de jetons modifiées.

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : Cor.h

Bibliothèque : utilisée en tant que ressource dans MSCorEE.dll

Versions de .NET Framework : disponible depuis la version 1.1

Voir aussi