Metodo ICorProfilerCallback2::RootReferences2

Notifica al profiler informazioni sui riferimenti radice dopo che si è verificato un Garbage Collection. Questo metodo è un'estensione del metodo ICorProfilerCallback::RootReferences .

Sintassi

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

Parametri

cRootRefs
[in] Numero di elementi nelle rootRefIdsmatrici , rootKindsrootFlags, e rootIds .

rootRefIds
[in] Matrice di ID oggetto, ognuno dei quali fa riferimento a un oggetto statico o a un oggetto nello stack. Gli elementi nella rootKinds matrice forniscono informazioni per classificare gli elementi corrispondenti nella rootRefIds matrice.

rootKinds
[in] Matrice di valori COR_PRF_GC_ROOT_KIND che indicano il tipo della radice di Garbage Collection.

rootFlags
[in] Matrice di valori di COR_PRF_GC_ROOT_FLAGS che descrivono le proprietà di una radice di Garbage Collection.

rootIds
[in] Matrice di valori UINT_PTR che puntano a un intero che contiene informazioni aggiuntive sulla radice di Garbage Collection, a seconda del valore del rootKinds parametro.

Se il tipo della radice è uno stack, l'ID radice è per la funzione che contiene la variabile. Se l'ID radice è 0, la funzione è una funzione senza nome interna a CLR. Se il tipo della radice è un handle, l'ID radice è per l'handle di Garbage Collection. Per gli altri tipi radice, l'ID è un valore opaco e deve essere ignorato.

Commenti

Le rootRefIdsmatrici , rootKinds, rootFlagse rootIds sono matrici parallele. Ovvero, rootRefIds[i], rootKinds[i]rootFlags[i], e rootIds[i] tutti riguardano la stessa radice.

Entrambi RootReferences e RootReferences2 vengono chiamati per notificare al profiler. I profiler implementeranno normalmente un metodo o l'altro, ma non entrambi, perché le informazioni passate sono un superset di quello passato RootReferences2 in RootReferences.

È possibile che le voci in rootRefIds siano zero, che implicano che il riferimento radice corrispondente è Null e non fa riferimento a un oggetto nell'heap gestito.

Gli ID oggetto restituiti da RootReferences2 non sono validi durante il callback stesso, perché la Garbage Collection potrebbe trovarsi al centro dello spostamento di oggetti da indirizzi precedenti a nuovi indirizzi. I profiler non devono quindi tentare di verificare gli oggetti durante una chiamata a RootReferences2. Quando viene chiamato ICorProfilerCallback2::GarbageCollectionFinished , tutti gli oggetti sono stati spostati nelle nuove posizioni e possono essere controllati in modo sicuro.

Requisiti

Piattaforme: vedere Requisiti di sistema di .NET Framework.

Intestazione: CorProf.idl, CorProf.h

Libreria: CorGuids.lib

Versioni di .NET Framework: Disponibile da 2.0

Vedi anche