Comparteix a través de


ICorProfilerCallback2::RootReferences2 (Método)

Este método puede usarse para notificar al generador de perfiles acerca de las referencias raíz después de que se produzca un proceso de recolección de elementos no utilizados. Este método es una extensión del método ICorProfilerCallback::RootReferences.

Sintaxis

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[]);  

Parámetros

cRootRefs
[in] El valor de este parámetro se corresponde con el número de elementos de las matrices rootRefIds, rootKinds, rootFlags y rootIds.

rootRefIds
[in] El valor de este parámetro se corresponde con una matriz de id. de objeto. En cada uno de estos id., se hace referencia a un objeto estático o a un objeto de la pila. En los elementos de la matriz rootKinds, se proporciona la información que se necesita para clasificar los elementos correspondientes de la matriz rootRefIds.

rootKinds
[in] El valor de este parámetro se corresponde con una matriz de valores de la enumeración COR_PRF_GC_ROOT_KIND, que se usan para indicar el tipo de raíz de la recolección de elementos no utilizados.

rootFlags
[in] El valor de este parámetro se corresponde con una matriz de valores de la enumeración COR_PRF_GC_ROOT_FLAGS, que se usan para describir las propiedades de una raíz de recolección de elementos no utilizados.

rootIds
[in] El valor de este parámetro se corresponde con una matriz de valores UINT_PTR, que apuntan a un entero donde se almacena información adicional sobre la raíz de recolección de elementos no utilizados, en función del valor del parámetro rootKinds.

Si el tipo de la raíz es una pila, el id. de raíz se corresponderá con la función donde se almacena la variable. Si el valor de ese id. de raíz es 0, la función será una función interna del motor CLR que no tendrá nombre. Si el tipo de raíz es un manipulador, el id. de raíz se corresponderá con el manipulador de recolección de elementos no utilizados. En el caso de los otros tipos de raíz, el id. tendrá un valor opaco y deberá omitirse.

Comentarios

Las matrices rootRefIds, rootKinds, rootFlags y rootIds son paralelas. Es decir los elementos rootRefIds[i], rootKinds[i], rootFlags[i] y rootIds[i] se corresponden con la misma raíz.

Para notificar al generador de perfiles, se llama a los métodos RootReferences y RootReferences2. Normalmente, en los generadores de perfiles se implementa uno o el otro, pero no ambos, ya que la información que se pasa en el método RootReferences2 constituye un superconjunto del que se pasa en el método RootReferences.

Es posible que el parámetro rootRefIds tenga cero entradas. Esto implica que el valor de la referencia raíz correspondiente será null y que no se hará referencia a un objeto del montón administrado.

Los id. de objeto que se devuelvan al usar el método RootReferences2 no serán válidos durante la propia devolución de llamada, ya que podría haber objetos que estén moviéndose de direcciones anteriores a otras nuevas debido a un proceso de recolección de elementos no utilizados. Por lo tanto, los generadores de perfiles no deben intentar inspeccionar objetos durante una llamada a RootReferences2. Si se produce una devolución de llamada al método ICorProfilerCallback2::GarbageCollectionFinished, significará que todos los objetos se movieron a sus nuevas ubicaciones y que se pueden inspeccionar.

Requisitos

Plataformas: Vea Requisitos de sistema.

Encabezado: CorProf.idl, CorProf.h

Biblioteca: CorGuids.lib

Versiones de .NET Framework: disponible a partir de la versión 2.0

Consulte también