Misc SOS fixes and cleanup. (#3354)
authorMike McLaughlin <mikem@microsoft.com>
Wed, 7 Sep 2022 21:13:42 +0000 (14:13 -0700)
committerGitHub <noreply@github.com>
Wed, 7 Sep 2022 21:13:42 +0000 (14:13 -0700)
* Misc SOS fixes and cleanup.

Use new EnumMemoryRegion flags.

Update the clrdata.idl/clrdata.h/clrdata_i.cpp to the new DAC log message interface name.

Change the name of the "enummemory" command to "enummem". Add memory region verify on the callback.

Fix dumpobj/dumpruntimetypes with TypeDescs.

Add memory usage stats to sosstatus.

Fix issue https://github.com/dotnet/diagnostics/issues/3187. dotnet-dump analyze causes an Exception when console width is 0.

Fix issue https://github.com/dotnet/diagnostics/issues/3120. Increase (remove) max heap segment.

Finish https://github.com/dotnet/diagnostics/issues/3101. SOS should stop using HResult as a PInvoke return.

21 files changed:
src/Microsoft.Diagnostics.ExtensionCommands/Host/StatusCommand.cs
src/Microsoft.Diagnostics.Repl/ConsoleService.cs
src/SOS/SOS.Extensions/HostServices.cs
src/SOS/SOS.Hosting/Commands/SOSCommand.cs
src/SOS/Strike/eeheap.cpp
src/SOS/Strike/sos.def
src/SOS/Strike/sos_unixexports.src
src/SOS/Strike/strike.cpp
src/SOS/Strike/util.cpp
src/SOS/Strike/util.h
src/Tools/dotnet-dump/Commands/SOSCommand.cs
src/shared/inc/clrdata.idl
src/shared/pal/prebuilt/idl/clrdata_i.cpp
src/shared/pal/prebuilt/inc/clrdata.h
src/tests/DbgShim.UnitTests/DbgShimAPI.cs
src/tests/DbgShim.UnitTests/ICLRDebugging.cs
src/tests/DbgShim.UnitTests/ICorDebug.cs
src/tests/DbgShim.UnitTests/ICorDebugController.cs
src/tests/DbgShim.UnitTests/LibraryProviderWrapper.cs
src/tests/DbgShim.UnitTests/ManagedCallbackWrapper.cs
src/tests/Microsoft.Diagnostics.DebugServices.UnitTests/TestDbgEng.cs

index 5edce2a823b7b75756d76e3be3efd811dfef5c1b..0ea5401076f5ac43fc01a500165f59ff24fe6eda 100644 (file)
@@ -3,6 +3,7 @@
 // See the LICENSE file in the project root for more information.
 
 using Microsoft.Diagnostics.DebugServices;
+using System;
 
 namespace Microsoft.Diagnostics.ExtensionCommands
 {
@@ -27,6 +28,8 @@ namespace Microsoft.Diagnostics.ExtensionCommands
             {
                 Write(Target.ToString());
                 Write(SymbolService.ToString());
+                long memoryUsage = GC.GetTotalMemory(forceFullCollection: true);
+                WriteLine($"GC memory usage for managed SOS components: {memoryUsage:##,#} bytes");
             }
         }
     }
index fa4687baea4f2a8329ee9b28c6ef148082ff6a22..27bd1b4223ef0d7e80be578005b6c488842ef3ac 100644 (file)
@@ -268,8 +268,9 @@ namespace Microsoft.Diagnostics.Repl
                 return;
             }
 
-            if (m_clearLine == null || m_clearLine.Length != Console.WindowWidth) {
-                m_clearLine = "\r" + new string(' ', Console.WindowWidth - 1);
+            int width = Console.WindowWidth;
+            if (m_clearLine == null || width != m_clearLine.Length) {
+                m_clearLine = "\r" + (width > 0 ? new string(' ', width - 1) : "");
             }
 
             Console.Write(m_clearLine);
index 91308b89458a6fae5aeceea07288847cc7509e24..f83d94b6d6e19ee419f99e0d64dab87b51a1f387 100644 (file)
@@ -30,7 +30,7 @@ namespace SOS.Extensions
         /// <param name="hostServices">The instance of the host services for the native code to use</param>
         /// <returns></returns>
         [UnmanagedFunctionPointer(CallingConvention.Cdecl)]
-        private delegate HResult InitializeCallbackDelegate(
+        private delegate int InitializeCallbackDelegate(
             IntPtr hostServices);
 
         internal IntPtr IHostServices { get; }
@@ -178,7 +178,7 @@ namespace SOS.Extensions
 
         #region IHostServices
 
-        private HResult GetHost(
+        private int GetHost(
             IntPtr self,
             out IntPtr host)
         {
@@ -187,7 +187,7 @@ namespace SOS.Extensions
             return HResult.S_OK;
         }
 
-        private HResult RegisterDebuggerServices(
+        private int RegisterDebuggerServices(
             IntPtr self,
             IntPtr iunk)
         {
@@ -258,7 +258,7 @@ namespace SOS.Extensions
             return HResult.S_OK;
         }
 
-        private HResult CreateTarget(
+        private int CreateTarget(
             IntPtr self)
         {
             Trace.TraceInformation("HostServices.CreateTarget");
@@ -280,7 +280,7 @@ namespace SOS.Extensions
             return HResult.S_OK;
         }
 
-        private HResult UpdateTarget(
+        private int UpdateTarget(
             IntPtr self,
             uint processId)
         {
@@ -324,7 +324,7 @@ namespace SOS.Extensions
             }
         }
 
-        private HResult DispatchCommand(
+        private int DispatchCommand(
             IntPtr self,
             string commandName,
             string commandArguments)
@@ -358,7 +358,7 @@ namespace SOS.Extensions
             return HResult.E_FAIL;
         }
 
-        private HResult DisplayHelp(
+        private int DisplayHelp(
             IntPtr self,
             string commandName)
         {
@@ -411,21 +411,21 @@ namespace SOS.Extensions
         #region IHostServices delegates
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult GetHostDelegate(
+        private delegate int GetHostDelegate(
             [In] IntPtr self,
             [Out] out IntPtr host);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult RegisterDebuggerServicesDelegate(
+        private delegate int RegisterDebuggerServicesDelegate(
             [In] IntPtr self,
             [In] IntPtr iunk);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult CreateTargetDelegate(
+        private delegate int CreateTargetDelegate(
             [In] IntPtr self);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult UpdateTargetDelegate(
+        private delegate int UpdateTargetDelegate(
             [In] IntPtr self,
             [In] uint processId);
 
@@ -438,13 +438,13 @@ namespace SOS.Extensions
             [In] IntPtr self);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult DispatchCommandDelegate(
+        private delegate int DispatchCommandDelegate(
             [In] IntPtr self,
             [In, MarshalAs(UnmanagedType.LPStr)] string commandName,
             [In, MarshalAs(UnmanagedType.LPStr)] string commandArguments);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult DisplayHelpDelegate(
+        private delegate int DisplayHelpDelegate(
             [In] IntPtr self,
             [In, MarshalAs(UnmanagedType.LPStr)] string commandName);
 
index d4e5f38570710c78c7f1c59f0959582353f6b47b..2d011c4804244826a8a710904728d0cb091a387d 100644 (file)
@@ -36,6 +36,7 @@ namespace SOS.Hosting
     [Command(Name = "eeheap",           DefaultOptions = "EEHeap",              Help = "Displays info about process memory consumed by internal runtime data structures.")]
     [Command(Name = "eeversion",        DefaultOptions = "EEVersion",           Help = "Displays information about the runtime version.")]
     [Command(Name = "ehinfo",           DefaultOptions = "EHInfo",              Help = "Displays the exception handling blocks in a jitted method.")]
+    [Command(Name = "enummem",          DefaultOptions = "enummem",             Help = "ICLRDataEnumMemoryRegions.EnumMemoryRegions test command.")]
     [Command(Name = "finalizequeue",    DefaultOptions = "FinalizeQueue",       Help = "Displays all objects registered for finalization.")]
     [Command(Name = "findappdomain",    DefaultOptions = "FindAppDomain",       Help = "Attempts to resolve the AppDomain of a GC object.")]
     [Command(Name = "gchandles",        DefaultOptions = "GCHandles",           Help = "Provides statistics about GCHandles in the process.")]
index 53a7d626216ed883d9d0e01f03562391a0314f56..2eb5d993195f977bdf73f16de4783e731ccd1ae1 100644 (file)
@@ -518,7 +518,7 @@ void GCPrintSegmentInfo(const GCHeapDetails &heap, DWORD_PTR &total_allocated_si
         dwAddrSeg = (DWORD_PTR)heap.generation_table[GetMaxGeneration()].start_segment;
         total_allocated_size = 0;
         total_committed_size = 0;
-        // the loop below will terminate, because we retrieved at most nMaxHeapSegmentCount segments
+
         while (dwAddrSeg != (DWORD_PTR)heap.generation_table[0].start_segment)
         {
             if (IsInterrupt())
@@ -567,7 +567,6 @@ void GCPrintLargeHeapSegmentInfo(const GCHeapDetails &heap, DWORD_PTR &total_all
     dwAddrSeg = (DWORD_PTR)heap.generation_table[GetMaxGeneration()+1].start_segment;
 
     // total_size = 0;
-    // the loop below will terminate, because we retrieved at most nMaxHeapSegmentCount segments
     while (dwAddrSeg != NULL)
     {
         if (IsInterrupt())
@@ -598,7 +597,6 @@ void GCPrintPinnedHeapSegmentInfo(const GCHeapDetails &heap, DWORD_PTR &total_al
     DacpHeapSegmentData segment;
     dwAddrSeg = (DWORD_PTR)heap.generation_table[GetMaxGeneration() + 2].start_segment;
 
-    // the loop below will terminate, because we retrieved at most nMaxHeapSegmentCount segments
     while (dwAddrSeg != NULL)
     {
         if (IsInterrupt())
@@ -689,7 +687,6 @@ BOOL GCObjInSegment(TADDR taddrObj, const GCHeapDetails &heap,
         {
             taddrSeg = (TADDR)heap.generation_table[gen_num].start_segment;
 
-            // the loop below will terminate, because we retrieved at most nMaxHeapSegmentCount segments
             while (taddrSeg != NULL)
             {
                 if (IsInterrupt())
@@ -715,7 +712,7 @@ BOOL GCObjInSegment(TADDR taddrObj, const GCHeapDetails &heap,
     else
     {
         taddrSeg = (TADDR)heap.generation_table[GetMaxGeneration()].start_segment;
-        // the loop below will terminate, because we retrieved at most nMaxHeapSegmentCount segments
+
         while (taddrSeg != (TADDR)heap.generation_table[0].start_segment)
         {
             if (IsInterrupt())
@@ -765,7 +762,6 @@ BOOL GCObjInLargeSegment(TADDR taddrObj, const GCHeapDetails &heap, TADDR_SEGINF
     DacpHeapSegmentData dacpSeg;
     taddrSeg = (TADDR)heap.generation_table[GetMaxGeneration()+1].start_segment;
 
-    // the loop below will terminate, because we retrieved at most nMaxHeapSegmentCount segments
     while (taddrSeg != NULL)
     {
         if (IsInterrupt())
@@ -798,7 +794,6 @@ BOOL GCObjInPinnedObjectSegment(TADDR taddrObj, const GCHeapDetails &heap, TADDR
     DacpHeapSegmentData dacpSeg;
     taddrSeg = (TADDR)heap.generation_table[GetMaxGeneration() + 2].start_segment;
 
-    // the loop below will terminate, because we retrieved at most nMaxHeapSegmentCount segments
     while (taddrSeg != NULL)
     {
         if (IsInterrupt())
@@ -1921,12 +1916,6 @@ BOOL GCHeapSnapshot::AddSegments(const GCHeapDetails& details)
                 ExtOut("Error requesting heap segment %p\n", SOS_PTR(AddrSeg));
                 return FALSE;
             }
-            if (n++ > nMaxHeapSegmentCount && !details.has_regions) // that would be insane
-            {
-                ExtOut("More than %d heap segments, there must be an error\n", nMaxHeapSegmentCount);
-                return FALSE;
-            }
-
             // add the new segment to the array of segments. This will expand the array if necessary
             if (!m_segments.AddSegment(&segment))
             {
index 6dec87fd170db44fb834c020a5b9aed204d6e141..0e9876503f10bfd5111ee243ed429da043adfe07 100644 (file)
@@ -74,7 +74,7 @@ EXPORTS
     EHInfo
     ehinfo=EHInfo
     Ehinfo=EHInfo
-    enummemory
+    enummem
     ext
     sos=ext
     FinalizeQueue
index 9ac9f71d9a89526c6977bef198037117622b61d1..95b267029e008a4debeea85bbf86e0b49524f624 100644 (file)
@@ -30,7 +30,7 @@ EEHeap
 EEVersion
 EEStack
 EHInfo
-enummemory
+enummem
 FinalizeQueue
 FindAppDomain
 FindRoots
index 75b646d7c506c5c513866612f93153cacfa3baa2..166257bc2d2869ab9033e035bf850e4510d0742b 100644 (file)
@@ -1448,6 +1448,9 @@ HRESULT PrintVC(TADDR taMT, TADDR taObject, BOOL bPrintFields = TRUE)
     return S_OK;
 }
 
+// If this bit is set in the RuntimeType.m_handle field, the value is a TypeDesc pointer, otherwise it is a MethodTable pointer.
+#define RUNTIMETYPE_HANDLE_IS_TYPEDESC 0x2
+
 void PrintRuntimeTypeInfo(TADDR p_rtObject, const DacpObjectData & rtObjectData)
 {
     // Get the method table
@@ -1455,11 +1458,19 @@ void PrintRuntimeTypeInfo(TADDR p_rtObject, const DacpObjectData & rtObjectData)
     if (iOffset > 0)
     {
         TADDR mtPtr;
-        if (SUCCEEDED(GetMTOfObject(p_rtObject + iOffset, &mtPtr)))
+        if (MOVE(mtPtr, p_rtObject + iOffset) == S_OK)
         {
-            sos::MethodTable mt = mtPtr;
-            ExtOut("Type Name:   %S\n", mt.GetName());
-            DMLOut("Type MT:     %s\n", DMLMethodTable(mtPtr));
+            // Check if TypeDesc
+            if ((mtPtr & RUNTIMETYPE_HANDLE_IS_TYPEDESC) != 0)
+            {
+                ExtOut("TypeDesc:    %p\n", mtPtr & ~RUNTIMETYPE_HANDLE_IS_TYPEDESC);
+            }
+            else
+            {
+                sos::MethodTable mt = mtPtr;
+                ExtOut("Type Name:   %S\n", mt.GetName());
+                DMLOut("Type MT:     %s\n", DMLMethodTable(mtPtr));
+            }
         }
     }
 }
@@ -3912,24 +3923,34 @@ void PrintRuntimeTypes(DWORD_PTR objAddr,size_t Size,DWORD_PTR methodTable,LPVOI
         {
             DMLOut(DMLObject(objAddr));
 
-            CLRDATA_ADDRESS appDomain = GetAppDomainForMT(mtPtr);
-            if (appDomain != NULL)
+            // Check if TypeDesc
+            if ((mtPtr & RUNTIMETYPE_HANDLE_IS_TYPEDESC) != 0)
             {
-                if (appDomain == pArgs->adstore.sharedDomain)
-                    ExtOut(" %" POINTERSIZE "s", "Shared");
-
-                else if (appDomain == pArgs->adstore.systemDomain)
-                    ExtOut(" %" POINTERSIZE "s", "System");
-                else
-                    DMLOut(" %s", DMLDomain(appDomain));
+                ExtOut(" %p\n", mtPtr & ~RUNTIMETYPE_HANDLE_IS_TYPEDESC);
             }
             else
             {
-                ExtOut(" %" POINTERSIZE "s", "?");
-            }
+                CLRDATA_ADDRESS appDomain = GetAppDomainForMT(mtPtr);
+                if (appDomain != NULL)
+                {
+                    if (appDomain == pArgs->adstore.sharedDomain)
+                        ExtOut(" %" POINTERSIZE "s", "Shared");
+
+                    else if (appDomain == pArgs->adstore.systemDomain)
+                        ExtOut(" %" POINTERSIZE "s", "System");
+                    else
+                        DMLOut(" %s", DMLDomain(appDomain));
+                }
+                else
+                {
+                    ExtOut(" %" POINTERSIZE "s", "?");
+                }
 
-            NameForMT_s(mtPtr, g_mdName, mdNameLen);
-            DMLOut(" %s %S\n", DMLMethodTable(mtPtr), g_mdName);
+                if (NameForMT_s(mtPtr, g_mdName, mdNameLen))
+                {
+                    DMLOut(" %s %S\n", DMLMethodTable(mtPtr), g_mdName);
+                }
+            }
         }
     }
 }
@@ -15705,16 +15726,18 @@ DECLARE_API(StopOnCatch)
     return S_OK;
 }
 
-class EnumMemoryCallback : public ICLRDataEnumMemoryRegionsCallback, ICLRDataEnumMemoryRegionsLoggingCallback
+class EnumMemoryCallback : public ICLRDataEnumMemoryRegionsCallback, ICLRDataLoggingCallback
 {
 private:
     LONG m_ref;
     bool m_log;
+    bool m_valid;
 
 public:
-    EnumMemoryCallback(bool log) :
+    EnumMemoryCallback(bool log, bool valid) :
         m_ref(1),
-        m_log(log)
+        m_log(log),
+        m_valid(valid)
     {
     }
 
@@ -15733,9 +15756,9 @@ public:
             AddRef();
             return S_OK;
         }
-        else if (InterfaceId == IID_ICLRDataEnumMemoryRegionsLoggingCallback)
+        else if (InterfaceId == IID_ICLRDataLoggingCallback)
         {
-            *Interface = (ICLRDataEnumMemoryRegionsLoggingCallback*)this;
+            *Interface = (ICLRDataLoggingCallback*)this;
             AddRef();
             return S_OK;
         }
@@ -15770,6 +15793,25 @@ public:
         {
             ExtOut("%016llx %08x\n", address, size);
         }
+        if (m_valid)
+        {
+            uint64_t start = address;
+            uint64_t numberPages = (size + DT_OS_PAGE_SIZE - 1) / DT_OS_PAGE_SIZE;
+            for (size_t p = 0; p < numberPages; p++, start += DT_OS_PAGE_SIZE)
+            {
+                BYTE buffer[1];
+                ULONG read;
+                if (FAILED(g_ExtData->ReadVirtual(start, buffer, ARRAY_SIZE(buffer), &read)))
+                {
+                    ExtOut("Invalid: %016llx %08x start %016llx\n", address, size, start);
+                    break;
+                }
+            }
+        }
+        if (IsInterrupt())
+        { 
+            return COR_E_OPERATIONCANCELED;
+        }
         return S_OK;
     }
 
@@ -15777,11 +15819,15 @@ public:
         /* [in] */ LPCSTR message)
     {
         ExtOut("%s", message);
+        if (IsInterrupt())
+        { 
+            return COR_E_OPERATIONCANCELED;
+        }
         return S_OK;
     }
 };
 
-DECLARE_API(enummemory)
+DECLARE_API(enummem)
 {
     INIT_API();
 
@@ -15789,7 +15835,7 @@ DECLARE_API(enummemory)
     Status = g_clrData->QueryInterface(__uuidof(ICLRDataEnumMemoryRegions), (void**)&enumMemoryRegions);
     if (SUCCEEDED(Status))
     {
-        ToRelease<ICLRDataEnumMemoryRegionsCallback> callback = new EnumMemoryCallback(false);
+        ToRelease<ICLRDataEnumMemoryRegionsCallback> callback = new EnumMemoryCallback(false, true);
         ULONG32 minidumpType = 
            (MiniDumpWithPrivateReadWriteMemory |
             MiniDumpWithDataSegs |
index 37b3f73ab4890db7578bf5b6be203d3c5469b914..3c55c644206368b5cde8cbaaef100d061181871d 100644 (file)
@@ -4406,7 +4406,7 @@ HRESULT GetMTOfObject(TADDR obj, TADDR *mt)
     // Read the MethodTable and if we succeed, get rid of the mark bits.
     HRESULT hr = rvCache->Read(obj, mt, sizeof(TADDR), NULL);
     if (SUCCEEDED(hr))
-        *mt &= ~3;
+        *mt &= ~sos::Object::METHODTABLE_PTR_LOW_BITMASK;
 
     return hr;
 }
index b8af171e8067ab6a9fbe5e091641b03a5408f8d6..f4183780a60337b5368b33178ffac7a1b7519583 100644 (file)
@@ -123,15 +123,11 @@ class MethodTable;
 #define HNDTYPE_SIZEDREF                        (8)
 #define HNDTYPE_WEAK_WINRT                      (9)
 
-// Anything above this we consider abnormal and stop processing heap information
-const int nMaxHeapSegmentCount = 1000;
-
 class BaseObject
 {
     MethodTable    *m_pMethTab;
 };
 
-
 const BYTE gElementTypeInfo[] = {
 #define TYPEINFO(e,ns,c,s,g,ia,ip,if,im,gv)    s,
 #include "cortypeinfo.h"
index 4d3a2f4a8ffd6c9db83922a5bae3f04b139b5479..6094454f25ef85b518997498c391f02ded4bfbb3 100644 (file)
@@ -10,7 +10,7 @@ using System.Linq;
 
 namespace Microsoft.Diagnostics.Tools.Dump
 {
-    [Command(Name = "sos", Aliases = new string[] { "ext" }, Help = "Run SOS command", Flags = CommandFlags.Global | CommandFlags.Manual)]
+    [Command(Name = "sos", Aliases = new string[] { "ext" }, Help = "Run an SOS command.", Flags = CommandFlags.Global | CommandFlags.Manual)]
     public class SOSCommand : CommandBase
     {
         private readonly CommandService _commandService;
index 4252dc64096274b9493d21046612713819259305..2663a7b057fd7d9b75d9eb5f5580c76531c72c84 100644 (file)
@@ -296,7 +296,7 @@ interface ICLRDataEnumMemoryRegionsCallback2 : ICLRDataEnumMemoryRegionsCallback
     local,
     uuid(F315248D-8B79-49DB-B184-37426559F703)
 ]
-interface ICLRDataEnumMemoryRegionsLoggingCallback : IUnknown
+interface ICLRDataLoggingCallback : IUnknown
 {
     HRESULT LogMessage(
         [in] LPCSTR message);
index 872841a0d91186978d3ab28ed2a4ce0a77af6736..26d36c133bf46ce668b39c5ddb3ef7fc2246fcc8 100644 (file)
@@ -1,4 +1,5 @@
-
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
 
 /* this ALWAYS GENERATED file contains the IIDs and CLSIDs */
 
@@ -86,7 +87,7 @@ MIDL_DEFINE_GUID(IID, IID_ICLRDataEnumMemoryRegionsCallback,0xBCDD6908,0xBA2D,0x
 MIDL_DEFINE_GUID(IID, IID_ICLRDataEnumMemoryRegionsCallback2,0x3721A26F,0x8B91,0x4D98,0xA3,0x88,0xDB,0x17,0xB3,0x56,0xFA,0xDB);
 
 
-MIDL_DEFINE_GUID(IID, IID_ICLRDataEnumMemoryRegionsLoggingCallback,0xF315248D,0x8B79,0x49DB,0xB1,0x84,0x37,0x42,0x65,0x59,0xF7,0x03);
+MIDL_DEFINE_GUID(IID, IID_ICLRDataLoggingCallback,0xF315248D,0x8B79,0x49DB,0xB1,0x84,0x37,0x42,0x65,0x59,0xF7,0x03);
 
 
 MIDL_DEFINE_GUID(IID, IID_ICLRDataEnumMemoryRegions,0x471c35b4,0x7c2f,0x4ef0,0xa9,0x45,0x00,0xf8,0xc3,0x80,0x56,0xf1);
index 3999908b268ce6b077190688fc6248f36f110b81..802c34a87bf0cb2c82bc7e6fcb405fdf072a87fb 100644 (file)
@@ -1,4 +1,5 @@
-
+// Licensed to the .NET Foundation under one or more agreements.
+// The .NET Foundation licenses this file to you under the MIT license.
 
 /* this ALWAYS GENERATED file contains the definitions for the interfaces */
 
@@ -100,11 +101,11 @@ typedef interface ICLRDataEnumMemoryRegionsCallback2 ICLRDataEnumMemoryRegionsCa
 #endif         /* __ICLRDataEnumMemoryRegionsCallback2_FWD_DEFINED__ */
 
 
-#ifndef __ICLRDataEnumMemoryRegionsLoggingCallback_FWD_DEFINED__
-#define __ICLRDataEnumMemoryRegionsLoggingCallback_FWD_DEFINED__
-typedef interface ICLRDataEnumMemoryRegionsLoggingCallback ICLRDataEnumMemoryRegionsLoggingCallback;
+#ifndef __ICLRDataLoggingCallback_FWD_DEFINED__
+#define __ICLRDataLoggingCallback_FWD_DEFINED__
+typedef interface ICLRDataLoggingCallback ICLRDataLoggingCallback;
 
-#endif         /* __ICLRDataEnumMemoryRegionsLoggingCallback_FWD_DEFINED__ */
+#endif         /* __ICLRDataLoggingCallback_FWD_DEFINED__ */
 
 
 #ifndef __ICLRDataEnumMemoryRegions_FWD_DEFINED__
@@ -1205,19 +1206,19 @@ EXTERN_C const IID IID_ICLRDataEnumMemoryRegionsCallback2;
 #endif         /* __ICLRDataEnumMemoryRegionsCallback2_INTERFACE_DEFINED__ */
 
 
-#ifndef __ICLRDataEnumMemoryRegionsLoggingCallback_INTERFACE_DEFINED__
-#define __ICLRDataEnumMemoryRegionsLoggingCallback_INTERFACE_DEFINED__
+#ifndef __ICLRDataLoggingCallback_INTERFACE_DEFINED__
+#define __ICLRDataLoggingCallback_INTERFACE_DEFINED__
 
-/* interface ICLRDataEnumMemoryRegionsLoggingCallback */
+/* interface ICLRDataLoggingCallback */
 /* [uuid][local][object] */ 
 
 
-EXTERN_C const IID IID_ICLRDataEnumMemoryRegionsLoggingCallback;
+EXTERN_C const IID IID_ICLRDataLoggingCallback;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
     MIDL_INTERFACE("F315248D-8B79-49DB-B184-37426559F703")
-    ICLRDataEnumMemoryRegionsLoggingCallback : public IUnknown
+    ICLRDataLoggingCallback : public IUnknown
     {
     public:
         virtual HRESULT STDMETHODCALLTYPE LogMessage( 
@@ -1228,36 +1229,36 @@ EXTERN_C const IID IID_ICLRDataEnumMemoryRegionsLoggingCallback;
     
 #else  /* C style interface */
 
-    typedef struct ICLRDataEnumMemoryRegionsLoggingCallbackVtbl
+    typedef struct ICLRDataLoggingCallbackVtbl
     {
         BEGIN_INTERFACE
         
         DECLSPEC_XFGVIRT(IUnknown, QueryInterface)
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICLRDataEnumMemoryRegionsLoggingCallback * This,
+            ICLRDataLoggingCallback * This,
             /* [in] */ REFIID riid,
             /* [annotation][iid_is][out] */ 
             _COM_Outptr_  void **ppvObject);
         
         DECLSPEC_XFGVIRT(IUnknown, AddRef)
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICLRDataEnumMemoryRegionsLoggingCallback * This);
+            ICLRDataLoggingCallback * This);
         
         DECLSPEC_XFGVIRT(IUnknown, Release)
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICLRDataEnumMemoryRegionsLoggingCallback * This);
+            ICLRDataLoggingCallback * This);
         
-        DECLSPEC_XFGVIRT(ICLRDataEnumMemoryRegionsLoggingCallback, LogMessage)
+        DECLSPEC_XFGVIRT(ICLRDataLoggingCallback, LogMessage)
         HRESULT ( STDMETHODCALLTYPE *LogMessage )( 
-            ICLRDataEnumMemoryRegionsLoggingCallback * This,
+            ICLRDataLoggingCallback * This,
             /* [in] */ LPCSTR message);
         
         END_INTERFACE
-    } ICLRDataEnumMemoryRegionsLoggingCallbackVtbl;
+    } ICLRDataLoggingCallbackVtbl;
 
-    interface ICLRDataEnumMemoryRegionsLoggingCallback
+    interface ICLRDataLoggingCallback
     {
-        CONST_VTBL struct ICLRDataEnumMemoryRegionsLoggingCallbackVtbl *lpVtbl;
+        CONST_VTBL struct ICLRDataLoggingCallbackVtbl *lpVtbl;
     };
 
     
@@ -1265,17 +1266,17 @@ EXTERN_C const IID IID_ICLRDataEnumMemoryRegionsLoggingCallback;
 #ifdef COBJMACROS
 
 
-#define ICLRDataEnumMemoryRegionsLoggingCallback_QueryInterface(This,riid,ppvObject)   \
+#define ICLRDataLoggingCallback_QueryInterface(This,riid,ppvObject)    \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICLRDataEnumMemoryRegionsLoggingCallback_AddRef(This)  \
+#define ICLRDataLoggingCallback_AddRef(This)   \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICLRDataEnumMemoryRegionsLoggingCallback_Release(This) \
+#define ICLRDataLoggingCallback_Release(This)  \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICLRDataEnumMemoryRegionsLoggingCallback_LogMessage(This,message)      \
+#define ICLRDataLoggingCallback_LogMessage(This,message)       \
     ( (This)->lpVtbl -> LogMessage(This,message) ) 
 
 #endif /* COBJMACROS */
@@ -1286,7 +1287,7 @@ EXTERN_C const IID IID_ICLRDataEnumMemoryRegionsLoggingCallback;
 
 
 
-#endif         /* __ICLRDataEnumMemoryRegionsLoggingCallback_INTERFACE_DEFINED__ */
+#endif         /* __ICLRDataLoggingCallback_INTERFACE_DEFINED__ */
 
 
 /* interface __MIDL_itf_clrdata_0000_0008 */
@@ -1298,7 +1299,8 @@ enum CLRDataEnumMemoryFlags
         CLRDATA_ENUM_MEM_DEFAULT       = 0,
         CLRDATA_ENUM_MEM_MINI  = CLRDATA_ENUM_MEM_DEFAULT,
         CLRDATA_ENUM_MEM_HEAP  = 0x1,
-        CLRDATA_ENUM_MEM_TRIAGE        = 0x2
+        CLRDATA_ENUM_MEM_TRIAGE        = 0x2,
+        CLRDATA_ENUM_MEM_HEAP2 = 0x3
     }  CLRDataEnumMemoryFlags;
 
 
index 30a1881176d44e2f5782cc70418b0e57fe98d07d..1f648441e7116251ee957eb576280686bf28c85f 100644 (file)
@@ -113,11 +113,11 @@ namespace Microsoft.Diagnostics
             return hr;
         }
 
-        private delegate void NativeRuntimeStartupCallbackDelegate(IntPtr cordbg, IntPtr parameter, HResult hresult);
+        private delegate void NativeRuntimeStartupCallbackDelegate(IntPtr cordbg, IntPtr parameter, int hresult);
 
         private static IntPtr RuntimeStartupCallback(object parameter, RuntimeStartupCallbackDelegate callback, out GCHandle nativeCallbackHandle, out IntPtr nativeParameter)
         {
-            NativeRuntimeStartupCallbackDelegate native = (IntPtr cordbg, IntPtr param, HResult hresult) => {
+            NativeRuntimeStartupCallbackDelegate native = (IntPtr cordbg, IntPtr param, int hresult) => {
                 GCHandle gch = GCHandle.FromIntPtr(param);
                 callback(ICorDebug.Create(cordbg), gch.Target, hresult);
                 gch.Free();
@@ -260,7 +260,7 @@ namespace Microsoft.Diagnostics
         #region DbgShim pinvoke delegates
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)]
-        private delegate HResult CreateProcessForLaunchDelegate(
+        private delegate int CreateProcessForLaunchDelegate(
             [MarshalAs(UnmanagedType.LPWStr)] string lpCommandLine,
             [MarshalAs(UnmanagedType.Bool)] bool bSuspendProcess,
             IntPtr lpEnvironment,
@@ -269,22 +269,22 @@ namespace Microsoft.Diagnostics
             out IntPtr suspendHandle);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)]
-        private delegate HResult ResumeProcessDelegate(
+        private delegate int ResumeProcessDelegate(
             IntPtr handle);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall, SetLastError = true)]
-        private delegate HResult CloseResumeHandleDelegate(
+        private delegate int CloseResumeHandleDelegate(
             IntPtr handle);
             
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private delegate HResult RegisterForRuntimeStartupDelegate(
+        private delegate int RegisterForRuntimeStartupDelegate(
             uint processId,
             IntPtr callback,
             IntPtr parameter,
             out IntPtr unregisterToken);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private delegate HResult RegisterForRuntimeStartupExDelegate(
+        private delegate int RegisterForRuntimeStartupExDelegate(
             uint processId,
             [MarshalAs(UnmanagedType.LPWStr)] string applicationGroupId,
             IntPtr callback,
@@ -292,7 +292,7 @@ namespace Microsoft.Diagnostics
             out IntPtr unregisterToken);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private delegate HResult RegisterForRuntimeStartup3Delegate(
+        private delegate int RegisterForRuntimeStartup3Delegate(
             uint processId,
             [MarshalAs(UnmanagedType.LPWStr)] string applicationGroupId,
             IntPtr libraryProvider,
@@ -301,24 +301,24 @@ namespace Microsoft.Diagnostics
             out IntPtr unregisterToken);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private delegate HResult UnregisterForRuntimeStartupDelegate(
+        private delegate int UnregisterForRuntimeStartupDelegate(
             IntPtr unregisterToken);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult EnumerateCLRsDelegate(
+        private unsafe delegate int EnumerateCLRsDelegate(
             int processId,
             out IntPtr* handleArray,
             out char** stringArray,
             out int arrayLength);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult CloseCLREnumerationDelegate(
+        private unsafe delegate int CloseCLREnumerationDelegate(
             IntPtr* handleArray,
             char** stringArray,
             int arrayLength);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult CreateVersionStringFromModuleDelegate(
+        private unsafe delegate int CreateVersionStringFromModuleDelegate(
             int processId,
             [MarshalAs(UnmanagedType.LPWStr)] string moduleName,
             char* versionString,
@@ -326,25 +326,25 @@ namespace Microsoft.Diagnostics
             out int actualVersionStringLength);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult CreateDebuggingInterfaceFromVersionDelegate(
+        private unsafe delegate int CreateDebuggingInterfaceFromVersionDelegate(
             [MarshalAs(UnmanagedType.LPWStr)] string versionString,
             out IntPtr cordbg);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult CreateDebuggingInterfaceFromVersionExDelegate(
+        private unsafe delegate int CreateDebuggingInterfaceFromVersionExDelegate(
             int debuggerVersion,
             [MarshalAs(UnmanagedType.LPWStr)] string versionString,
             out IntPtr cordbg);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult CreateDebuggingInterfaceFromVersion2Delegate(
+        private unsafe delegate int CreateDebuggingInterfaceFromVersion2Delegate(
             int debuggerVersion,
             [MarshalAs(UnmanagedType.LPWStr)] string versionString,
             [MarshalAs(UnmanagedType.LPWStr)] string applicationGroupId,
             out IntPtr cordbg);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult CreateDebuggingInterfaceFromVersion3Delegate(
+        private unsafe delegate int CreateDebuggingInterfaceFromVersion3Delegate(
             int debuggerVersion,
             [MarshalAs(UnmanagedType.LPWStr)] string versionString,
             [MarshalAs(UnmanagedType.LPWStr)] string applicationGroupId,
@@ -352,7 +352,7 @@ namespace Microsoft.Diagnostics
             out IntPtr cordbg);
 
         [UnmanagedFunctionPointer(CallingConvention.StdCall)]
-        private unsafe delegate HResult CLRCreateInstanceDelegate(
+        private unsafe delegate int CLRCreateInstanceDelegate(
             in Guid clrsid,
             in Guid riid,
             out IntPtr pInterface);
index cd2ca5e87e24f24aea8fbb4bd9e39a9575fd675f..9d3b2b6d9a62bb6a6e83719abafaefdda9b33ce8 100644 (file)
@@ -51,7 +51,7 @@ namespace Microsoft.Diagnostics
         [StructLayout(LayoutKind.Sequential)]
         private readonly unsafe struct ICLRDebuggingVTable
         {
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, ulong, IntPtr, IntPtr, in ClrDebuggingVersion, in Guid, out IntPtr, out ClrDebuggingVersion, out ClrDebuggingProcessFlags, HResult> OpenVirtualProcess;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, ulong, IntPtr, IntPtr, in ClrDebuggingVersion, in Guid, out IntPtr, out ClrDebuggingVersion, out ClrDebuggingProcessFlags, int> OpenVirtualProcess;
         }
     }
 }
index 18a0fcfb4147b70b7dcb3a8fc9099994dfdcfef3..5ba2627d950bd52783d38dd8d88ea119343b1d3c 100644 (file)
@@ -35,12 +35,12 @@ namespace Microsoft.Diagnostics
         [StructLayout(LayoutKind.Sequential)]
         private readonly unsafe struct ICorDebugVTable
         {
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> Initialize;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> Terminate;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, IntPtr, HResult> SetManangedHandler;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, IntPtr, HResult> SetUnmanangedHandler;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> CreateProcess;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, int, int, out IntPtr, HResult> DebugActiveProcess;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> Initialize;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> Terminate;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, IntPtr, int> SetManangedHandler;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, IntPtr, int> SetUnmanangedHandler;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> CreateProcess;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int, int, out IntPtr, int> DebugActiveProcess;
         }
     }
 }
index 042b013bcf87fa714c2a57f00e2ee0baf8ab2f72..aad6d994fef5003892abd3d8da743541f48933ca 100644 (file)
@@ -35,14 +35,14 @@ namespace Microsoft.Diagnostics
         [StructLayout(LayoutKind.Sequential)]
         private readonly unsafe struct ICorDebugControllerVTable
         {
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, uint, HResult> Stop;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, int, HResult> Continue;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> IsRunning_dummy;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> HasQueuedCallbacks_dummy;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> EnumerateThreads_dummy;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> SetAllThreadsDebugState_dummy;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, HResult> Detach;
-            public readonly delegate* unmanaged[Stdcall]<IntPtr, uint, HResult> Terminate;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, uint, int> Stop;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int, int> Continue;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> IsRunning_dummy;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> HasQueuedCallbacks_dummy;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> EnumerateThreads_dummy;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> SetAllThreadsDebugState_dummy;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, int> Detach;
+            public readonly delegate* unmanaged[Stdcall]<IntPtr, uint, int> Terminate;
         }
     }
 }
index 63929610cdbc2ba15fd11642d796d8bb05fd1182..4d92f048b50e7c97e63ba51e13976dd147ce4d7f 100644 (file)
@@ -83,7 +83,7 @@ namespace SOS.Hosting
             Trace.TraceInformation("LibraryProviderWrapper.Destroy");
         }
 
-        private HResult ProvideLibrary(
+        private int ProvideLibrary(
             IntPtr self,
             string fileName,
             uint timeStamp,
@@ -134,7 +134,7 @@ namespace SOS.Hosting
             return HResult.E_INVALIDARG;
         }
 
-        private HResult ProvideLibrary2(
+        private int ProvideLibrary2(
             IntPtr self,
             string fileName,
             uint timeStamp,
@@ -187,7 +187,7 @@ namespace SOS.Hosting
             return HResult.E_INVALIDARG;
         }
 
-        private HResult ProvideWindowsLibrary(
+        private int ProvideWindowsLibrary(
             IntPtr self,
             string fileName,
             string runtimeModulePath,
@@ -243,7 +243,7 @@ namespace SOS.Hosting
             return HResult.E_INVALIDARG;
         }
 
-        private HResult ProvideUnixLibrary(
+        private int ProvideUnixLibrary(
             IntPtr self,
             string fileName,
             string runtimeModulePath,
@@ -469,7 +469,7 @@ namespace SOS.Hosting
         #region ICLRDebuggingLibraryProvider* delegates
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ProvideLibraryDelegate(
+        private delegate int ProvideLibraryDelegate(
             [In] IntPtr self,
             [In, MarshalAs(UnmanagedType.LPWStr)] string fileName,
             [In] uint timeStamp,
@@ -477,7 +477,7 @@ namespace SOS.Hosting
             out IntPtr moduleHandle);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ProvideLibrary2Delegate(
+        private delegate int ProvideLibrary2Delegate(
             [In] IntPtr self,
             [In, MarshalAs(UnmanagedType.LPWStr)] string fileName,
             [In] uint timeStamp,
@@ -485,7 +485,7 @@ namespace SOS.Hosting
             out IntPtr modulePath);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ProvideWindowsLibraryDelegate(
+        private delegate int ProvideWindowsLibraryDelegate(
             [In] IntPtr self,
             [In, MarshalAs(UnmanagedType.LPWStr)] string fileName,
             [In, MarshalAs(UnmanagedType.LPWStr)] string runtimeModulePath,
@@ -495,7 +495,7 @@ namespace SOS.Hosting
             out IntPtr modulePath);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ProvideUnixLibraryDelegate(
+        private delegate int ProvideUnixLibraryDelegate(
             [In] IntPtr self,
             [In, MarshalAs(UnmanagedType.LPWStr)] string fileName,
             [In, MarshalAs(UnmanagedType.LPWStr)] string runtimeModulePath,
index 75e9094ac960036281cfc6425c0f6bf81bb4f628..36c31dd309ba4772aeb90700d372edcd2bf7da59 100644 (file)
@@ -83,110 +83,110 @@ namespace Microsoft.Diagnostics
         #region ICorDebugManagedCallback delegates
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult BreakpointDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pBreakpoint);
+        private delegate int BreakpointDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pBreakpoint);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult StepCompleteDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pStepper, [In] int reason);
+        private delegate int StepCompleteDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pStepper, [In] int reason);
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult BreakDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread);
+        private delegate int BreakDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ExceptionDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int unhandled);
+        private delegate int ExceptionDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int unhandled);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult EvalCompleteDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pEval);
+        private delegate int EvalCompleteDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pEval);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult EvalExceptionDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pEval);
+        private delegate int EvalExceptionDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pEval);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult CreateProcessDelegate([In] IntPtr self, [In] IntPtr pProcess);
+        private delegate int CreateProcessDelegate([In] IntPtr self, [In] IntPtr pProcess);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ExitProcessDelegate([In] IntPtr self, [In] IntPtr pProcess);
+        private delegate int ExitProcessDelegate([In] IntPtr self, [In] IntPtr pProcess);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult CreateThreadDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr thread);
+        private delegate int CreateThreadDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr thread);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ExitThreadDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr thread);
+        private delegate int ExitThreadDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr thread);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult LoadModuleDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pModule);
+        private delegate int LoadModuleDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pModule);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult UnloadModuleDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pModule);
+        private delegate int UnloadModuleDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pModule);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult LoadClassDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr c);
+        private delegate int LoadClassDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr c);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult UnloadClassDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr c);
+        private delegate int UnloadClassDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr c);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult DebuggerErrorDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] HResult errorHR, [In] uint errorCode);
+        private delegate int DebuggerErrorDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] int errorHR, [In] uint errorCode);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult LogMessageDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int lLevel, [In, MarshalAs(UnmanagedType.LPWStr)] string pLogSwitchName, [In, MarshalAs(UnmanagedType.LPWStr)] string pMessage);
+        private delegate int LogMessageDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int lLevel, [In, MarshalAs(UnmanagedType.LPWStr)] string pLogSwitchName, [In, MarshalAs(UnmanagedType.LPWStr)] string pMessage);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult LogSwitchDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int lLevel, [In] uint ulReason, [In, MarshalAs(UnmanagedType.LPWStr)] string pLogSwitchName, [In, MarshalAs(UnmanagedType.LPWStr)] string pParentName);
+        private delegate int LogSwitchDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int lLevel, [In] uint ulReason, [In, MarshalAs(UnmanagedType.LPWStr)] string pLogSwitchName, [In, MarshalAs(UnmanagedType.LPWStr)] string pParentName);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult CreateAppDomainDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] IntPtr pAppDomain);
+        private delegate int CreateAppDomainDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] IntPtr pAppDomain);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ExitAppDomainDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] IntPtr pAppDomain);
+        private delegate int ExitAppDomainDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] IntPtr pAppDomain);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult LoadAssemblyDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pAssembly);
+        private delegate int LoadAssemblyDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pAssembly);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult UnloadAssemblyDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pAssembly);
+        private delegate int UnloadAssemblyDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pAssembly);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ControlCTrapDelegate([In] IntPtr self, [In] IntPtr pProcess);
+        private delegate int ControlCTrapDelegate([In] IntPtr self, [In] IntPtr pProcess);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult NameChangeDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread);
+        private delegate int NameChangeDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult UpdateModuleSymbolsDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pModule, [In] IntPtr pSymbolStream);
+        private delegate int UpdateModuleSymbolsDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pModule, [In] IntPtr pSymbolStream);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult EditAndContinueRemapDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pFunction, [In] int fAccurate);
+        private delegate int EditAndContinueRemapDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pFunction, [In] int fAccurate);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult BreakpointSetErrorDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pBreakpoint, [In] uint dwError);
+        private delegate int BreakpointSetErrorDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pBreakpoint, [In] uint dwError);
 
         #endregion
 
         #region ICorDebugManagedCallback2 delegates
 
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult FunctionRemapOpportunityDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pOldFunction, [In] IntPtr pNewFunction, [In] uint oldILOffset);
+        private delegate int FunctionRemapOpportunityDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pOldFunction, [In] IntPtr pNewFunction, [In] uint oldILOffset);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult CreateConnectionDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] uint dwConnectionId, [In] ref ushort pConnName);
+        private delegate int CreateConnectionDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] uint dwConnectionId, [In] ref ushort pConnName);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ChangeConnectionDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] uint dwConnectionId);
+        private delegate int ChangeConnectionDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] uint dwConnectionId);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult DestroyConnectionDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] uint dwConnectionId);
+        private delegate int DestroyConnectionDelegate([In] IntPtr self, [In] IntPtr pProcess, [In] uint dwConnectionId);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ExceptionDelegate2([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pFrame, [In] uint nOffset, [In] int dwEventType, [In] uint dwFlags);
+        private delegate int ExceptionDelegate2([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pFrame, [In] uint nOffset, [In] int dwEventType, [In] uint dwFlags);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult ExceptionUnwindDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int dwEventType, [In] uint dwFlags);
+        private delegate int ExceptionUnwindDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] int dwEventType, [In] uint dwFlags);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult FunctionRemapCompleteDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pFunction);
+        private delegate int FunctionRemapCompleteDelegate([In] IntPtr self, [In] IntPtr pAppDomain, [In] IntPtr pThread, [In] IntPtr pFunction);
         
         [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-        private delegate HResult MDANotificationDelegate([In] IntPtr self, [In] IntPtr pController, [In] IntPtr pThread, [In] IntPtr pMDA);
+        private delegate int MDANotificationDelegate([In] IntPtr self, [In] IntPtr pController, [In] IntPtr pThread, [In] IntPtr pMDA);
 
         #endregion
     }
index 5f71b60d7b7866cc079bda82418b52de984a968c..ae04090f2ff167a99096c95704b51f3b51908f97 100644 (file)
@@ -40,7 +40,7 @@ namespace Microsoft.Diagnostics.DebugServices.UnitTests
         class DbgEngController : IDebugOutputCallbacks
         {
             [UnmanagedFunctionPointer(CallingConvention.Winapi)]
-            private delegate HResult DebugCreateDelegate(
+            private delegate int DebugCreateDelegate(
                 ref Guid interfaceId,
                 [MarshalAs(UnmanagedType.IUnknown)] out object iinterface);