示例#1
0
文件: SosDac.cs 项目: orf53975/clrmd
        public bool TraverseStubHeap(ulong heap, int type, LoaderHeapTraverse callback)
        {
            InitDelegate(ref _traverseStubHeap, VTable->TraverseVirtCallStubHeap);

            int hr = _traverseStubHeap(Self, heap, type, Marshal.GetFunctionPointerForDelegate(callback));

            GC.KeepAlive(callback);
            return(hr == S_OK);
        }
示例#2
0
 internal abstract bool TraverseStubHeap(ulong appDomain, int type, LoaderHeapTraverse callback);
示例#3
0
 internal abstract bool TraverseHeap(ulong heap, LoaderHeapTraverse callback);
示例#4
0
 internal abstract bool TraverseStubHeap(ulong appDomain, int type, LoaderHeapTraverse callback);
示例#5
0
 internal abstract bool TraverseHeap(ulong heap, LoaderHeapTraverse callback);
示例#6
0
        internal override bool TraverseStubHeap(ulong appDomain, int type, 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);
        }