Freigeben über


ICorProfilerCallback2::RootReferences2-Methode

Benachrichtigt den Profiler nach erfolgter Garbage Collection über Stammverweise. Diese Methode ist eine Erweiterung der ICorProfilerCallback::RootReferences-Methode.

Syntax

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

Parameter

cRootRefs
[in] Die Anzahl von Elementen in den rootRefIds-, rootKinds-, rootFlags- und rootIds-Arrays.

rootRefIds
[in] Ein Array mit Objekt-IDs, die jeweils entweder auf ein statisches Objekt oder auf ein Objekt im Stapel verweisen. Elemente im rootKinds-Array liefern Informationen für die Klassifizierung entsprechender Elemente im rootRefIds-Array.

rootKinds
[in] Ein Array mit COR_PRF_GC_ROOT_KIND-Werten, die den Typ des Garbage Collection-Stamms angeben.

rootFlags
[in] Ein Array mit COR_PRF_GC_ROOT_FLAGS-Werten, die die Eigenschaften eines Garbage Collection-Stamms angeben.

rootIds
[in] Ein Array mit UINT_PTR-Werten, die auf eine ganze Zahl verweisen, die abhängig vom Wert des rootKinds-Parameters zusätzliche Informationen zum Garbage Collection-Stamm enthält.

Ist der Typ des Stamms ein Stapel, gilt die Stamm-ID für die Funktion, die die Variable enthält. Ist diese Stamm-ID null, handelt es sich bei der Funktion um eine unbenannte CLR-interne Funktion. Ist der Typ des Stamms ein Handle, gilt die Stamm-ID für das Garbage Collection-Handle. Bei den anderen Stammtypen ist die ID ein nicht transparenter Wert und sollte ignoriert werden.

Bemerkungen

Die rootRefIds-, rootKinds-, rootFlags- und rootIds-Arrays sind parallele Arrays. Das bedeutet: rootRefIds[i], rootKinds[i], rootFlags[i] und rootIds[i] beziehen sich alle auf den gleichen Stamm.

Sowohl RootReferences als auch RootReferences2 werden aufgerufen, um den Profiler zu benachrichtigen. Profiler implementieren normalerweise eine der Methoden, aber nicht beide, da es sich bei den in RootReferences2 übergebenen Informationen um eine Obermenge der in RootReferences übergebenen Informationen handelt.

Einträge in rootRefIds können null sein, was impliziert, dass der entsprechende Stammverweis NULL ist und sich nicht auf ein Objekt auf dem verwalteten Heap bezieht.

Die von RootReferences2 zurückgegebenen Objekt-IDs sind während des eigentlichen Rückrufs nicht gültig, da die Garbage Collection zu diesem Zeitpunkt ggf. noch Objekte von alten Adressen an neue Adressen verschiebt. Deshalb sollten Profiler nicht versuchen, Objekte während eines RootReferences2-Aufrufs zu überprüfen. Wenn ICorProfilerCallback2::GarbageCollectionFinished aufgerufen wird, wurden alle Objekte an ihre neuen Speicherorte verschoben und können problemlos überprüft werden.

Anforderungen

Plattformen: Informationen finden Sie unter Systemanforderungen.

Header: CorProf.idl, CorProf.h

Bibliothek: CorGuids.lib

.NET Framework-Versionen: Seit 2.0 verfügbar.

Siehe auch