Notifies the profiler about root references after a garbage collection has occurred. This method is an extension of the ICorProfilerCallback::RootReferences method.
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);
[in] The number of elements in the
[in] An array of object IDs, each of which references either a static object or an object on the stack. Elements in the
rootKinds array provide information to classify corresponding elements in the
[in] An array of COR_PRF_GC_ROOT_KIND values that indicate the type of the garbage collection root.
[in] An array of COR_PRF_GC_ROOT_FLAGS values that describe the properties of a garbage collection root.
[in] An array of UINT_PTR values that point to an integer that contains additional information about the garbage collection root, depending on the value of the
If the type of the root is a stack, the root ID is for the function that contains the variable. If that root ID is 0, the function is an unnamed function that is internal to the CLR. If the type of the root is a handle, the root ID is for the garbage collection handle. For the other root types, the ID is an opaque value and should be ignored.
rootIds arrays are parallel arrays. That is,
rootIds[i] all concern the same root.
RootReferences2 are called to notify the profiler. Profilers will normally implement one method or the other, but not both, because the information passed in
RootReferences2 is a superset of that passed in
It is possible for entries in
rootRefIds to be zero, which implies that the corresponding root reference is null and does not refer to an object on the managed heap.
The object IDs returned by
RootReferences2 are not valid during the callback itself, because the garbage collection might be in the middle of moving objects from old addresses to new addresses. Therefore, profilers should not attempt to inspect objects during a
RootReferences2 call. When ICorProfilerCallback2::GarbageCollectionFinished is called, all objects have been moved to their new locations and can be safely inspected.
Platforms: See System Requirements.
Header: CorProf.idl, CorProf.h
.NET Framework Versions: Available since 2.0