ICorProfilerCallback2::RootReferences2 (Método)
Informa al generador de perfiles sobre las referencias de raíz tras una recolección de elementos no utilizados. Este método es una extensión del método 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[]);
Parámetros
cRootRefs
[in] Número de elementos de las matrices rootRefIds, rootKinds, rootFlags y rootIds.rootRefIds
[in] Matriz de identificadores de objeto, cada uno de los cuales hace referencia a un objeto estático o a un objeto de la pila. Los elementos de la matriz rootKinds proporcionan información para clasificar los elementos correspondientes de la matriz rootRefIds.rootKinds
[in] Matriz de valores COR_PRF_GC_ROOT_KIND que indican el tipo de la raíz de recolección de elementos no utilizados.rootFlags
[in] Matriz de valores COR_PRF_GC_ROOT_FLAGS que describen las propiedades de una raíz de recolección de elementos no utilizados.rootIds
[in] Matriz de valores UINT_PTR que apuntan a un entero que contiene información adicional sobre la raíz de recolección de elementos no utilizados, dependiendo del valor del parámetro rootKinds.Si el tipo de la raíz es una pila, el id. de la raíz es para la función que contiene la variable. Si dicho id. de la raíz es 0, la función es una función interna de CLR sin nombre. Si el tipo de la raíz es un identificador, el id. de raíz será para el identificador de recolección de elementos no utilizados. Para los demás tipos de raíz, el id. es un valor opaco y debe omitirse.
Comentarios
Las matrices rootRefIds, rootKinds, rootFlags y rootIds son matrices paralelas. Es decir, rootRefIds[i], rootKinds[i], rootFlags[i] y rootIds[i] se refieren a la misma raíz.
Para informar al generador de perfiles, se llama tanto a RootReferences como a RootReferences2. Normalmente, los generadores de perfiles implementarán uno u otro método, pero no ambos, ya que la información que se pasa en RootReferences2 es un supraconjunto de la información que se pasa en RootReferences.
Es posible que las entradas de rootRefIds sean cero, lo que implica que la referencia de raíz correspondiente es nula y no hace referencia a ningún objeto del montón administrado.
Los identificadores de objeto devueltos por RootReferences2 no son válidos durante la propia devolución de llamada, puesto que la recolección de elementos no utilizados podría estar moviendo objetos desde direcciones antiguas hasta direcciones nuevas. Por lo tanto, los generadores de perfiles no deberían intentar inspeccionar los objetos durante una llamada a RootReferences2. Cuando se llama a ICorProfilerCallback2::GarbageCollectionFinished, todos los objetos se mueven a su nueva ubicación y se pueden inspeccionar de forma segura.
Requisitos
Plataformas: vea Requisitos de sistema de .NET Framework.
Encabezado: CorProf.idl, CorProf.h
Biblioteca: CorGuids.lib
Versiones de .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0