internal override bool TraverseHeap(ulong heap, SOSDac.LoaderHeapTraverse callback) { byte[] input = new byte[sizeof(ulong) * 2]; WriteValueToBuffer(heap, input, 0); WriteValueToBuffer(Marshal.GetFunctionPointerForDelegate(callback), input, sizeof(ulong)); return(Request(DacRequests.LOADERHEAP_TRAVERSE, input, null)); }
internal override bool TraverseStubHeap(ulong appDomain, int type, SOSDac.LoaderHeapTraverse callback) { byte[] input; if (IntPtr.Size == 4) { input = new byte[sizeof(ulong) * 2]; } else { input = new byte[sizeof(ulong) * 3]; } WriteValueToBuffer(appDomain, input, 0); WriteValueToBuffer(type, input, sizeof(ulong)); WriteValueToBuffer(Marshal.GetFunctionPointerForDelegate(callback), input, sizeof(ulong) + sizeof(int)); return(Request(DacRequests.VIRTCALLSTUBHEAP_TRAVERSE, input, null)); }
internal abstract bool TraverseStubHeap(ulong appDomain, int type, SOSDac.LoaderHeapTraverse callback);
internal abstract bool TraverseHeap(ulong heap, SOSDac.LoaderHeapTraverse callback);
internal override bool TraverseStubHeap(ulong appDomain, int type, SOSDac.LoaderHeapTraverse callback) { return(_sos.TraverseStubHeap(appDomain, type, callback)); }
internal override bool TraverseHeap(ulong heap, SOSDac.LoaderHeapTraverse callback) { return(_sos.TraverseLoaderHeap(heap, callback)); }
public AppDomainHeapWalker(DesktopRuntimeBase runtime) { _runtime = runtime; _delegate = new SOSDac.LoaderHeapTraverse(VisitOneHeap); }
public AppDomainHeapWalker(DesktopRuntimeBase runtime) { _runtime = runtime; _delegate = VisitOneHeap; }