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