ICorProfilerCallback2::RootReferences2, méthode
Informe le profileur concernant les références racine après un garbage collection. Cette méthode est une extension de la méthode ICorProfilerCallback::RootReferences.
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'objet, qui référencent chacun un objet statique ou un objet sur la pile. Les éléments dans le tableau rootKinds fournissent des informations pour classer 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 de 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 de garbage collection, selon la valeur du paramètre rootKinds.Si le type de la racine est une pile, l'ID racine est pour la fonction qui contient la variable. Si cet ID racine est 0, la fonction est une fonction sans nom qui est interne au CLR. Si le type de la racine est un handle, l'ID de racine est pour le handle de garbage collection. Pour les autres types racine, l'ID est une valeur opaque et doit être ignoré.
Notes
Les tableaux rootRefIds, rootKinds, rootFlags et rootIds sont des tableaux parallèles. Cela signifie que rootRefIds[i], rootKinds[i], rootFlags[i] et rootIds[i] concernent la même racine.
RootReferences et RootReferences2 sont appelés pour informer le profileur. Normalement, les profileurs implémenteront l'une ou l'autre méthode, mais pas les deux, car les informations passées dans RootReferences2 sont un sur-ensemble de celles passées dans RootReferences.
Les entrées dans rootRefIds peuvent être égales à zéro, ce qui implique que la référence racine correspondante est null et ne fait pas référence à un objet sur le tas managé.
Les ID d'objet retournés par RootReferences2 ne sont pas valides pendant le rappel lui-même, car le garbage collection peut être en train de déplacer les objets des anciennes adresses vers des nouvelles. Par conséquent, les profileurs ne doivent pas essayer d'inspecter les objets pendant un appel RootReferences2. Lorsque ICorProfilerCallback2::GarbageCollectionFinished est appelé, tous les objets sont supprimés de leur nouvel emplacement et peuvent être inspectés sans risque.
Configuration requise
Plateformes : consultez Configuration requise du .NET Framework.
En-tête : CorProf.idl, CorProf.h
Bibliothèque : CorGuids.lib
Versions du .NET Framework : 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0