ICorProfilerCallback2::RootReferences2, méthode

Avertit le profileur à propos des références racines après un garbage collection. Cette méthode est une extension de la méthode ICorProfilerCallback::RootReferences.

Syntaxe

HRESULT RootReferences2(  
    [in] ULONG  cRootRefs,  
    [in, size_is(cRootRefs)] ObjectID rootRefIds[],  
    [in, size_is(cRootRefs)] COR_PRF_GC_ROOT_KIND rootKinds[],  
    [in, size_is(cRootRefs)] COR_PRF_GC_ROOT_FLAGS rootFlags[],  
    [in, size_is(cRootRefs)] UINT_PTR rootIds[]);  

Paramètres

cRootRefs
[in] Nombre d’éléments dans les tableaux rootRefIds, rootKinds, rootFlags et rootIds.

rootRefIds
[in] Tableau d’ID d’objets, chacun faisant référence à un objet statique ou à un objet de la pile. Les éléments du tableau rootKinds fournissent des informations permettant de classifier les éléments correspondants dans le tableau rootRefIds.

rootKinds
[in] Tableau de valeurs COR_PRF_GC_ROOT_KIND qui indiquent le type de la racine du garbage collection.

rootFlags
[in] Tableau de valeurs COR_PRF_GC_ROOT_FLAGS qui décrivent les propriétés d’une racine de garbage collection.

rootIds
[in] Tableau de valeurs UINT_PTR qui pointent vers un entier contenant des informations supplémentaires sur la racine du garbage collection, en fonction de la valeur du paramètre rootKinds.

Si la racine est de type « pile », l’ID de racine correspond à la fonction qui contient la variable. Si cet ID racine a la valeur 0, la fonction est une fonction non nommée, interne au CLR. Si la racine est de type « descripteur », l’ID racine correspond au descripteur du garbage collection. Pour les autres types de racines, l’ID est une valeur opaque qui doit être ignorée.

Notes

Les tableaux rootRefIds, rootKinds, rootFlags et rootIds sont des tableaux parallèles. Autrement dit, rootRefIds[i], rootKinds[i], rootFlags[i] et rootIds[i] concernent tous la même racine.

RootReferences et RootReferences2 sont tous les deux appelés pour notifier le profileur. Les profileurs implémentent normalement l’une ou l’autre de ces méthodes, mais pas les deux, car les informations passées dans RootReferences2 constituent un surensemble des informations passées dans RootReferences.

Il est possible que les entrées de rootRefIds aient la valeur 0, ce qui sous-entend que la référence racine correspondante est Null et ne fait pas référence à un objet du tas managé.

Les ID d’objet retournés par RootReferences2 ne sont pas valides pendant le rappel, car le garbage collection peut être en train de déplacer des objets à partir d’anciennes adresses vers de nouvelles adresses. Les profileurs ne doivent donc pas essayer d'inspecter des objets pendant un appel de RootReferences2. Quand ICorProfilerCallback2::GarbageCollectionFinished est appelé, tous les objets sont déplacés vers leur nouvel emplacement et peuvent être inspectés en toute sécurité.

Spécifications

Plateformes : Consultez Configuration requise.

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

Bibliothèque : CorGuids.lib

Versions de .NET Framework : Disponible depuis la version 2.0

Voir aussi