Пример #1
0
        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));
        }
Пример #2
0
        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));
        }
Пример #3
0
 internal abstract bool TraverseStubHeap(ulong appDomain, int type, SOSDac.LoaderHeapTraverse callback);
Пример #4
0
 internal abstract bool TraverseHeap(ulong heap, SOSDac.LoaderHeapTraverse callback);
Пример #5
0
 internal override bool TraverseStubHeap(ulong appDomain, int type, SOSDac.LoaderHeapTraverse callback)
 {
     return(_sos.TraverseStubHeap(appDomain, type, callback));
 }
Пример #6
0
 internal override bool TraverseHeap(ulong heap, SOSDac.LoaderHeapTraverse callback)
 {
     return(_sos.TraverseLoaderHeap(heap, callback));
 }
Пример #7
0
 public AppDomainHeapWalker(DesktopRuntimeBase runtime)
 {
     _runtime  = runtime;
     _delegate = new SOSDac.LoaderHeapTraverse(VisitOneHeap);
 }
Пример #8
0
 public AppDomainHeapWalker(DesktopRuntimeBase runtime)
 {
     _runtime  = runtime;
     _delegate = VisitOneHeap;
 }