Metodo ICorProfilerCallback2::RootReferences2
Notifica al profiler i riferimenti radice dopo l'esecuzione di una Garbage Collection. Questo metodo è un'estensione del metodo 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[]);
Parametri
cRootRefs
[in] Numero di elementi nelle matrici rootRefIds, rootKinds, rootFlags e rootIds.rootRefIds
[in] Matrice di ID oggetto, ognuno dei quali fa riferimento a un oggetto statico o a un oggetto sullo stack. Gli elementi nella matrice rootKinds forniscono informazioni per classificare gli elementi corrispondenti nella matrice rootRefIds.rootKinds
[in] Matrice di valori COR_PRF_GC_ROOT_KIND che indicano il tipo della radice di Garbage Collection.rootFlags
[in] Matrice di valori 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 numero intero che contiene informazioni aggiuntive sulla radice di Garbage Collection, in base al valore del parametro rootKinds.Se il tipo della radice è uno stack, l'ID della radice è per la funzione che contiene la variabile. Se l'ID della radice è 0, la funzione è una funzione senza nome interna a CLR. Se il tipo della radice è un handle, l'ID della radice è per l'handle di Garbage Collection. Per gli altri tipi di radice, l'ID sarà un valore nascosto e deve essere ignorato.
Note
Le matrici rootRefIds, rootKinds, rootFlags e rootIds sono matrici parallele. In altri termini, rootRefIds[i], rootKinds[i], rootFlags[i] e rootIds[i] riguardano tutte la stessa radice.
RootReferences e RootReferences2 vengono chiamati tutti e due per informare il profiler. I profiler in genere implementano l'uno o l'altro metodo, ma non entrambi, perché le informazioni passate in RootReferences2 sono un superset di quelle passate in RootReferences.
È possibile che le voci in rootRefIds siano uguali a zero, il che implica che il riferimento alla radice corrispondente sia null e non sia relativo a un oggetto sull'heap gestito.
Gli ID oggetto restituiti da RootReferences2 non sono validi durante il callback vero e proprio perché la Garbage Collection potrebbe non avere ancora terminato di spostare oggetti dai vecchi indirizzi a quelli nuovi. I profiler non devono pertanto tentare di controllare gli oggetti durante una chiamata di RootReferences2. Quando viene chiamato ICorProfilerCallback2::GarbageCollectionFinished, tutti gli oggetti sono stati spostati nelle nuove posizioni e l'ispezione potrà essere eseguita in modo sicuro.
Requisiti
Piattaforme: vedere Requisiti di sistema di .NET Framework.
Intestazione: CorProf.idl, CorProf.h
Libreria: CorGuids.lib
Versioni di .NET Framework: 4, 3.5 SP1, 3.5, 3.0 SP1, 3.0, 2.0 SP1, 2.0