Partager via


ICorProfilerCallback6::GetAssemblyReferences Method

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

Avertit le profileur qu’un assembly se trouve dans une phase de chargement très précoce, lorsque le Common Language Runtime effectue une procédure de fermeture de référence d’assembly.

Syntax

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

Parameters

wszAssemblyPath [in] Chemin d’accès et 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.

Return Value

Les valeurs de retour de ce rappel sont ignorées.

Remarks

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

Utilisez le GetAssemblyReferences rappel uniquement si le profileur doit modifier les métadonnées d’un assembly pour ajouter des références d’assembly. (Notez toutefois 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 GetAssemblyReferences rappel pour informer le Common Language Runtime (CLR) que les références d’assembly seront ajoutées lorsque le module a été chargé. Cela permet de s’assurer que les décisions de partage d’assembly prises par le CLR au cours de cette phase anticipée restent valides bien que le profileur envisage de modifier les références d’assembly de métadonnées ultérieurement. Cela peut éviter certaines instances dans lesquelles les modifications de métadonnées du profileur provoquent une SECURITY_E_INCOMPATIBLE_SHARE erreur.

Le profileur utilise l’objet ICorProfilerAssemblyReferenceProvider fourni par cette méthode pour ajouter des références d’assembly au marcheur de fermeture de référence de l’assembly CLR. L’objet ICorProfilerAssemblyReferenceProvider doit être utilisé uniquement à partir de ce rappel. Les appels à la méthode ICorProfilerAssemblyReferenceProvider ::AddAssemblyReference de ce rappel n’entraînent pas de métadonnées modifiées, mais uniquement dans une procédure de fermeture de référence d’assembly modifiée. Le profileur devra toujours utiliser un objet IMetaDataAssemblyEmit pour ajouter explicitement des références d’assembly à partir du rappel ICorProfilerCallback ::ModuleLoadFinished pour l’assembly de référencement, même s’il implémente le GetAssemblyReferences rappel.

Le profileur doit être prêt à recevoir des appels en double à ce rappel pour le même assembly et doit répondre de manière identique pour chaque appel en double (en effectuant le même ensemble d’appels ICorProfilerAssemblyReferenceProvider ::AddAssemblyReference ).

Requirements

Plateformes : Consultez Configuration requise.

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

Library: CorGuids.lib

Versions du .NET Framework : Disponible depuis la version 4.5.2

See also