ICorProfilerCallback6::GetAssemblyReferences, méthode

[Pris en charge dans .NET Framework 4.5.2 et ultérieur]

Notifie le profileur qu'un assembly en est au tout début du chargement, quand le CLR (Common Langage Runtime) effectue un parcours de fermeture de références d'assembly.

Syntaxe

HRESULT GetAssemblyReferences(        [in, string] const WCHAR* wszAssemblyPath,  
        [in] ICorProfilerAssemblyReferenceProvider* pAsmRefProvider  
);  

Paramètres

wszAssemblyPath
[en entrée] Le chemin d’accès et le nom de l’assembly dont les métadonnées seront modifiées.

pAsmRefProvider
[in] Pointeur vers l’adresse d’une interface ICorProfilerAssemblyReferenceProvider qui spécifie les références d’assembly à ajouter.

Valeur de retour

Les valeurs retournées depuis ce rappel sont ignorées.

Notes

Ce rappel est contrôlé en définissant l’indicateur de masque d’événements COR_PRF_HIGH_ADD_ASSEMBLY_REFERENCES lors de l’appel de la méthode ICorProfilerCallback5::SetEventMask2. Si le profileur s’inscrit à la méthode de rappel ICorProfilerCallback6::GetAssemblyReferences, le runtime passe à cette méthode le chemin et le nom de l’assembly à charger, ainsi qu’un pointeur vers un objet d’interface ICorProfilerAssemblyReferenceProvider. Le profileur peut ensuite appeler la méthode ICorProfilerAssemblyReferenceProvider::AddAssemblyReference avec un objet COR_PRF_ASSEMBLY_REFERENCE_INFO pour chaque assembly cible qu’il prévoit de référencer depuis l’assembly spécifié dans le rappel de GetAssemblyReferences.

Utilisez le rappel de GetAssemblyReferences seulement si le profileur doit modifier les métadonnées d'un assembly pour y ajouter des références d'assembly. (Mais notez que la modification réelle des métadonnées d’un assembly est effectuée dans la méthode de rappel ICorProfilerCallback::ModuleLoadFinished.) Le profileur doit implémenter la méthode de rappel GetAssemblyReferences pour informer le Common Language Runtime (CLR) que les références d’assembly seront ajoutées une fois le module chargé. Ceci permet de s'assurer que les décisions de partage des assemblys prises par le CLR au cours de cette phase restent valides même si le profileur prévoit de modifier ultérieurement les références d'assembly des métadonnées. Cela permet d'éviter certaines instances où les modifications des métadonnées du profileur provoquent une erreur SECURITY_E_INCOMPATIBLE_SHARE.

Le profileur utilise l’objet ICorProfilerAssemblyReferenceProvider fourni par cette méthode pour ajouter des références d’assembly au parcours de fermeture des références d’assembly du CLR. L’objet ICorProfilerAssemblyReferenceProvider doit être utilisé seulement depuis ce rappel. Les appels à la méthode ICorProfilerAssemblyReferenceProvider::AddAssemblyReference depuis ce rappel n’entraînent aucune modification des métadonnées, mais seulement une modification du parcours de fermeture des références d’assembly. Le profileur doit donc utiliser un objet IMetaDataAssemblyEmit pour ajouter explicitement les références d’assembly depuis le rappel de ICorProfilerCallback::ModuleLoadFinished pour l’assembly contenant les références, même s’il implémente le rappel de GetAssemblyReferences.

Le profileur doit être prêt à recevoir des appels en doublon à ce rappel pour le même assembly et doit répondre de façon identique pour chacun de ces appels en doublon (en effectuant le même ensemble d’appels ICorProfilerAssemblyReferenceProvider::AddAssemblyReference).

Spécifications

Plateformes : Consultez Configuration requise.

En-tête : CorProf.idl, CorProf.h

Bibliothèque : CorGuids.lib

Versions du .NET Framework : Disponibles depuis la version 4.5.2

Voir aussi