Add LCG JIT Compilation Profiler Callbacks
authorMukul Sabharwal <mjsabby@gmail.com>
Fri, 21 Oct 2016 16:24:21 +0000 (09:24 -0700)
committerMukul Sabharwal <mjsabby@gmail.com>
Fri, 21 Oct 2016 16:24:21 +0000 (09:24 -0700)
Methods that contain no metadata (e.g. of sources are IL Stubs,
DynamicMethod, Expression Trees, etc.) also known as LCG methods are not
reported to profilers via the Profiling API. LCG, introduced in .NET 2.0
timeframe is unique in that it doesn't require the method to be hosted
in an assembly > module > type heirarchy and is GCable in of itself.

This change adds new APIs that notify the profiler of such methods but
since there is no metadata to go lookup, it provides some useful pieces
of information that the profiler author may want to expose to the
profiler user.

In the compilation start method we provide a className (always
dynamicClass), a methodName that can be a set of few predetermined names
like (ILStub_COMToCLR, etc.) or if the user has set the name for the LCG
method that can show up here. For example, when using the Expression
Trees API, the user can specify a friendly name which would be returned
here.

In the jit completed callback we provide information for the native code
start address and size. This is particularly useful to get more accurate
accounting of what the (previously unidentified) code is. At least the
user would know it is JITTed if nothing more (but most likely more
information like what kind of stub).

Furthermore, since this is going to be a profiler callback, the profiler
can initiate a stackwalk and give more contextual information to its
users beyond the pieces of information we can provide here that could
identify what they're encountering.

Finally, there is also the case that today the profiling APIs
underreport JITTed code in the process. Considerable amount of LCG code
can now be present in the program and in security-sensitive environments
where tracking JITTed code for security reasons is important the
profiling apis fall short. In such environments there is also often
restrictions on running with elevated privileges, so procuring this data
through other means (like ETW) may pose a challenge.

Commit migrated from https://github.com/dotnet/coreclr/commit/b1f9f8315e011a693eab1f0bc7fb8f1a9c91350d

src/coreclr/src/inc/corprof.idl
src/coreclr/src/pal/prebuilt/idl/corprof_i.cpp
src/coreclr/src/pal/prebuilt/inc/corprof.h
src/coreclr/src/vm/eetoprofinterfaceimpl.cpp
src/coreclr/src/vm/eetoprofinterfaceimpl.h
src/coreclr/src/vm/eetoprofinterfaceimpl.inl
src/coreclr/src/vm/prestub.cpp
src/coreclr/src/vm/proftoeeinterfaceimpl.cpp
src/coreclr/src/vm/proftoeeinterfaceimpl.h

index 4288897..b126cf2 100644 (file)
@@ -60,6 +60,10 @@ cpp_quote("#endif")
 typedef const BYTE *LPCBYTE;
 typedef BYTE *LPBYTE;
 
+typedef BYTE COR_SIGNATURE;
+typedef COR_SIGNATURE* PCOR_SIGNATURE;
+typedef const COR_SIGNATURE* PCCOR_SIGNATURE;
+
 #endif
 
 
@@ -2375,6 +2379,29 @@ interface ICorProfilerCallback7 : ICorProfilerCallback6
 }
 
 
+[
+    object,
+    uuid(5BED9B15-C079-4D47-BFE2-215A140C07E0),
+    pointer_default(unique),
+    local
+]
+interface ICorProfilerCallback8 : ICorProfilerCallback7
+{
+    // This event is triggered whenever a metadata less method is jit compiled.
+    // These include various IL Stubs and LCG Methods.
+    // The goal is to provide profiler writers with enough information to identify
+    // it to users as beyond unknown code addresses.
+    // Note: FunctionID's provided here cannot be used to resolve to their metadata
+    //       tokens since LCG methods have no metadata.
+    //
+    // Documentation Note: ilHeader is only valid during the callback
+
+    HRESULT DynamicMethodJITCompilationStarted(FunctionID functionId, LPCBYTE ilHeader);
+
+    HRESULT DynamicMethodJITCompilationFinished(FunctionID functionId);
+}
+
+
 /*
  * COR_PRF_CODEGEN_FLAGS controls various flags and hooks for a specific
  * method.  A combination of COR_PRF_CODEGEN_FLAGS is provided by the
@@ -3781,6 +3808,59 @@ interface ICorProfilerInfo7 : ICorProfilerInfo6
 
 };
 
+[
+    object,
+    uuid(C5AC80A6-782E-4716-8044-39598C60CFBF),
+    pointer_default(unique),
+    local
+]
+interface ICorProfilerInfo8 : ICorProfilerInfo7
+{
+    /*
+    * Determines if a function has associated metadata 
+    *
+    * Certain methods like IL Stubs or LCG Methods do not have
+    * associated metadata that can be retrieved using the IMetaDataImport APIs.
+    *
+    * Such methods can be encountered by profilers through instruction pointers
+    * or by listening to ICorProfilerCallback::DynamicMethodJITCompilationStarted
+    *
+    * This API can be used to determine whether a FunctionID is dynamic.
+    */
+    HRESULT IsFunctionDynamic( [in]  FunctionID  functionId,
+                               [out] BOOL        *isDynamic);
+
+    /*
+    * Maps a managed code instruction pointer to a FunctionID.
+    *
+    * GetFunctionFromIP2 fails for methods without metadata, this method works for
+    * both metadata and metadata-less methods and is a superset of GetFunctionFromIP2
+    */
+    HRESULT GetFunctionFromIP3([in] LPCBYTE ip,
+                               [out] FunctionID *functionId,
+                               [out] ReJITID * pReJitId);
+
+    /*
+    * Retrieves informaiton about metadata-less methods
+    *
+    * Certain methods like IL Stubs or DynamicMethod do not have
+    * associated metadata that can be retrieved using the IMetaDataImport APIs.
+    *
+    * Such methods can be encountered by profilers through instruction pointers
+    * or by listening to ICorProfilerCallback::JITCompilationStartedNoMetadata
+    *
+    * This API can be used to retrieve information about metadata less methods
+    * including a friendly name if available.
+    */
+    HRESULT GetDynamicFunctionInfo( [in]  FunctionID              functionId,
+                                    [out] ModuleID                *moduleId,
+                                    [out] PCCOR_SIGNATURE         *ppvSig,
+                                    [out] ULONG                   *pbSig,
+                                    [in]  ULONG                   cchName,
+                                    [out] ULONG                   *pcchName,
+                                    [out] WCHAR                    wszName[]);
+};
+
 /*
 * This interface lets you iterate over methods in the runtime.
 */
index 4686c76..3758da0 100644 (file)
@@ -80,6 +80,9 @@ MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback6,0xFC13DF4B,0x4448,0x4F4F,0x95,0x
 MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback7,0xF76A2DBA,0x1D52,0x4539,0x86,0x6C,0x2A,0xA5,0x18,0xF9,0xEF,0xC3);
 
 
+MIDL_DEFINE_GUID(IID, IID_ICorProfilerCallback8,0x5BED9B15,0xC079,0x4D47,0xBF,0xE2,0x21,0x5A,0x14,0x0C,0x07,0xE0);
+
+
 MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo,0x28B5557D,0x3F3F,0x48b4,0x90,0xB2,0x5F,0x9E,0xEA,0x2F,0x6C,0x48);
 
 
@@ -116,6 +119,9 @@ MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo6,0xF30A070D,0xBFFB,0x46A7,0xB1,0xD8,0
 MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo7,0x9AEECC0D,0x63E0,0x4187,0x8C,0x00,0xE3,0x12,0xF5,0x03,0xF6,0x63);
 
 
+MIDL_DEFINE_GUID(IID, IID_ICorProfilerInfo8,0xC5AC80A6,0x782E,0x4716,0x80,0x44,0x39,0x59,0x8C,0x60,0xCF,0xBF);
+
+
 MIDL_DEFINE_GUID(IID, IID_ICorProfilerMethodEnum,0xFCCEE788,0x0088,0x454B,0xA8,0x11,0xC9,0x9F,0x29,0x8D,0x19,0x42);
 
 
index 70b7e77..56b1fbe 100644 (file)
@@ -5,7 +5,7 @@
 /* this ALWAYS GENERATED file contains the definitions for the interfaces */
 
 
- /* File created by MIDL compiler version 8.00.0603 */
+ /* File created by MIDL compiler version 8.00.0613 */
 /* @@MIDL_FILE_HEADING(  ) */
 
 #pragma warning( disable: 4049 )  /* more than 64k source lines */
@@ -21,7 +21,7 @@
 
 #ifndef __RPCNDR_H_VERSION__
 #error this stub requires an updated version of <rpcndr.h>
-#endif // __RPCNDR_H_VERSION__
+#endif /* __RPCNDR_H_VERSION__ */
 
 #ifndef COM_NO_WINDOWS_H
 #include "windows.h"
@@ -86,6 +86,13 @@ typedef interface ICorProfilerCallback7 ICorProfilerCallback7;
 #endif         /* __ICorProfilerCallback7_FWD_DEFINED__ */
 
 
+#ifndef __ICorProfilerCallback8_FWD_DEFINED__
+#define __ICorProfilerCallback8_FWD_DEFINED__
+typedef interface ICorProfilerCallback8 ICorProfilerCallback8;
+
+#endif         /* __ICorProfilerCallback8_FWD_DEFINED__ */
+
+
 #ifndef __ICorProfilerInfo_FWD_DEFINED__
 #define __ICorProfilerInfo_FWD_DEFINED__
 typedef interface ICorProfilerInfo ICorProfilerInfo;
@@ -170,6 +177,13 @@ typedef interface ICorProfilerInfo7 ICorProfilerInfo7;
 #endif         /* __ICorProfilerInfo7_FWD_DEFINED__ */
 
 
+#ifndef __ICorProfilerInfo8_FWD_DEFINED__
+#define __ICorProfilerInfo8_FWD_DEFINED__
+typedef interface ICorProfilerInfo8 ICorProfilerInfo8;
+
+#endif         /* __ICorProfilerInfo8_FWD_DEFINED__ */
+
+
 #ifndef __ICorProfilerMethodEnum_FWD_DEFINED__
 #define __ICorProfilerMethodEnum_FWD_DEFINED__
 typedef interface ICorProfilerMethodEnum ICorProfilerMethodEnum;
@@ -244,6 +258,12 @@ typedef const BYTE *LPCBYTE;
 
 typedef BYTE *LPBYTE;
 
+typedef BYTE COR_SIGNATURE;
+
+typedef COR_SIGNATURE *PCOR_SIGNATURE;
+
+typedef const COR_SIGNATURE *PCCOR_SIGNATURE;
+
 #ifndef _COR_IL_MAP
 #define _COR_IL_MAP
 typedef struct _COR_IL_MAP
@@ -5807,789 +5827,1083 @@ EXTERN_C const IID IID_ICorProfilerCallback7;
 #endif         /* __ICorProfilerCallback7_INTERFACE_DEFINED__ */
 
 
-/* interface __MIDL_itf_corprof_0000_0007 */
-/* [local] */ 
-
-typedef /* [public] */ 
-enum __MIDL___MIDL_itf_corprof_0000_0007_0001
-    {
-        COR_PRF_CODEGEN_DISABLE_INLINING       = 0x1,
-        COR_PRF_CODEGEN_DISABLE_ALL_OPTIMIZATIONS      = 0x2
-    }  COR_PRF_CODEGEN_FLAGS;
-
-
-
-extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0007_v0_0_c_ifspec;
-extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0007_v0_0_s_ifspec;
-
-#ifndef __ICorProfilerInfo_INTERFACE_DEFINED__
-#define __ICorProfilerInfo_INTERFACE_DEFINED__
+#ifndef __ICorProfilerCallback8_INTERFACE_DEFINED__
+#define __ICorProfilerCallback8_INTERFACE_DEFINED__
 
-/* interface ICorProfilerInfo */
+/* interface ICorProfilerCallback8 */
 /* [local][unique][uuid][object] */ 
 
 
-EXTERN_C const IID IID_ICorProfilerInfo;
+EXTERN_C const IID IID_ICorProfilerCallback8;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("28B5557D-3F3F-48b4-90B2-5F9EEA2F6C48")
-    ICorProfilerInfo : public IUnknown
+    MIDL_INTERFACE("5BED9B15-C079-4D47-BFE2-215A140C07E0")
+    ICorProfilerCallback8 : public ICorProfilerCallback7
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE GetClassFromObject
-            /* [in] */ ObjectID objectId,
-            /* [out] */ ClassID *pClassId) = 0;
+        virtual HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationStarted
+            FunctionID functionId,
+            LPCBYTE ilHeader) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetClassFromToken( 
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ mdTypeDef typeDef,
-            /* [out] */ ClassID *pClassId) = 0;
+        virtual HRESULT STDMETHODCALLTYPE DynamicMethodJITCompilationFinished( 
+            FunctionID functionId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetCodeInfo( 
-            /* [in] */ FunctionID functionId,
-            /* [out] */ LPCBYTE *pStart,
-            /* [out] */ ULONG *pcSize) = 0;
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct ICorProfilerCallback8Vtbl
+    {
+        BEGIN_INTERFACE
         
-        virtual HRESULT STDMETHODCALLTYPE GetEventMask( 
-            /* [out] */ DWORD *pdwEvents) = 0;
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
         
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP( 
-            /* [in] */ LPCBYTE ip,
-            /* [out] */ FunctionID *pFunctionId) = 0;
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ICorProfilerCallback8 * This);
         
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromToken( 
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ mdToken token,
-            /* [out] */ FunctionID *pFunctionId) = 0;
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ICorProfilerCallback8 * This);
         
-        virtual HRESULT STDMETHODCALLTYPE GetHandleFromThread
-            /* [in] */ ThreadID threadId,
-            /* [out] */ HANDLE *phThread) = 0;
+        HRESULT ( STDMETHODCALLTYPE *Initialize )
+            ICorProfilerCallback8 * This,
+            /* [in] */ IUnknown *pICorProfilerInfoUnk);
         
-        virtual HRESULT STDMETHODCALLTYPE GetObjectSize( 
-            /* [in] */ ObjectID objectId,
-            /* [out] */ ULONG *pcSize) = 0;
+        HRESULT ( STDMETHODCALLTYPE *Shutdown )( 
+            ICorProfilerCallback8 * This);
         
-        virtual HRESULT STDMETHODCALLTYPE IsArrayClass( 
-            /* [in] */ ClassID classId,
-            /* [out] */ CorElementType *pBaseElemType,
-            /* [out] */ ClassID *pBaseClassId,
-            /* [out] */ ULONG *pcRank) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AppDomainCreationStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ AppDomainID appDomainId);
         
-        virtual HRESULT STDMETHODCALLTYPE GetThreadInfo( 
-            /* [in] */ ThreadID threadId,
-            /* [out] */ DWORD *pdwWin32ThreadId) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AppDomainCreationFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE GetCurrentThreadID( 
-            /* [out] */ ThreadID *pThreadId) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ AppDomainID appDomainId);
         
-        virtual HRESULT STDMETHODCALLTYPE GetClassIDInfo
-            /* [in] */ ClassID classId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdTypeDef *pTypeDefToken) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AppDomainShutdownFinished )
+            ICorProfilerCallback8 * This,
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionInfo( 
-            /* [in] */ FunctionID functionId,
-            /* [out] */ ClassID *pClassId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdToken *pToken) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AssemblyLoadStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ AssemblyID assemblyId);
         
-        virtual HRESULT STDMETHODCALLTYPE SetEventMask( 
-            /* [in] */ DWORD dwEvents) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AssemblyLoadFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ AssemblyID assemblyId,
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks( 
-            /* [in] */ FunctionEnter *pFuncEnter,
-            /* [in] */ FunctionLeave *pFuncLeave,
-            /* [in] */ FunctionTailcall *pFuncTailcall) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ AssemblyID assemblyId);
         
-        virtual HRESULT STDMETHODCALLTYPE SetFunctionIDMapper( 
-            /* [in] */ FunctionIDMapper *pFunc) = 0;
+        HRESULT ( STDMETHODCALLTYPE *AssemblyUnloadFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ AssemblyID assemblyId,
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE GetTokenAndMetaDataFromFunction( 
-            /* [in] */ FunctionID functionId,
-            /* [in] */ REFIID riid,
-            /* [out] */ IUnknown **ppImport,
-            /* [out] */ mdToken *pToken) = 0;
+        HRESULT ( STDMETHODCALLTYPE *ModuleLoadStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ModuleID moduleId);
         
-        virtual HRESULT STDMETHODCALLTYPE GetModuleInfo( 
+        HRESULT ( STDMETHODCALLTYPE *ModuleLoadFinished )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ ModuleID moduleId,
-            /* [out] */ LPCBYTE *ppBaseLoadAddress,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ AssemblyID *pAssemblyId) = 0;
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE GetModuleMetaData( 
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ DWORD dwOpenFlags,
-            /* [in] */ REFIID riid,
-            /* [out] */ IUnknown **ppOut) = 0;
+        HRESULT ( STDMETHODCALLTYPE *ModuleUnloadStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ModuleID moduleId);
         
-        virtual HRESULT STDMETHODCALLTYPE GetILFunctionBody( 
+        HRESULT ( STDMETHODCALLTYPE *ModuleUnloadFinished )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ ModuleID moduleId,
-            /* [in] */ mdMethodDef methodId,
-            /* [out] */ LPCBYTE *ppMethodHeader,
-            /* [out] */ ULONG *pcbMethodSize) = 0;
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE GetILFunctionBodyAllocator( 
+        HRESULT ( STDMETHODCALLTYPE *ModuleAttachedToAssembly )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ ModuleID moduleId,
-            /* [out] */ IMethodMalloc **ppMalloc) = 0;
+            /* [in] */ AssemblyID AssemblyId);
         
-        virtual HRESULT STDMETHODCALLTYPE SetILFunctionBody( 
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ mdMethodDef methodid,
-            /* [in] */ LPCBYTE pbNewILMethodHeader) = 0;
+        HRESULT ( STDMETHODCALLTYPE *ClassLoadStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ClassID classId);
         
-        virtual HRESULT STDMETHODCALLTYPE GetAppDomainInfo( 
-            /* [in] */ AppDomainID appDomainId,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ ProcessID *pProcessId) = 0;
+        HRESULT ( STDMETHODCALLTYPE *ClassLoadFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE GetAssemblyInfo( 
-            /* [in] */ AssemblyID assemblyId,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ AppDomainID *pAppDomainId,
-            /* [out] */ ModuleID *pModuleId) = 0;
+        HRESULT ( STDMETHODCALLTYPE *ClassUnloadStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ClassID classId);
         
-        virtual HRESULT STDMETHODCALLTYPE SetFunctionReJIT( 
-            /* [in] */ FunctionID functionId) = 0;
+        HRESULT ( STDMETHODCALLTYPE *ClassUnloadFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ HRESULT hrStatus);
         
-        virtual HRESULT STDMETHODCALLTYPE ForceGC( void) = 0;
+        HRESULT ( STDMETHODCALLTYPE *FunctionUnloadStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId);
         
-        virtual HRESULT STDMETHODCALLTYPE SetILInstrumentedCodeMap( 
+        HRESULT ( STDMETHODCALLTYPE *JITCompilationStarted )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ FunctionID functionId,
-            /* [in] */ BOOL fStartJit,
-            /* [in] */ ULONG cILMapEntries,
-            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]) = 0;
+            /* [in] */ BOOL fIsSafeToBlock);
         
-        virtual HRESULT STDMETHODCALLTYPE GetInprocInspectionInterface( 
-            /* [out] */ IUnknown **ppicd) = 0;
+        HRESULT ( STDMETHODCALLTYPE *JITCompilationFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ HRESULT hrStatus,
+            /* [in] */ BOOL fIsSafeToBlock);
         
-        virtual HRESULT STDMETHODCALLTYPE GetInprocInspectionIThisThread( 
-            /* [out] */ IUnknown **ppicd) = 0;
+        HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [out] */ BOOL *pbUseCachedFunction);
         
-        virtual HRESULT STDMETHODCALLTYPE GetThreadContext( 
-            /* [in] */ ThreadID threadId,
-            /* [out] */ ContextID *pContextId) = 0;
+        HRESULT ( STDMETHODCALLTYPE *JITCachedFunctionSearchFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_JIT_CACHE result);
         
-        virtual HRESULT STDMETHODCALLTYPE BeginInprocDebugging
-            /* [in] */ BOOL fThisThreadOnly,
-            /* [out] */ DWORD *pdwProfilerContext) = 0;
+        HRESULT ( STDMETHODCALLTYPE *JITFunctionPitched )
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId);
         
-        virtual HRESULT STDMETHODCALLTYPE EndInprocDebugging( 
-            /* [in] */ DWORD dwProfilerContext) = 0;
+        HRESULT ( STDMETHODCALLTYPE *JITInlining )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID callerId,
+            /* [in] */ FunctionID calleeId,
+            /* [out] */ BOOL *pfShouldInline);
         
-        virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping( 
-            /* [in] */ FunctionID functionId,
-            /* [in] */ ULONG32 cMap,
-            /* [out] */ ULONG32 *pcMap,
-            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]) = 0;
+        HRESULT ( STDMETHODCALLTYPE *ThreadCreated )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ThreadID threadId);
         
-    };
-    
-    
-#else  /* C style interface */
-
-    typedef struct ICorProfilerInfoVtbl
-    {
-        BEGIN_INTERFACE
+        HRESULT ( STDMETHODCALLTYPE *ThreadDestroyed )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ThreadID threadId);
         
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerInfo * This,
-            /* [in] */ REFIID riid,
-            /* [annotation][iid_is][out] */ 
-            _COM_Outptr_  void **ppvObject);
+        HRESULT ( STDMETHODCALLTYPE *ThreadAssignedToOSThread )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ThreadID managedThreadId,
+            /* [in] */ DWORD osThreadId);
         
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerInfo * This);
+        HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationStarted )( 
+            ICorProfilerCallback8 * This);
         
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerInfo * This);
+        HRESULT ( STDMETHODCALLTYPE *RemotingClientSendingMessage )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ GUID *pCookie,
+            /* [in] */ BOOL fIsAsync);
         
-        HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ObjectID objectId,
-            /* [out] */ ClassID *pClassId);
+        HRESULT ( STDMETHODCALLTYPE *RemotingClientReceivingReply )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ GUID *pCookie,
+            /* [in] */ BOOL fIsAsync);
         
-        HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ mdTypeDef typeDef,
-            /* [out] */ ClassID *pClassId);
+        HRESULT ( STDMETHODCALLTYPE *RemotingClientInvocationFinished )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
-            ICorProfilerInfo * This,
+        HRESULT ( STDMETHODCALLTYPE *RemotingServerReceivingMessage )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ GUID *pCookie,
+            /* [in] */ BOOL fIsAsync);
+        
+        HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationStarted )( 
+            ICorProfilerCallback8 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *RemotingServerInvocationReturned )( 
+            ICorProfilerCallback8 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *RemotingServerSendingReply )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ GUID *pCookie,
+            /* [in] */ BOOL fIsAsync);
+        
+        HRESULT ( STDMETHODCALLTYPE *UnmanagedToManagedTransition )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ FunctionID functionId,
-            /* [out] */ LPCBYTE *pStart,
-            /* [out] */ ULONG *pcSize);
+            /* [in] */ COR_PRF_TRANSITION_REASON reason);
         
-        HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
-            ICorProfilerInfo * This,
-            /* [out] */ DWORD *pdwEvents);
+        HRESULT ( STDMETHODCALLTYPE *ManagedToUnmanagedTransition )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_TRANSITION_REASON reason);
         
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
-            ICorProfilerInfo * This,
-            /* [in] */ LPCBYTE ip,
-            /* [out] */ FunctionID *pFunctionId);
+        HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ COR_PRF_SUSPEND_REASON suspendReason);
         
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ mdToken token,
-            /* [out] */ FunctionID *pFunctionId);
+        HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendFinished )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ThreadID threadId,
-            /* [out] */ HANDLE *phThread);
+        HRESULT ( STDMETHODCALLTYPE *RuntimeSuspendAborted )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ObjectID objectId,
-            /* [out] */ ULONG *pcSize);
+        HRESULT ( STDMETHODCALLTYPE *RuntimeResumeStarted )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ClassID classId,
-            /* [out] */ CorElementType *pBaseElemType,
-            /* [out] */ ClassID *pBaseClassId,
-            /* [out] */ ULONG *pcRank);
+        HRESULT ( STDMETHODCALLTYPE *RuntimeResumeFinished )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ThreadID threadId,
-            /* [out] */ DWORD *pdwWin32ThreadId);
+        HRESULT ( STDMETHODCALLTYPE *RuntimeThreadSuspended )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ThreadID threadId);
         
-        HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
-            ICorProfilerInfo * This,
-            /* [out] */ ThreadID *pThreadId);
+        HRESULT ( STDMETHODCALLTYPE *RuntimeThreadResumed )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ThreadID threadId);
         
-        HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ClassID classId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdTypeDef *pTypeDefToken);
+        HRESULT ( STDMETHODCALLTYPE *MovedReferences )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cMovedObjectIDRanges,
+            /* [size_is][in] */ ObjectID oldObjectIDRangeStart[  ],
+            /* [size_is][in] */ ObjectID newObjectIDRangeStart[  ],
+            /* [size_is][in] */ ULONG cObjectIDRangeLength[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
-            ICorProfilerInfo * This,
-            /* [in] */ FunctionID functionId,
-            /* [out] */ ClassID *pClassId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdToken *pToken);
+        HRESULT ( STDMETHODCALLTYPE *ObjectAllocated )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ObjectID objectId,
+            /* [in] */ ClassID classId);
         
-        HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
-            ICorProfilerInfo * This,
-            /* [in] */ DWORD dwEvents);
+        HRESULT ( STDMETHODCALLTYPE *ObjectsAllocatedByClass )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cClassCount,
+            /* [size_is][in] */ ClassID classIds[  ],
+            /* [size_is][in] */ ULONG cObjects[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
-            ICorProfilerInfo * This,
-            /* [in] */ FunctionEnter *pFuncEnter,
-            /* [in] */ FunctionLeave *pFuncLeave,
-            /* [in] */ FunctionTailcall *pFuncTailcall);
+        HRESULT ( STDMETHODCALLTYPE *ObjectReferences )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ObjectID objectId,
+            /* [in] */ ClassID classId,
+            /* [in] */ ULONG cObjectRefs,
+            /* [size_is][in] */ ObjectID objectRefIds[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
-            ICorProfilerInfo * This,
-            /* [in] */ FunctionIDMapper *pFunc);
+        HRESULT ( STDMETHODCALLTYPE *RootReferences )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cRootRefs,
+            /* [size_is][in] */ ObjectID rootRefIds[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
-            ICorProfilerInfo * This,
-            /* [in] */ FunctionID functionId,
-            /* [in] */ REFIID riid,
-            /* [out] */ IUnknown **ppImport,
-            /* [out] */ mdToken *pToken);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionThrown )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ObjectID thrownObjectId);
         
-        HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ModuleID moduleId,
-            /* [out] */ LPCBYTE *ppBaseLoadAddress,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ AssemblyID *pAssemblyId);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionEnter )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId);
         
-        HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ DWORD dwOpenFlags,
-            /* [in] */ REFIID riid,
-            /* [out] */ IUnknown **ppOut);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFunctionLeave )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ mdMethodDef methodId,
-            /* [out] */ LPCBYTE *ppMethodHeader,
-            /* [out] */ ULONG *pcbMethodSize);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterEnter )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId);
         
-        HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ModuleID moduleId,
-            /* [out] */ IMethodMalloc **ppMalloc);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionSearchFilterLeave )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerInfo * This,
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ mdMethodDef methodid,
-            /* [in] */ LPCBYTE pbNewILMethodHeader);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionSearchCatcherFound )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId);
         
-        HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
-            ICorProfilerInfo * This,
-            /* [in] */ AppDomainID appDomainId,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ ProcessID *pProcessId);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerEnter )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ UINT_PTR __unused);
         
-        HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
-            ICorProfilerInfo * This,
-            /* [in] */ AssemblyID assemblyId,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ AppDomainID *pAppDomainId,
-            /* [out] */ ModuleID *pModuleId);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionOSHandlerLeave )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ UINT_PTR __unused);
         
-        HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
-            ICorProfilerInfo * This,
+        HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionEnter )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ FunctionID functionId);
         
-        HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
-            ICorProfilerInfo * This);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFunctionLeave )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerInfo * This,
+        HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyEnter )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId);
+        
+        HRESULT ( STDMETHODCALLTYPE *ExceptionUnwindFinallyLeave )( 
+            ICorProfilerCallback8 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ FunctionID functionId,
-            /* [in] */ BOOL fStartJit,
-            /* [in] */ ULONG cILMapEntries,
-            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
+            /* [in] */ ObjectID objectId);
         
-        HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
-            ICorProfilerInfo * This,
-            /* [out] */ IUnknown **ppicd);
+        HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherLeave )( 
+            ICorProfilerCallback8 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
-            ICorProfilerInfo * This,
-            /* [out] */ IUnknown **ppicd);
+        HRESULT ( STDMETHODCALLTYPE *COMClassicVTableCreated )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ClassID wrappedClassId,
+            /* [in] */ REFGUID implementedIID,
+            /* [in] */ void *pVTable,
+            /* [in] */ ULONG cSlots);
         
-        HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
-            ICorProfilerInfo * This,
+        HRESULT ( STDMETHODCALLTYPE *COMClassicVTableDestroyed )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ClassID wrappedClassId,
+            /* [in] */ REFGUID implementedIID,
+            /* [in] */ void *pVTable);
+        
+        HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherFound )( 
+            ICorProfilerCallback8 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ExceptionCLRCatcherExecute )( 
+            ICorProfilerCallback8 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ThreadNameChanged )( 
+            ICorProfilerCallback8 * This,
             /* [in] */ ThreadID threadId,
-            /* [out] */ ContextID *pContextId);
+            /* [in] */ ULONG cchName,
+            /* [annotation][in] */ 
+            _In_reads_opt_(cchName)  WCHAR name[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
-            ICorProfilerInfo * This,
-            /* [in] */ BOOL fThisThreadOnly,
-            /* [out] */ DWORD *pdwProfilerContext);
+        HRESULT ( STDMETHODCALLTYPE *GarbageCollectionStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ int cGenerations,
+            /* [size_is][in] */ BOOL generationCollected[  ],
+            /* [in] */ COR_PRF_GC_REASON reason);
         
-        HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
-            ICorProfilerInfo * This,
-            /* [in] */ DWORD dwProfilerContext);
+        HRESULT ( STDMETHODCALLTYPE *SurvivingReferences )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cSurvivingObjectIDRanges,
+            /* [size_is][in] */ ObjectID objectIDRangeStart[  ],
+            /* [size_is][in] */ ULONG cObjectIDRangeLength[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
-            ICorProfilerInfo * This,
-            /* [in] */ FunctionID functionId,
-            /* [in] */ ULONG32 cMap,
-            /* [out] */ ULONG32 *pcMap,
-            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
+        HRESULT ( STDMETHODCALLTYPE *GarbageCollectionFinished )( 
+            ICorProfilerCallback8 * This);
         
-        END_INTERFACE
-    } ICorProfilerInfoVtbl;
-
-    interface ICorProfilerInfo
-    {
-        CONST_VTBL struct ICorProfilerInfoVtbl *lpVtbl;
-    };
-
-    
+        HRESULT ( STDMETHODCALLTYPE *FinalizeableObjectQueued )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ DWORD finalizerFlags,
+            /* [in] */ ObjectID objectID);
+        
+        HRESULT ( STDMETHODCALLTYPE *RootReferences2 )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cRootRefs,
+            /* [size_is][in] */ ObjectID rootRefIds[  ],
+            /* [size_is][in] */ COR_PRF_GC_ROOT_KIND rootKinds[  ],
+            /* [size_is][in] */ COR_PRF_GC_ROOT_FLAGS rootFlags[  ],
+            /* [size_is][in] */ UINT_PTR rootIds[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *HandleCreated )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ GCHandleID handleId,
+            /* [in] */ ObjectID initialObjectId);
+        
+        HRESULT ( STDMETHODCALLTYPE *HandleDestroyed )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ GCHandleID handleId);
+        
+        HRESULT ( STDMETHODCALLTYPE *InitializeForAttach )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ IUnknown *pCorProfilerInfoUnk,
+            /* [in] */ void *pvClientData,
+            /* [in] */ UINT cbClientData);
+        
+        HRESULT ( STDMETHODCALLTYPE *ProfilerAttachComplete )( 
+            ICorProfilerCallback8 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ProfilerDetachSucceeded )( 
+            ICorProfilerCallback8 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *ReJITCompilationStarted )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ReJITID rejitId,
+            /* [in] */ BOOL fIsSafeToBlock);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetReJITParameters )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodId,
+            /* [in] */ ICorProfilerFunctionControl *pFunctionControl);
+        
+        HRESULT ( STDMETHODCALLTYPE *ReJITCompilationFinished )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ReJITID rejitId,
+            /* [in] */ HRESULT hrStatus,
+            /* [in] */ BOOL fIsSafeToBlock);
+        
+        HRESULT ( STDMETHODCALLTYPE *ReJITError )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodId,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ HRESULT hrStatus);
+        
+        HRESULT ( STDMETHODCALLTYPE *MovedReferences2 )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cMovedObjectIDRanges,
+            /* [size_is][in] */ ObjectID oldObjectIDRangeStart[  ],
+            /* [size_is][in] */ ObjectID newObjectIDRangeStart[  ],
+            /* [size_is][in] */ SIZE_T cObjectIDRangeLength[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *SurvivingReferences2 )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cSurvivingObjectIDRanges,
+            /* [size_is][in] */ ObjectID objectIDRangeStart[  ],
+            /* [size_is][in] */ SIZE_T cObjectIDRangeLength[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *ConditionalWeakTableElementReferences )( 
+            ICorProfilerCallback8 * This,
+            /* [in] */ ULONG cRootRefs,
+            /* [size_is][in] */ ObjectID keyRefIds[  ],
+            /* [size_is][in] */ ObjectID valueRefIds[  ],
+            /* [size_is][in] */ GCHandleID rootIds[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAssemblyReferences )( 
+            ICorProfilerCallback8 * This,
+            /* [string][in] */ const WCHAR *wszAssemblyPath,
+            /* [in] */ ICorProfilerAssemblyReferenceProvider *pAsmRefProvider);
+        
+        HRESULT ( STDMETHODCALLTYPE *ModuleInMemorySymbolsUpdated )( 
+            ICorProfilerCallback8 * This,
+            ModuleID moduleId);
+        
+        HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationStarted )( 
+            ICorProfilerCallback8 * This,
+            FunctionID functionId,
+            LPCBYTE ilHeader);
+        
+        HRESULT ( STDMETHODCALLTYPE *DynamicMethodJITCompilationFinished )( 
+            ICorProfilerCallback8 * This,
+            FunctionID functionId);
+        
+        END_INTERFACE
+    } ICorProfilerCallback8Vtbl;
+
+    interface ICorProfilerCallback8
+    {
+        CONST_VTBL struct ICorProfilerCallback8Vtbl *lpVtbl;
+    };
+
+    
 
 #ifdef COBJMACROS
 
 
-#define ICorProfilerInfo_QueryInterface(This,riid,ppvObject)   \
+#define ICorProfilerCallback8_QueryInterface(This,riid,ppvObject)      \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerInfo_AddRef(This)  \
+#define ICorProfilerCallback8_AddRef(This)     \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerInfo_Release(This) \
+#define ICorProfilerCallback8_Release(This)    \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerInfo_GetClassFromObject(This,objectId,pClassId)    \
-    ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
+#define ICorProfilerCallback8_Initialize(This,pICorProfilerInfoUnk)    \
+    ( (This)->lpVtbl -> Initialize(This,pICorProfilerInfoUnk) ) 
 
-#define ICorProfilerInfo_GetClassFromToken(This,moduleId,typeDef,pClassId)     \
-    ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
+#define ICorProfilerCallback8_Shutdown(This)   \
+    ( (This)->lpVtbl -> Shutdown(This) ) 
 
-#define ICorProfilerInfo_GetCodeInfo(This,functionId,pStart,pcSize)    \
-    ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
+#define ICorProfilerCallback8_AppDomainCreationStarted(This,appDomainId)       \
+    ( (This)->lpVtbl -> AppDomainCreationStarted(This,appDomainId) ) 
 
-#define ICorProfilerInfo_GetEventMask(This,pdwEvents)  \
-    ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
+#define ICorProfilerCallback8_AppDomainCreationFinished(This,appDomainId,hrStatus)     \
+    ( (This)->lpVtbl -> AppDomainCreationFinished(This,appDomainId,hrStatus) ) 
 
-#define ICorProfilerInfo_GetFunctionFromIP(This,ip,pFunctionId)        \
-    ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
+#define ICorProfilerCallback8_AppDomainShutdownStarted(This,appDomainId)       \
+    ( (This)->lpVtbl -> AppDomainShutdownStarted(This,appDomainId) ) 
 
-#define ICorProfilerInfo_GetFunctionFromToken(This,moduleId,token,pFunctionId) \
-    ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
+#define ICorProfilerCallback8_AppDomainShutdownFinished(This,appDomainId,hrStatus)     \
+    ( (This)->lpVtbl -> AppDomainShutdownFinished(This,appDomainId,hrStatus) ) 
 
-#define ICorProfilerInfo_GetHandleFromThread(This,threadId,phThread)   \
-    ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
+#define ICorProfilerCallback8_AssemblyLoadStarted(This,assemblyId)     \
+    ( (This)->lpVtbl -> AssemblyLoadStarted(This,assemblyId) ) 
 
-#define ICorProfilerInfo_GetObjectSize(This,objectId,pcSize)   \
-    ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
+#define ICorProfilerCallback8_AssemblyLoadFinished(This,assemblyId,hrStatus)   \
+    ( (This)->lpVtbl -> AssemblyLoadFinished(This,assemblyId,hrStatus) ) 
 
-#define ICorProfilerInfo_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank)  \
-    ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
+#define ICorProfilerCallback8_AssemblyUnloadStarted(This,assemblyId)   \
+    ( (This)->lpVtbl -> AssemblyUnloadStarted(This,assemblyId) ) 
 
-#define ICorProfilerInfo_GetThreadInfo(This,threadId,pdwWin32ThreadId) \
-    ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
+#define ICorProfilerCallback8_AssemblyUnloadFinished(This,assemblyId,hrStatus) \
+    ( (This)->lpVtbl -> AssemblyUnloadFinished(This,assemblyId,hrStatus) ) 
 
-#define ICorProfilerInfo_GetCurrentThreadID(This,pThreadId)    \
-    ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
+#define ICorProfilerCallback8_ModuleLoadStarted(This,moduleId) \
+    ( (This)->lpVtbl -> ModuleLoadStarted(This,moduleId) ) 
 
-#define ICorProfilerInfo_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken)  \
-    ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
+#define ICorProfilerCallback8_ModuleLoadFinished(This,moduleId,hrStatus)       \
+    ( (This)->lpVtbl -> ModuleLoadFinished(This,moduleId,hrStatus) ) 
 
-#define ICorProfilerInfo_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)    \
-    ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
+#define ICorProfilerCallback8_ModuleUnloadStarted(This,moduleId)       \
+    ( (This)->lpVtbl -> ModuleUnloadStarted(This,moduleId) ) 
 
-#define ICorProfilerInfo_SetEventMask(This,dwEvents)   \
-    ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
+#define ICorProfilerCallback8_ModuleUnloadFinished(This,moduleId,hrStatus)     \
+    ( (This)->lpVtbl -> ModuleUnloadFinished(This,moduleId,hrStatus) ) 
 
-#define ICorProfilerInfo_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall)  \
-    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
+#define ICorProfilerCallback8_ModuleAttachedToAssembly(This,moduleId,AssemblyId)       \
+    ( (This)->lpVtbl -> ModuleAttachedToAssembly(This,moduleId,AssemblyId) ) 
 
-#define ICorProfilerInfo_SetFunctionIDMapper(This,pFunc)       \
-    ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
+#define ICorProfilerCallback8_ClassLoadStarted(This,classId)   \
+    ( (This)->lpVtbl -> ClassLoadStarted(This,classId) ) 
 
-#define ICorProfilerInfo_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \
-    ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
+#define ICorProfilerCallback8_ClassLoadFinished(This,classId,hrStatus) \
+    ( (This)->lpVtbl -> ClassLoadFinished(This,classId,hrStatus) ) 
 
-#define ICorProfilerInfo_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)    \
-    ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
+#define ICorProfilerCallback8_ClassUnloadStarted(This,classId) \
+    ( (This)->lpVtbl -> ClassUnloadStarted(This,classId) ) 
 
-#define ICorProfilerInfo_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)       \
-    ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
+#define ICorProfilerCallback8_ClassUnloadFinished(This,classId,hrStatus)       \
+    ( (This)->lpVtbl -> ClassUnloadFinished(This,classId,hrStatus) ) 
 
-#define ICorProfilerInfo_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)        \
-    ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
+#define ICorProfilerCallback8_FunctionUnloadStarted(This,functionId)   \
+    ( (This)->lpVtbl -> FunctionUnloadStarted(This,functionId) ) 
 
-#define ICorProfilerInfo_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)    \
-    ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
+#define ICorProfilerCallback8_JITCompilationStarted(This,functionId,fIsSafeToBlock)    \
+    ( (This)->lpVtbl -> JITCompilationStarted(This,functionId,fIsSafeToBlock) ) 
 
-#define ICorProfilerInfo_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \
-    ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
+#define ICorProfilerCallback8_JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock)  \
+    ( (This)->lpVtbl -> JITCompilationFinished(This,functionId,hrStatus,fIsSafeToBlock) ) 
 
-#define ICorProfilerInfo_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \
-    ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
+#define ICorProfilerCallback8_JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction)      \
+    ( (This)->lpVtbl -> JITCachedFunctionSearchStarted(This,functionId,pbUseCachedFunction) ) 
 
-#define ICorProfilerInfo_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)       \
-    ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
+#define ICorProfilerCallback8_JITCachedFunctionSearchFinished(This,functionId,result)  \
+    ( (This)->lpVtbl -> JITCachedFunctionSearchFinished(This,functionId,result) ) 
 
-#define ICorProfilerInfo_SetFunctionReJIT(This,functionId)     \
-    ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
+#define ICorProfilerCallback8_JITFunctionPitched(This,functionId)      \
+    ( (This)->lpVtbl -> JITFunctionPitched(This,functionId) ) 
 
-#define ICorProfilerInfo_ForceGC(This) \
-    ( (This)->lpVtbl -> ForceGC(This) ) 
+#define ICorProfilerCallback8_JITInlining(This,callerId,calleeId,pfShouldInline)       \
+    ( (This)->lpVtbl -> JITInlining(This,callerId,calleeId,pfShouldInline) ) 
 
-#define ICorProfilerInfo_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)      \
-    ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
+#define ICorProfilerCallback8_ThreadCreated(This,threadId)     \
+    ( (This)->lpVtbl -> ThreadCreated(This,threadId) ) 
 
-#define ICorProfilerInfo_GetInprocInspectionInterface(This,ppicd)      \
-    ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
+#define ICorProfilerCallback8_ThreadDestroyed(This,threadId)   \
+    ( (This)->lpVtbl -> ThreadDestroyed(This,threadId) ) 
 
-#define ICorProfilerInfo_GetInprocInspectionIThisThread(This,ppicd)    \
-    ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
+#define ICorProfilerCallback8_ThreadAssignedToOSThread(This,managedThreadId,osThreadId)        \
+    ( (This)->lpVtbl -> ThreadAssignedToOSThread(This,managedThreadId,osThreadId) ) 
 
-#define ICorProfilerInfo_GetThreadContext(This,threadId,pContextId)    \
-    ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
+#define ICorProfilerCallback8_RemotingClientInvocationStarted(This)    \
+    ( (This)->lpVtbl -> RemotingClientInvocationStarted(This) ) 
 
-#define ICorProfilerInfo_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \
-    ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
+#define ICorProfilerCallback8_RemotingClientSendingMessage(This,pCookie,fIsAsync)      \
+    ( (This)->lpVtbl -> RemotingClientSendingMessage(This,pCookie,fIsAsync) ) 
 
-#define ICorProfilerInfo_EndInprocDebugging(This,dwProfilerContext)    \
-    ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
+#define ICorProfilerCallback8_RemotingClientReceivingReply(This,pCookie,fIsAsync)      \
+    ( (This)->lpVtbl -> RemotingClientReceivingReply(This,pCookie,fIsAsync) ) 
 
-#define ICorProfilerInfo_GetILToNativeMapping(This,functionId,cMap,pcMap,map)  \
-    ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
+#define ICorProfilerCallback8_RemotingClientInvocationFinished(This)   \
+    ( (This)->lpVtbl -> RemotingClientInvocationFinished(This) ) 
 
-#endif /* COBJMACROS */
+#define ICorProfilerCallback8_RemotingServerReceivingMessage(This,pCookie,fIsAsync)    \
+    ( (This)->lpVtbl -> RemotingServerReceivingMessage(This,pCookie,fIsAsync) ) 
 
+#define ICorProfilerCallback8_RemotingServerInvocationStarted(This)    \
+    ( (This)->lpVtbl -> RemotingServerInvocationStarted(This) ) 
 
-#endif         /* C style interface */
+#define ICorProfilerCallback8_RemotingServerInvocationReturned(This)   \
+    ( (This)->lpVtbl -> RemotingServerInvocationReturned(This) ) 
 
+#define ICorProfilerCallback8_RemotingServerSendingReply(This,pCookie,fIsAsync)        \
+    ( (This)->lpVtbl -> RemotingServerSendingReply(This,pCookie,fIsAsync) ) 
 
+#define ICorProfilerCallback8_UnmanagedToManagedTransition(This,functionId,reason)     \
+    ( (This)->lpVtbl -> UnmanagedToManagedTransition(This,functionId,reason) ) 
 
+#define ICorProfilerCallback8_ManagedToUnmanagedTransition(This,functionId,reason)     \
+    ( (This)->lpVtbl -> ManagedToUnmanagedTransition(This,functionId,reason) ) 
 
-#endif         /* __ICorProfilerInfo_INTERFACE_DEFINED__ */
+#define ICorProfilerCallback8_RuntimeSuspendStarted(This,suspendReason)        \
+    ( (This)->lpVtbl -> RuntimeSuspendStarted(This,suspendReason) ) 
 
+#define ICorProfilerCallback8_RuntimeSuspendFinished(This)     \
+    ( (This)->lpVtbl -> RuntimeSuspendFinished(This) ) 
 
-#ifndef __ICorProfilerInfo2_INTERFACE_DEFINED__
-#define __ICorProfilerInfo2_INTERFACE_DEFINED__
+#define ICorProfilerCallback8_RuntimeSuspendAborted(This)      \
+    ( (This)->lpVtbl -> RuntimeSuspendAborted(This) ) 
 
-/* interface ICorProfilerInfo2 */
-/* [local][unique][uuid][object] */ 
+#define ICorProfilerCallback8_RuntimeResumeStarted(This)       \
+    ( (This)->lpVtbl -> RuntimeResumeStarted(This) ) 
 
+#define ICorProfilerCallback8_RuntimeResumeFinished(This)      \
+    ( (This)->lpVtbl -> RuntimeResumeFinished(This) ) 
 
-EXTERN_C const IID IID_ICorProfilerInfo2;
+#define ICorProfilerCallback8_RuntimeThreadSuspended(This,threadId)    \
+    ( (This)->lpVtbl -> RuntimeThreadSuspended(This,threadId) ) 
 
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("CC0935CD-A518-487d-B0BB-A93214E65478")
-    ICorProfilerInfo2 : public ICorProfilerInfo
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE DoStackSnapshot( 
-            /* [in] */ ThreadID thread,
-            /* [in] */ StackSnapshotCallback *callback,
-            /* [in] */ ULONG32 infoFlags,
-            /* [in] */ void *clientData,
-            /* [size_is][in] */ BYTE context[  ],
-            /* [in] */ ULONG32 contextSize) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks2( 
-            /* [in] */ FunctionEnter2 *pFuncEnter,
-            /* [in] */ FunctionLeave2 *pFuncLeave,
-            /* [in] */ FunctionTailcall2 *pFuncTailcall) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionInfo2( 
-            /* [in] */ FunctionID funcId,
-            /* [in] */ COR_PRF_FRAME_INFO frameInfo,
-            /* [out] */ ClassID *pClassId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdToken *pToken,
-            /* [in] */ ULONG32 cTypeArgs,
-            /* [out] */ ULONG32 *pcTypeArgs,
-            /* [out] */ ClassID typeArgs[  ]) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetStringLayout( 
-            /* [out] */ ULONG *pBufferLengthOffset,
-            /* [out] */ ULONG *pStringLengthOffset,
-            /* [out] */ ULONG *pBufferOffset) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetClassLayout( 
-            /* [in] */ ClassID classID,
-            /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
-            /* [in] */ ULONG cFieldOffset,
-            /* [out] */ ULONG *pcFieldOffset,
-            /* [out] */ ULONG *pulClassSize) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetClassIDInfo2( 
-            /* [in] */ ClassID classId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdTypeDef *pTypeDefToken,
-            /* [out] */ ClassID *pParentClassId,
-            /* [in] */ ULONG32 cNumTypeArgs,
-            /* [out] */ ULONG32 *pcNumTypeArgs,
-            /* [out] */ ClassID typeArgs[  ]) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetCodeInfo2( 
-            /* [in] */ FunctionID functionID,
-            /* [in] */ ULONG32 cCodeInfos,
-            /* [out] */ ULONG32 *pcCodeInfos,
-            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]) = 0;
+#define ICorProfilerCallback8_RuntimeThreadResumed(This,threadId)      \
+    ( (This)->lpVtbl -> RuntimeThreadResumed(This,threadId) ) 
+
+#define ICorProfilerCallback8_MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength)      \
+    ( (This)->lpVtbl -> MovedReferences(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) 
+
+#define ICorProfilerCallback8_ObjectAllocated(This,objectId,classId)   \
+    ( (This)->lpVtbl -> ObjectAllocated(This,objectId,classId) ) 
+
+#define ICorProfilerCallback8_ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects)      \
+    ( (This)->lpVtbl -> ObjectsAllocatedByClass(This,cClassCount,classIds,cObjects) ) 
+
+#define ICorProfilerCallback8_ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) \
+    ( (This)->lpVtbl -> ObjectReferences(This,objectId,classId,cObjectRefs,objectRefIds) ) 
+
+#define ICorProfilerCallback8_RootReferences(This,cRootRefs,rootRefIds)        \
+    ( (This)->lpVtbl -> RootReferences(This,cRootRefs,rootRefIds) ) 
+
+#define ICorProfilerCallback8_ExceptionThrown(This,thrownObjectId)     \
+    ( (This)->lpVtbl -> ExceptionThrown(This,thrownObjectId) ) 
+
+#define ICorProfilerCallback8_ExceptionSearchFunctionEnter(This,functionId)    \
+    ( (This)->lpVtbl -> ExceptionSearchFunctionEnter(This,functionId) ) 
+
+#define ICorProfilerCallback8_ExceptionSearchFunctionLeave(This)       \
+    ( (This)->lpVtbl -> ExceptionSearchFunctionLeave(This) ) 
+
+#define ICorProfilerCallback8_ExceptionSearchFilterEnter(This,functionId)      \
+    ( (This)->lpVtbl -> ExceptionSearchFilterEnter(This,functionId) ) 
+
+#define ICorProfilerCallback8_ExceptionSearchFilterLeave(This) \
+    ( (This)->lpVtbl -> ExceptionSearchFilterLeave(This) ) 
+
+#define ICorProfilerCallback8_ExceptionSearchCatcherFound(This,functionId)     \
+    ( (This)->lpVtbl -> ExceptionSearchCatcherFound(This,functionId) ) 
+
+#define ICorProfilerCallback8_ExceptionOSHandlerEnter(This,__unused)   \
+    ( (This)->lpVtbl -> ExceptionOSHandlerEnter(This,__unused) ) 
+
+#define ICorProfilerCallback8_ExceptionOSHandlerLeave(This,__unused)   \
+    ( (This)->lpVtbl -> ExceptionOSHandlerLeave(This,__unused) ) 
+
+#define ICorProfilerCallback8_ExceptionUnwindFunctionEnter(This,functionId)    \
+    ( (This)->lpVtbl -> ExceptionUnwindFunctionEnter(This,functionId) ) 
+
+#define ICorProfilerCallback8_ExceptionUnwindFunctionLeave(This)       \
+    ( (This)->lpVtbl -> ExceptionUnwindFunctionLeave(This) ) 
+
+#define ICorProfilerCallback8_ExceptionUnwindFinallyEnter(This,functionId)     \
+    ( (This)->lpVtbl -> ExceptionUnwindFinallyEnter(This,functionId) ) 
+
+#define ICorProfilerCallback8_ExceptionUnwindFinallyLeave(This)        \
+    ( (This)->lpVtbl -> ExceptionUnwindFinallyLeave(This) ) 
+
+#define ICorProfilerCallback8_ExceptionCatcherEnter(This,functionId,objectId)  \
+    ( (This)->lpVtbl -> ExceptionCatcherEnter(This,functionId,objectId) ) 
+
+#define ICorProfilerCallback8_ExceptionCatcherLeave(This)      \
+    ( (This)->lpVtbl -> ExceptionCatcherLeave(This) ) 
+
+#define ICorProfilerCallback8_COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots)       \
+    ( (This)->lpVtbl -> COMClassicVTableCreated(This,wrappedClassId,implementedIID,pVTable,cSlots) ) 
+
+#define ICorProfilerCallback8_COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable)    \
+    ( (This)->lpVtbl -> COMClassicVTableDestroyed(This,wrappedClassId,implementedIID,pVTable) ) 
+
+#define ICorProfilerCallback8_ExceptionCLRCatcherFound(This)   \
+    ( (This)->lpVtbl -> ExceptionCLRCatcherFound(This) ) 
+
+#define ICorProfilerCallback8_ExceptionCLRCatcherExecute(This) \
+    ( (This)->lpVtbl -> ExceptionCLRCatcherExecute(This) ) 
+
+
+#define ICorProfilerCallback8_ThreadNameChanged(This,threadId,cchName,name)    \
+    ( (This)->lpVtbl -> ThreadNameChanged(This,threadId,cchName,name) ) 
+
+#define ICorProfilerCallback8_GarbageCollectionStarted(This,cGenerations,generationCollected,reason)   \
+    ( (This)->lpVtbl -> GarbageCollectionStarted(This,cGenerations,generationCollected,reason) ) 
+
+#define ICorProfilerCallback8_SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength)       \
+    ( (This)->lpVtbl -> SurvivingReferences(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) 
+
+#define ICorProfilerCallback8_GarbageCollectionFinished(This)  \
+    ( (This)->lpVtbl -> GarbageCollectionFinished(This) ) 
+
+#define ICorProfilerCallback8_FinalizeableObjectQueued(This,finalizerFlags,objectID)   \
+    ( (This)->lpVtbl -> FinalizeableObjectQueued(This,finalizerFlags,objectID) ) 
+
+#define ICorProfilerCallback8_RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds)   \
+    ( (This)->lpVtbl -> RootReferences2(This,cRootRefs,rootRefIds,rootKinds,rootFlags,rootIds) ) 
+
+#define ICorProfilerCallback8_HandleCreated(This,handleId,initialObjectId)     \
+    ( (This)->lpVtbl -> HandleCreated(This,handleId,initialObjectId) ) 
+
+#define ICorProfilerCallback8_HandleDestroyed(This,handleId)   \
+    ( (This)->lpVtbl -> HandleDestroyed(This,handleId) ) 
+
+
+#define ICorProfilerCallback8_InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData)  \
+    ( (This)->lpVtbl -> InitializeForAttach(This,pCorProfilerInfoUnk,pvClientData,cbClientData) ) 
+
+#define ICorProfilerCallback8_ProfilerAttachComplete(This)     \
+    ( (This)->lpVtbl -> ProfilerAttachComplete(This) ) 
+
+#define ICorProfilerCallback8_ProfilerDetachSucceeded(This)    \
+    ( (This)->lpVtbl -> ProfilerDetachSucceeded(This) ) 
+
+
+#define ICorProfilerCallback8_ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock)  \
+    ( (This)->lpVtbl -> ReJITCompilationStarted(This,functionId,rejitId,fIsSafeToBlock) ) 
+
+#define ICorProfilerCallback8_GetReJITParameters(This,moduleId,methodId,pFunctionControl)      \
+    ( (This)->lpVtbl -> GetReJITParameters(This,moduleId,methodId,pFunctionControl) ) 
+
+#define ICorProfilerCallback8_ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock)        \
+    ( (This)->lpVtbl -> ReJITCompilationFinished(This,functionId,rejitId,hrStatus,fIsSafeToBlock) ) 
+
+#define ICorProfilerCallback8_ReJITError(This,moduleId,methodId,functionId,hrStatus)   \
+    ( (This)->lpVtbl -> ReJITError(This,moduleId,methodId,functionId,hrStatus) ) 
+
+#define ICorProfilerCallback8_MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength)     \
+    ( (This)->lpVtbl -> MovedReferences2(This,cMovedObjectIDRanges,oldObjectIDRangeStart,newObjectIDRangeStart,cObjectIDRangeLength) ) 
+
+#define ICorProfilerCallback8_SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength)      \
+    ( (This)->lpVtbl -> SurvivingReferences2(This,cSurvivingObjectIDRanges,objectIDRangeStart,cObjectIDRangeLength) ) 
+
+
+#define ICorProfilerCallback8_ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds)      \
+    ( (This)->lpVtbl -> ConditionalWeakTableElementReferences(This,cRootRefs,keyRefIds,valueRefIds,rootIds) ) 
+
+
+#define ICorProfilerCallback8_GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider)      \
+    ( (This)->lpVtbl -> GetAssemblyReferences(This,wszAssemblyPath,pAsmRefProvider) ) 
+
+
+#define ICorProfilerCallback8_ModuleInMemorySymbolsUpdated(This,moduleId)      \
+    ( (This)->lpVtbl -> ModuleInMemorySymbolsUpdated(This,moduleId) ) 
+
+
+#define ICorProfilerCallback8_DynamicMethodJITCompilationStarted(This,functionId,ilHeader)     \
+    ( (This)->lpVtbl -> DynamicMethodJITCompilationStarted(This,functionId,ilHeader) ) 
+
+#define ICorProfilerCallback8_DynamicMethodJITCompilationFinished(This,functionId)     \
+    ( (This)->lpVtbl -> DynamicMethodJITCompilationFinished(This,functionId) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __ICorProfilerCallback8_INTERFACE_DEFINED__ */
+
+
+/* interface __MIDL_itf_corprof_0000_0008 */
+/* [local] */ 
+
+typedef /* [public] */ 
+enum __MIDL___MIDL_itf_corprof_0000_0008_0001
+    {
+        COR_PRF_CODEGEN_DISABLE_INLINING       = 0x1,
+        COR_PRF_CODEGEN_DISABLE_ALL_OPTIMIZATIONS      = 0x2
+    }  COR_PRF_CODEGEN_FLAGS;
+
+
+
+extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0008_v0_0_c_ifspec;
+extern RPC_IF_HANDLE __MIDL_itf_corprof_0000_0008_v0_0_s_ifspec;
+
+#ifndef __ICorProfilerInfo_INTERFACE_DEFINED__
+#define __ICorProfilerInfo_INTERFACE_DEFINED__
+
+/* interface ICorProfilerInfo */
+/* [local][unique][uuid][object] */ 
+
+
+EXTERN_C const IID IID_ICorProfilerInfo;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("28B5557D-3F3F-48b4-90B2-5F9EEA2F6C48")
+    ICorProfilerInfo : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE GetClassFromObject( 
+            /* [in] */ ObjectID objectId,
+            /* [out] */ ClassID *pClassId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetClassFromTokenAndTypeArgs
-            /* [in] */ ModuleID moduleID,
+        virtual HRESULT STDMETHODCALLTYPE GetClassFromToken( 
+            /* [in] */ ModuleID moduleId,
             /* [in] */ mdTypeDef typeDef,
-            /* [in] */ ULONG32 cTypeArgs,
-            /* [size_is][in] */ ClassID typeArgs[  ],
-            /* [out] */ ClassID *pClassID) = 0;
+            /* [out] */ ClassID *pClassId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromTokenAndTypeArgs( 
-            /* [in] */ ModuleID moduleID,
-            /* [in] */ mdMethodDef funcDef,
-            /* [in] */ ClassID classId,
-            /* [in] */ ULONG32 cTypeArgs,
-            /* [size_is][in] */ ClassID typeArgs[  ],
-            /* [out] */ FunctionID *pFunctionID) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetCodeInfo( 
+            /* [in] */ FunctionID functionId,
+            /* [out] */ LPCBYTE *pStart,
+            /* [out] */ ULONG *pcSize) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE EnumModuleFrozenObjects( 
-            /* [in] */ ModuleID moduleID,
-            /* [out] */ ICorProfilerObjectEnum **ppEnum) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetEventMask( 
+            /* [out] */ DWORD *pdwEvents) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetArrayObjectInfo( 
-            /* [in] */ ObjectID objectId,
-            /* [in] */ ULONG32 cDimensions,
-            /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
-            /* [size_is][out] */ int pDimensionLowerBounds[  ],
-            /* [out] */ BYTE **ppData) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP( 
+            /* [in] */ LPCBYTE ip,
+            /* [out] */ FunctionID *pFunctionId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetBoxClassLayout( 
-            /* [in] */ ClassID classId,
-            /* [out] */ ULONG32 *pBufferOffset) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromToken( 
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdToken token,
+            /* [out] */ FunctionID *pFunctionId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetThreadAppDomain
+        virtual HRESULT STDMETHODCALLTYPE GetHandleFromThread
             /* [in] */ ThreadID threadId,
-            /* [out] */ AppDomainID *pAppDomainId) = 0;
+            /* [out] */ HANDLE *phThread) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetRVAStaticAddress( 
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [out] */ void **ppAddress) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetObjectSize( 
+            /* [in] */ ObjectID objectId,
+            /* [out] */ ULONG *pcSize) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetAppDomainStaticAddress( 
+        virtual HRESULT STDMETHODCALLTYPE IsArrayClass( 
             /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [in] */ AppDomainID appDomainId,
-            /* [out] */ void **ppAddress) = 0;
+            /* [out] */ CorElementType *pBaseElemType,
+            /* [out] */ ClassID *pBaseClassId,
+            /* [out] */ ULONG *pcRank) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetThreadStaticAddress( 
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
+        virtual HRESULT STDMETHODCALLTYPE GetThreadInfo( 
             /* [in] */ ThreadID threadId,
-            /* [out] */ void **ppAddress) = 0;
+            /* [out] */ DWORD *pdwWin32ThreadId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetContextStaticAddress( 
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [in] */ ContextID contextId,
-            /* [out] */ void **ppAddress) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetCurrentThreadID( 
+            /* [out] */ ThreadID *pThreadId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetStaticFieldInfo( 
+        virtual HRESULT STDMETHODCALLTYPE GetClassIDInfo( 
             /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo) = 0;
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdTypeDef *pTypeDefToken) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetGenerationBounds( 
-            /* [in] */ ULONG cObjectRanges,
-            /* [out] */ ULONG *pcObjectRanges,
-            /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionInfo( 
+            /* [in] */ FunctionID functionId,
+            /* [out] */ ClassID *pClassId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdToken *pToken) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetObjectGeneration( 
-            /* [in] */ ObjectID objectId,
-            /* [out] */ COR_PRF_GC_GENERATION_RANGE *range) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetEventMask( 
+            /* [in] */ DWORD dwEvents) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetNotifiedExceptionClauseInfo( 
-            /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks( 
+            /* [in] */ FunctionEnter *pFuncEnter,
+            /* [in] */ FunctionLeave *pFuncLeave,
+            /* [in] */ FunctionTailcall *pFuncTailcall) = 0;
         
-    };
-    
-    
-#else  /* C style interface */
-
-    typedef struct ICorProfilerInfo2Vtbl
-    {
-        BEGIN_INTERFACE
+        virtual HRESULT STDMETHODCALLTYPE SetFunctionIDMapper( 
+            /* [in] */ FunctionIDMapper *pFunc) = 0;
         
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )
-            ICorProfilerInfo2 * This,
+        virtual HRESULT STDMETHODCALLTYPE GetTokenAndMetaDataFromFunction
+            /* [in] */ FunctionID functionId,
             /* [in] */ REFIID riid,
-            /* [annotation][iid_is][out] */ 
-            _COM_Outptr_  void **ppvObject);
+            /* [out] */ IUnknown **ppImport,
+            /* [out] */ mdToken *pToken) = 0;
         
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerInfo2 * This);
+        virtual HRESULT STDMETHODCALLTYPE GetModuleInfo( 
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ LPCBYTE *ppBaseLoadAddress,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AssemblyID *pAssemblyId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetModuleMetaData( 
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ DWORD dwOpenFlags,
+            /* [in] */ REFIID riid,
+            /* [out] */ IUnknown **ppOut) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetILFunctionBody( 
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodId,
+            /* [out] */ LPCBYTE *ppMethodHeader,
+            /* [out] */ ULONG *pcbMethodSize) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetILFunctionBodyAllocator( 
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ IMethodMalloc **ppMalloc) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetILFunctionBody( 
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodid,
+            /* [in] */ LPCBYTE pbNewILMethodHeader) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAppDomainInfo( 
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ ProcessID *pProcessId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAssemblyInfo( 
+            /* [in] */ AssemblyID assemblyId,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AppDomainID *pAppDomainId,
+            /* [out] */ ModuleID *pModuleId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetFunctionReJIT( 
+            /* [in] */ FunctionID functionId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ForceGC( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetILInstrumentedCodeMap( 
+            /* [in] */ FunctionID functionId,
+            /* [in] */ BOOL fStartJit,
+            /* [in] */ ULONG cILMapEntries,
+            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetInprocInspectionInterface( 
+            /* [out] */ IUnknown **ppicd) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetInprocInspectionIThisThread( 
+            /* [out] */ IUnknown **ppicd) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetThreadContext( 
+            /* [in] */ ThreadID threadId,
+            /* [out] */ ContextID *pContextId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE BeginInprocDebugging( 
+            /* [in] */ BOOL fThisThreadOnly,
+            /* [out] */ DWORD *pdwProfilerContext) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EndInprocDebugging( 
+            /* [in] */ DWORD dwProfilerContext) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping( 
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ULONG32 cMap,
+            /* [out] */ ULONG32 *pcMap,
+            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]) = 0;
+        
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct ICorProfilerInfoVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ICorProfilerInfo * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ICorProfilerInfo * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerInfo2 * This);
+            ICorProfilerInfo * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdTypeDef typeDef,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ LPCBYTE *pStart,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [out] */ DWORD *pdwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdToken token,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ HANDLE *phThread);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ClassID classId,
             /* [out] */ CorElementType *pBaseElemType,
             /* [out] */ ClassID *pBaseClassId,
             /* [out] */ ULONG *pcRank);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ DWORD *pdwWin32ThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [out] */ ThreadID *pThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ ClassID *pClassId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ DWORD dwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionEnter *pFuncEnter,
             /* [in] */ FunctionLeave *pFuncLeave,
             /* [in] */ FunctionTailcall *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionIDMapper *pFunc);
         
         HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppImport,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -6599,32 +6913,32 @@ EXTERN_C const IID IID_ICorProfilerInfo2;
             /* [out] */ AssemblyID *pAssemblyId);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ DWORD dwOpenFlags,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppOut);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodId,
             /* [out] */ LPCBYTE *ppMethodHeader,
             /* [out] */ ULONG *pcbMethodSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ IMethodMalloc **ppMalloc);
         
         HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodid,
             /* [in] */ LPCBYTE pbNewILMethodHeader);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ AppDomainID appDomainId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -6633,7 +6947,7 @@ EXTERN_C const IID IID_ICorProfilerInfo2;
             /* [out] */ ProcessID *pProcessId);
         
         HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ AssemblyID assemblyId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -6643,199 +6957,54 @@ EXTERN_C const IID IID_ICorProfilerInfo2;
             /* [out] */ ModuleID *pModuleId);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionID functionId);
         
         HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
-            ICorProfilerInfo2 * This);
+            ICorProfilerInfo * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ BOOL fStartJit,
             /* [in] */ ULONG cILMapEntries,
             /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ ContextID *pContextId);
         
         HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ BOOL fThisThreadOnly,
             /* [out] */ DWORD *pdwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ DWORD dwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
-            ICorProfilerInfo2 * This,
+            ICorProfilerInfo * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG32 cMap,
             /* [out] */ ULONG32 *pcMap,
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ThreadID thread,
-            /* [in] */ StackSnapshotCallback *callback,
-            /* [in] */ ULONG32 infoFlags,
-            /* [in] */ void *clientData,
-            /* [size_is][in] */ BYTE context[  ],
-            /* [in] */ ULONG32 contextSize);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ FunctionEnter2 *pFuncEnter,
-            /* [in] */ FunctionLeave2 *pFuncLeave,
-            /* [in] */ FunctionTailcall2 *pFuncTailcall);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ FunctionID funcId,
-            /* [in] */ COR_PRF_FRAME_INFO frameInfo,
-            /* [out] */ ClassID *pClassId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdToken *pToken,
-            /* [in] */ ULONG32 cTypeArgs,
-            /* [out] */ ULONG32 *pcTypeArgs,
-            /* [out] */ ClassID typeArgs[  ]);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
-            ICorProfilerInfo2 * This,
-            /* [out] */ ULONG *pBufferLengthOffset,
-            /* [out] */ ULONG *pStringLengthOffset,
-            /* [out] */ ULONG *pBufferOffset);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classID,
-            /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
-            /* [in] */ ULONG cFieldOffset,
-            /* [out] */ ULONG *pcFieldOffset,
-            /* [out] */ ULONG *pulClassSize);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classId,
-            /* [out] */ ModuleID *pModuleId,
-            /* [out] */ mdTypeDef *pTypeDefToken,
-            /* [out] */ ClassID *pParentClassId,
-            /* [in] */ ULONG32 cNumTypeArgs,
-            /* [out] */ ULONG32 *pcNumTypeArgs,
-            /* [out] */ ClassID typeArgs[  ]);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ FunctionID functionID,
-            /* [in] */ ULONG32 cCodeInfos,
-            /* [out] */ ULONG32 *pcCodeInfos,
-            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ModuleID moduleID,
-            /* [in] */ mdTypeDef typeDef,
-            /* [in] */ ULONG32 cTypeArgs,
-            /* [size_is][in] */ ClassID typeArgs[  ],
-            /* [out] */ ClassID *pClassID);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ModuleID moduleID,
-            /* [in] */ mdMethodDef funcDef,
-            /* [in] */ ClassID classId,
-            /* [in] */ ULONG32 cTypeArgs,
-            /* [size_is][in] */ ClassID typeArgs[  ],
-            /* [out] */ FunctionID *pFunctionID);
-        
-        HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ModuleID moduleID,
-            /* [out] */ ICorProfilerObjectEnum **ppEnum);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ObjectID objectId,
-            /* [in] */ ULONG32 cDimensions,
-            /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
-            /* [size_is][out] */ int pDimensionLowerBounds[  ],
-            /* [out] */ BYTE **ppData);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classId,
-            /* [out] */ ULONG32 *pBufferOffset);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ThreadID threadId,
-            /* [out] */ AppDomainID *pAppDomainId);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [out] */ void **ppAddress);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [in] */ AppDomainID appDomainId,
-            /* [out] */ void **ppAddress);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [in] */ ThreadID threadId,
-            /* [out] */ void **ppAddress);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [in] */ ContextID contextId,
-            /* [out] */ void **ppAddress);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ULONG cObjectRanges,
-            /* [out] */ ULONG *pcObjectRanges,
-            /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
-            ICorProfilerInfo2 * This,
-            /* [in] */ ObjectID objectId,
-            /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
-            ICorProfilerInfo2 * This,
-            /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
-        
         END_INTERFACE
-    } ICorProfilerInfo2Vtbl;
+    } ICorProfilerInfoVtbl;
 
-    interface ICorProfilerInfo2
+    interface ICorProfilerInfo
     {
-        CONST_VTBL struct ICorProfilerInfo2Vtbl *lpVtbl;
+        CONST_VTBL struct ICorProfilerInfoVtbl *lpVtbl;
     };
 
     
@@ -6843,179 +7012,115 @@ EXTERN_C const IID IID_ICorProfilerInfo2;
 #ifdef COBJMACROS
 
 
-#define ICorProfilerInfo2_QueryInterface(This,riid,ppvObject)  \
+#define ICorProfilerInfo_QueryInterface(This,riid,ppvObject)   \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerInfo2_AddRef(This) \
+#define ICorProfilerInfo_AddRef(This)  \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerInfo2_Release(This)        \
+#define ICorProfilerInfo_Release(This) \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerInfo2_GetClassFromObject(This,objectId,pClassId)   \
+#define ICorProfilerInfo_GetClassFromObject(This,objectId,pClassId)    \
     ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
 
-#define ICorProfilerInfo2_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+#define ICorProfilerInfo_GetClassFromToken(This,moduleId,typeDef,pClassId)     \
     ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
 
-#define ICorProfilerInfo2_GetCodeInfo(This,functionId,pStart,pcSize)   \
+#define ICorProfilerInfo_GetCodeInfo(This,functionId,pStart,pcSize)    \
     ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
 
-#define ICorProfilerInfo2_GetEventMask(This,pdwEvents) \
+#define ICorProfilerInfo_GetEventMask(This,pdwEvents)  \
     ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
 
-#define ICorProfilerInfo2_GetFunctionFromIP(This,ip,pFunctionId)       \
+#define ICorProfilerInfo_GetFunctionFromIP(This,ip,pFunctionId)        \
     ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
 
-#define ICorProfilerInfo2_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+#define ICorProfilerInfo_GetFunctionFromToken(This,moduleId,token,pFunctionId) \
     ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
 
-#define ICorProfilerInfo2_GetHandleFromThread(This,threadId,phThread)  \
+#define ICorProfilerInfo_GetHandleFromThread(This,threadId,phThread)   \
     ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
 
-#define ICorProfilerInfo2_GetObjectSize(This,objectId,pcSize)  \
+#define ICorProfilerInfo_GetObjectSize(This,objectId,pcSize)   \
     ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
 
-#define ICorProfilerInfo2_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+#define ICorProfilerInfo_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank)  \
     ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
 
-#define ICorProfilerInfo2_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+#define ICorProfilerInfo_GetThreadInfo(This,threadId,pdwWin32ThreadId) \
     ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
 
-#define ICorProfilerInfo2_GetCurrentThreadID(This,pThreadId)   \
+#define ICorProfilerInfo_GetCurrentThreadID(This,pThreadId)    \
     ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
 
-#define ICorProfilerInfo2_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+#define ICorProfilerInfo_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken)  \
     ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
 
-#define ICorProfilerInfo2_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+#define ICorProfilerInfo_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)    \
     ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
 
-#define ICorProfilerInfo2_SetEventMask(This,dwEvents)  \
+#define ICorProfilerInfo_SetEventMask(This,dwEvents)   \
     ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
 
-#define ICorProfilerInfo2_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+#define ICorProfilerInfo_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall)  \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo2_SetFunctionIDMapper(This,pFunc)      \
+#define ICorProfilerInfo_SetFunctionIDMapper(This,pFunc)       \
     ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
 
-#define ICorProfilerInfo2_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+#define ICorProfilerInfo_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) \
     ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
 
-#define ICorProfilerInfo2_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+#define ICorProfilerInfo_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)    \
     ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
 
-#define ICorProfilerInfo2_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+#define ICorProfilerInfo_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)       \
     ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
 
-#define ICorProfilerInfo2_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+#define ICorProfilerInfo_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)        \
     ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
 
-#define ICorProfilerInfo2_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+#define ICorProfilerInfo_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)    \
     ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
 
-#define ICorProfilerInfo2_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+#define ICorProfilerInfo_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) \
     ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
 
-#define ICorProfilerInfo2_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+#define ICorProfilerInfo_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) \
     ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
 
-#define ICorProfilerInfo2_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+#define ICorProfilerInfo_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)       \
     ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
 
-#define ICorProfilerInfo2_SetFunctionReJIT(This,functionId)    \
+#define ICorProfilerInfo_SetFunctionReJIT(This,functionId)     \
     ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
 
-#define ICorProfilerInfo2_ForceGC(This)        \
+#define ICorProfilerInfo_ForceGC(This) \
     ( (This)->lpVtbl -> ForceGC(This) ) 
 
-#define ICorProfilerInfo2_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+#define ICorProfilerInfo_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)      \
     ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
 
-#define ICorProfilerInfo2_GetInprocInspectionInterface(This,ppicd)     \
+#define ICorProfilerInfo_GetInprocInspectionInterface(This,ppicd)      \
     ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
 
-#define ICorProfilerInfo2_GetInprocInspectionIThisThread(This,ppicd)   \
+#define ICorProfilerInfo_GetInprocInspectionIThisThread(This,ppicd)    \
     ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
 
-#define ICorProfilerInfo2_GetThreadContext(This,threadId,pContextId)   \
+#define ICorProfilerInfo_GetThreadContext(This,threadId,pContextId)    \
     ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
 
-#define ICorProfilerInfo2_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+#define ICorProfilerInfo_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) \
     ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
 
-#define ICorProfilerInfo2_EndInprocDebugging(This,dwProfilerContext)   \
+#define ICorProfilerInfo_EndInprocDebugging(This,dwProfilerContext)    \
     ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
 
-#define ICorProfilerInfo2_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+#define ICorProfilerInfo_GetILToNativeMapping(This,functionId,cMap,pcMap,map)  \
     ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
 
-
-#define ICorProfilerInfo2_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
-    ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
-
-#define ICorProfilerInfo2_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
-    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
-
-#define ICorProfilerInfo2_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
-    ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
-
-#define ICorProfilerInfo2_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
-    ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
-
-#define ICorProfilerInfo2_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
-    ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
-
-#define ICorProfilerInfo2_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
-    ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
-
-#define ICorProfilerInfo2_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
-    ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
-
-#define ICorProfilerInfo2_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
-    ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
-
-#define ICorProfilerInfo2_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
-    ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
-
-#define ICorProfilerInfo2_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
-    ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
-
-#define ICorProfilerInfo2_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
-    ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
-
-#define ICorProfilerInfo2_GetBoxClassLayout(This,classId,pBufferOffset)        \
-    ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
-
-#define ICorProfilerInfo2_GetThreadAppDomain(This,threadId,pAppDomainId)       \
-    ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
-
-#define ICorProfilerInfo2_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
-    ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
-
-#define ICorProfilerInfo2_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
-    ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
-
-#define ICorProfilerInfo2_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
-    ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
-
-#define ICorProfilerInfo2_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
-    ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
-
-#define ICorProfilerInfo2_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
-    ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
-
-#define ICorProfilerInfo2_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
-    ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
-
-#define ICorProfilerInfo2_GetObjectGeneration(This,objectId,range)     \
-    ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
-
-#define ICorProfilerInfo2_GetNotifiedExceptionClauseInfo(This,pinfo)   \
-    ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
-
 #endif /* COBJMACROS */
 
 
@@ -7024,219 +7129,263 @@ EXTERN_C const IID IID_ICorProfilerInfo2;
 
 
 
-#endif         /* __ICorProfilerInfo2_INTERFACE_DEFINED__ */
+#endif         /* __ICorProfilerInfo_INTERFACE_DEFINED__ */
 
 
-#ifndef __ICorProfilerInfo3_INTERFACE_DEFINED__
-#define __ICorProfilerInfo3_INTERFACE_DEFINED__
+#ifndef __ICorProfilerInfo2_INTERFACE_DEFINED__
+#define __ICorProfilerInfo2_INTERFACE_DEFINED__
 
-/* interface ICorProfilerInfo3 */
+/* interface ICorProfilerInfo2 */
 /* [local][unique][uuid][object] */ 
 
 
-EXTERN_C const IID IID_ICorProfilerInfo3;
+EXTERN_C const IID IID_ICorProfilerInfo2;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("B555ED4F-452A-4E54-8B39-B5360BAD32A0")
-    ICorProfilerInfo3 : public ICorProfilerInfo2
+    MIDL_INTERFACE("CC0935CD-A518-487d-B0BB-A93214E65478")
+    ICorProfilerInfo2 : public ICorProfilerInfo
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE EnumJITedFunctions( 
-            /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0;
+        virtual HRESULT STDMETHODCALLTYPE DoStackSnapshot( 
+            /* [in] */ ThreadID thread,
+            /* [in] */ StackSnapshotCallback *callback,
+            /* [in] */ ULONG32 infoFlags,
+            /* [in] */ void *clientData,
+            /* [size_is][in] */ BYTE context[  ],
+            /* [in] */ ULONG32 contextSize) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE RequestProfilerDetach( 
-            /* [in] */ DWORD dwExpectedCompletionMilliseconds) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks2( 
+            /* [in] */ FunctionEnter2 *pFuncEnter,
+            /* [in] */ FunctionLeave2 *pFuncLeave,
+            /* [in] */ FunctionTailcall2 *pFuncTailcall) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE SetFunctionIDMapper2( 
-            /* [in] */ FunctionIDMapper2 *pFunc,
-            /* [in] */ void *clientData) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionInfo2( 
+            /* [in] */ FunctionID funcId,
+            /* [in] */ COR_PRF_FRAME_INFO frameInfo,
+            /* [out] */ ClassID *pClassId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdToken *pToken,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [out] */ ULONG32 *pcTypeArgs,
+            /* [out] */ ClassID typeArgs[  ]) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetStringLayout2( 
+        virtual HRESULT STDMETHODCALLTYPE GetStringLayout( 
+            /* [out] */ ULONG *pBufferLengthOffset,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks3( 
-            /* [in] */ FunctionEnter3 *pFuncEnter3,
-            /* [in] */ FunctionLeave3 *pFuncLeave3,
-            /* [in] */ FunctionTailcall3 *pFuncTailcall3) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks3WithInfo( 
-            /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
-            /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
-            /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetClassLayout( 
+            /* [in] */ ClassID classID,
+            /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
+            /* [in] */ ULONG cFieldOffset,
+            /* [out] */ ULONG *pcFieldOffset,
+            /* [out] */ ULONG *pulClassSize) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionEnter3Info( 
-            /* [in] */ FunctionID functionId,
-            /* [in] */ COR_PRF_ELT_INFO eltInfo,
-            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
-            /* [out][in] */ ULONG *pcbArgumentInfo,
-            /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetClassIDInfo2( 
+            /* [in] */ ClassID classId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdTypeDef *pTypeDefToken,
+            /* [out] */ ClassID *pParentClassId,
+            /* [in] */ ULONG32 cNumTypeArgs,
+            /* [out] */ ULONG32 *pcNumTypeArgs,
+            /* [out] */ ClassID typeArgs[  ]) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionLeave3Info
-            /* [in] */ FunctionID functionId,
-            /* [in] */ COR_PRF_ELT_INFO eltInfo,
-            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
-            /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetCodeInfo2
+            /* [in] */ FunctionID functionID,
+            /* [in] */ ULONG32 cCodeInfos,
+            /* [out] */ ULONG32 *pcCodeInfos,
+            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionTailcall3Info( 
-            /* [in] */ FunctionID functionId,
-            /* [in] */ COR_PRF_ELT_INFO eltInfo,
-            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetClassFromTokenAndTypeArgs( 
+            /* [in] */ ModuleID moduleID,
+            /* [in] */ mdTypeDef typeDef,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [size_is][in] */ ClassID typeArgs[  ],
+            /* [out] */ ClassID *pClassID) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE EnumModules( 
-            /* [out] */ ICorProfilerModuleEnum **ppEnum) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromTokenAndTypeArgs( 
+            /* [in] */ ModuleID moduleID,
+            /* [in] */ mdMethodDef funcDef,
+            /* [in] */ ClassID classId,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [size_is][in] */ ClassID typeArgs[  ],
+            /* [out] */ FunctionID *pFunctionID) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetRuntimeInformation( 
-            /* [out] */ USHORT *pClrInstanceId,
-            /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
-            /* [out] */ USHORT *pMajorVersion,
-            /* [out] */ USHORT *pMinorVersion,
-            /* [out] */ USHORT *pBuildNumber,
-            /* [out] */ USHORT *pQFEVersion,
-            /* [in] */ ULONG cchVersionString,
-            /* [out] */ ULONG *pcchVersionString,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]) = 0;
+        virtual HRESULT STDMETHODCALLTYPE EnumModuleFrozenObjects( 
+            /* [in] */ ModuleID moduleID,
+            /* [out] */ ICorProfilerObjectEnum **ppEnum) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetThreadStaticAddress2( 
+        virtual HRESULT STDMETHODCALLTYPE GetArrayObjectInfo( 
+            /* [in] */ ObjectID objectId,
+            /* [in] */ ULONG32 cDimensions,
+            /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
+            /* [size_is][out] */ int pDimensionLowerBounds[  ],
+            /* [out] */ BYTE **ppData) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetBoxClassLayout( 
+            /* [in] */ ClassID classId,
+            /* [out] */ ULONG32 *pBufferOffset) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetThreadAppDomain( 
+            /* [in] */ ThreadID threadId,
+            /* [out] */ AppDomainID *pAppDomainId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetRVAStaticAddress( 
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [out] */ void **ppAddress) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAppDomainStaticAddress( 
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
+            /* [out] */ void **ppAddress) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetThreadStaticAddress( 
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ThreadID threadId,
             /* [out] */ void **ppAddress) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetAppDomainsContainingModule
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ ULONG32 cAppDomainIds,
-            /* [out] */ ULONG32 *pcAppDomainIds,
-            /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetContextStaticAddress
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ ContextID contextId,
+            /* [out] */ void **ppAddress) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetModuleInfo2( 
-            /* [in] */ ModuleID moduleId,
-            /* [out] */ LPCBYTE *ppBaseLoadAddress,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ AssemblyID *pAssemblyId,
-            /* [out] */ DWORD *pdwModuleFlags) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetStaticFieldInfo( 
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetGenerationBounds( 
+            /* [in] */ ULONG cObjectRanges,
+            /* [out] */ ULONG *pcObjectRanges,
+            /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetObjectGeneration( 
+            /* [in] */ ObjectID objectId,
+            /* [out] */ COR_PRF_GC_GENERATION_RANGE *range) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetNotifiedExceptionClauseInfo( 
+            /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo) = 0;
         
     };
     
     
 #else  /* C style interface */
 
-    typedef struct ICorProfilerInfo3Vtbl
+    typedef struct ICorProfilerInfo2Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ REFIID riid,
             /* [annotation][iid_is][out] */ 
             _COM_Outptr_  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerInfo3 * This);
+            ICorProfilerInfo2 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerInfo3 * This);
+            ICorProfilerInfo2 * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdTypeDef typeDef,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ LPCBYTE *pStart,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [out] */ DWORD *pdwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdToken token,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ HANDLE *phThread);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [out] */ CorElementType *pBaseElemType,
             /* [out] */ ClassID *pBaseClassId,
             /* [out] */ ULONG *pcRank);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ DWORD *pdwWin32ThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [out] */ ThreadID *pThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ ClassID *pClassId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ DWORD dwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionEnter *pFuncEnter,
             /* [in] */ FunctionLeave *pFuncLeave,
             /* [in] */ FunctionTailcall *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionIDMapper *pFunc);
         
         HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppImport,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -7246,32 +7395,32 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ AssemblyID *pAssemblyId);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ DWORD dwOpenFlags,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppOut);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodId,
             /* [out] */ LPCBYTE *ppMethodHeader,
             /* [out] */ ULONG *pcbMethodSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ IMethodMalloc **ppMalloc);
         
         HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodid,
             /* [in] */ LPCBYTE pbNewILMethodHeader);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ AppDomainID appDomainId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -7280,7 +7429,7 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ ProcessID *pProcessId);
         
         HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ AssemblyID assemblyId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -7290,50 +7439,50 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ ModuleID *pModuleId);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID functionId);
         
         HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
-            ICorProfilerInfo3 * This);
+            ICorProfilerInfo2 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ BOOL fStartJit,
             /* [in] */ ULONG cILMapEntries,
             /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ ContextID *pContextId);
         
         HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ BOOL fThisThreadOnly,
             /* [out] */ DWORD *pdwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ DWORD dwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG32 cMap,
             /* [out] */ ULONG32 *pcMap,
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ThreadID thread,
             /* [in] */ StackSnapshotCallback *callback,
             /* [in] */ ULONG32 infoFlags,
@@ -7342,13 +7491,13 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [in] */ ULONG32 contextSize);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionEnter2 *pFuncEnter,
             /* [in] */ FunctionLeave2 *pFuncLeave,
             /* [in] */ FunctionTailcall2 *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID funcId,
             /* [in] */ COR_PRF_FRAME_INFO frameInfo,
             /* [out] */ ClassID *pClassId,
@@ -7359,13 +7508,13 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [out] */ ULONG *pBufferLengthOffset,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classID,
             /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
             /* [in] */ ULONG cFieldOffset,
@@ -7373,7 +7522,7 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ ULONG *pulClassSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken,
@@ -7383,14 +7532,14 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ULONG32 cCodeInfos,
             /* [out] */ ULONG32 *pcCodeInfos,
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdTypeDef typeDef,
             /* [in] */ ULONG32 cTypeArgs,
@@ -7398,7 +7547,7 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ ClassID *pClassID);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdMethodDef funcDef,
             /* [in] */ ClassID classId,
@@ -7407,12 +7556,12 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ FunctionID *pFunctionID);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ModuleID moduleID,
             /* [out] */ ICorProfilerObjectEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ObjectID objectId,
             /* [in] */ ULONG32 cDimensions,
             /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
@@ -7420,163 +7569,69 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
             /* [out] */ BYTE **ppData);
         
         HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ULONG32 *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ AppDomainID *pAppDomainId);
         
         HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ThreadID threadId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ContextID contextId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ULONG cObjectRanges,
             /* [out] */ ULONG *pcObjectRanges,
             /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
         
         HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
-            ICorProfilerInfo3 * This,
+            ICorProfilerInfo2 * This,
             /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
         
-        HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( 
-            ICorProfilerInfo3 * This,
-            /* [out] */ ICorProfilerFunctionEnum **ppEnum);
-        
-        HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ DWORD dwExpectedCompletionMilliseconds);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ FunctionIDMapper2 *pFunc,
-            /* [in] */ void *clientData);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( 
-            ICorProfilerInfo3 * This,
-            /* [out] */ ULONG *pStringLengthOffset,
-            /* [out] */ ULONG *pBufferOffset);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ FunctionEnter3 *pFuncEnter3,
-            /* [in] */ FunctionLeave3 *pFuncLeave3,
-            /* [in] */ FunctionTailcall3 *pFuncTailcall3);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
-            /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
-            /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ FunctionID functionId,
-            /* [in] */ COR_PRF_ELT_INFO eltInfo,
-            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
-            /* [out][in] */ ULONG *pcbArgumentInfo,
-            /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ FunctionID functionId,
-            /* [in] */ COR_PRF_ELT_INFO eltInfo,
-            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
-            /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ FunctionID functionId,
-            /* [in] */ COR_PRF_ELT_INFO eltInfo,
-            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo);
-        
-        HRESULT ( STDMETHODCALLTYPE *EnumModules )( 
-            ICorProfilerInfo3 * This,
-            /* [out] */ ICorProfilerModuleEnum **ppEnum);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( 
-            ICorProfilerInfo3 * This,
-            /* [out] */ USHORT *pClrInstanceId,
-            /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
-            /* [out] */ USHORT *pMajorVersion,
-            /* [out] */ USHORT *pMinorVersion,
-            /* [out] */ USHORT *pBuildNumber,
-            /* [out] */ USHORT *pQFEVersion,
-            /* [in] */ ULONG cchVersionString,
-            /* [out] */ ULONG *pcchVersionString,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ ClassID classId,
-            /* [in] */ mdFieldDef fieldToken,
-            /* [in] */ AppDomainID appDomainId,
-            /* [in] */ ThreadID threadId,
-            /* [out] */ void **ppAddress);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ ULONG32 cAppDomainIds,
-            /* [out] */ ULONG32 *pcAppDomainIds,
-            /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( 
-            ICorProfilerInfo3 * This,
-            /* [in] */ ModuleID moduleId,
-            /* [out] */ LPCBYTE *ppBaseLoadAddress,
-            /* [in] */ ULONG cchName,
-            /* [out] */ ULONG *pcchName,
-            /* [annotation][out] */ 
-            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
-            /* [out] */ AssemblyID *pAssemblyId,
-            /* [out] */ DWORD *pdwModuleFlags);
-        
         END_INTERFACE
-    } ICorProfilerInfo3Vtbl;
+    } ICorProfilerInfo2Vtbl;
 
-    interface ICorProfilerInfo3
+    interface ICorProfilerInfo2
     {
-        CONST_VTBL struct ICorProfilerInfo3Vtbl *lpVtbl;
+        CONST_VTBL struct ICorProfilerInfo2Vtbl *lpVtbl;
     };
 
     
@@ -7584,222 +7639,179 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
 #ifdef COBJMACROS
 
 
-#define ICorProfilerInfo3_QueryInterface(This,riid,ppvObject)  \
+#define ICorProfilerInfo2_QueryInterface(This,riid,ppvObject)  \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerInfo3_AddRef(This) \
+#define ICorProfilerInfo2_AddRef(This) \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerInfo3_Release(This)        \
+#define ICorProfilerInfo2_Release(This)        \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerInfo3_GetClassFromObject(This,objectId,pClassId)   \
+#define ICorProfilerInfo2_GetClassFromObject(This,objectId,pClassId)   \
     ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
 
-#define ICorProfilerInfo3_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+#define ICorProfilerInfo2_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
     ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
 
-#define ICorProfilerInfo3_GetCodeInfo(This,functionId,pStart,pcSize)   \
+#define ICorProfilerInfo2_GetCodeInfo(This,functionId,pStart,pcSize)   \
     ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
 
-#define ICorProfilerInfo3_GetEventMask(This,pdwEvents) \
+#define ICorProfilerInfo2_GetEventMask(This,pdwEvents) \
     ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
 
-#define ICorProfilerInfo3_GetFunctionFromIP(This,ip,pFunctionId)       \
+#define ICorProfilerInfo2_GetFunctionFromIP(This,ip,pFunctionId)       \
     ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
 
-#define ICorProfilerInfo3_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+#define ICorProfilerInfo2_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
     ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
 
-#define ICorProfilerInfo3_GetHandleFromThread(This,threadId,phThread)  \
+#define ICorProfilerInfo2_GetHandleFromThread(This,threadId,phThread)  \
     ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
 
-#define ICorProfilerInfo3_GetObjectSize(This,objectId,pcSize)  \
+#define ICorProfilerInfo2_GetObjectSize(This,objectId,pcSize)  \
     ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
 
-#define ICorProfilerInfo3_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+#define ICorProfilerInfo2_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
     ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
 
-#define ICorProfilerInfo3_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+#define ICorProfilerInfo2_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
     ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
 
-#define ICorProfilerInfo3_GetCurrentThreadID(This,pThreadId)   \
+#define ICorProfilerInfo2_GetCurrentThreadID(This,pThreadId)   \
     ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
 
-#define ICorProfilerInfo3_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+#define ICorProfilerInfo2_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
     ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
 
-#define ICorProfilerInfo3_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+#define ICorProfilerInfo2_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
     ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
 
-#define ICorProfilerInfo3_SetEventMask(This,dwEvents)  \
+#define ICorProfilerInfo2_SetEventMask(This,dwEvents)  \
     ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
 
-#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+#define ICorProfilerInfo2_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo3_SetFunctionIDMapper(This,pFunc)      \
+#define ICorProfilerInfo2_SetFunctionIDMapper(This,pFunc)      \
     ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
 
-#define ICorProfilerInfo3_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+#define ICorProfilerInfo2_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
     ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
 
-#define ICorProfilerInfo3_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+#define ICorProfilerInfo2_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
     ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
 
-#define ICorProfilerInfo3_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+#define ICorProfilerInfo2_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
     ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
 
-#define ICorProfilerInfo3_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+#define ICorProfilerInfo2_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
     ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
 
-#define ICorProfilerInfo3_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+#define ICorProfilerInfo2_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
     ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
 
-#define ICorProfilerInfo3_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+#define ICorProfilerInfo2_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
     ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
 
-#define ICorProfilerInfo3_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+#define ICorProfilerInfo2_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
     ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
 
-#define ICorProfilerInfo3_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+#define ICorProfilerInfo2_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
     ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
 
-#define ICorProfilerInfo3_SetFunctionReJIT(This,functionId)    \
+#define ICorProfilerInfo2_SetFunctionReJIT(This,functionId)    \
     ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
 
-#define ICorProfilerInfo3_ForceGC(This)        \
+#define ICorProfilerInfo2_ForceGC(This)        \
     ( (This)->lpVtbl -> ForceGC(This) ) 
 
-#define ICorProfilerInfo3_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+#define ICorProfilerInfo2_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
     ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
 
-#define ICorProfilerInfo3_GetInprocInspectionInterface(This,ppicd)     \
+#define ICorProfilerInfo2_GetInprocInspectionInterface(This,ppicd)     \
     ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
 
-#define ICorProfilerInfo3_GetInprocInspectionIThisThread(This,ppicd)   \
+#define ICorProfilerInfo2_GetInprocInspectionIThisThread(This,ppicd)   \
     ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
 
-#define ICorProfilerInfo3_GetThreadContext(This,threadId,pContextId)   \
+#define ICorProfilerInfo2_GetThreadContext(This,threadId,pContextId)   \
     ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
 
-#define ICorProfilerInfo3_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+#define ICorProfilerInfo2_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
     ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
 
-#define ICorProfilerInfo3_EndInprocDebugging(This,dwProfilerContext)   \
+#define ICorProfilerInfo2_EndInprocDebugging(This,dwProfilerContext)   \
     ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
 
-#define ICorProfilerInfo3_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+#define ICorProfilerInfo2_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
     ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
 
 
-#define ICorProfilerInfo3_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
+#define ICorProfilerInfo2_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
     ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
 
-#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
+#define ICorProfilerInfo2_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo3_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
+#define ICorProfilerInfo2_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
     ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo3_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
+#define ICorProfilerInfo2_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
     ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo3_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
+#define ICorProfilerInfo2_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
     ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
 
-#define ICorProfilerInfo3_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
+#define ICorProfilerInfo2_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
     ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo3_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo2_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo3_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
+#define ICorProfilerInfo2_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
     ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
 
-#define ICorProfilerInfo3_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
+#define ICorProfilerInfo2_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
     ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
 
-#define ICorProfilerInfo3_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
+#define ICorProfilerInfo2_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
     ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
 
-#define ICorProfilerInfo3_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
+#define ICorProfilerInfo2_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
     ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
 
-#define ICorProfilerInfo3_GetBoxClassLayout(This,classId,pBufferOffset)        \
+#define ICorProfilerInfo2_GetBoxClassLayout(This,classId,pBufferOffset)        \
     ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
 
-#define ICorProfilerInfo3_GetThreadAppDomain(This,threadId,pAppDomainId)       \
+#define ICorProfilerInfo2_GetThreadAppDomain(This,threadId,pAppDomainId)       \
     ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
 
-#define ICorProfilerInfo3_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
+#define ICorProfilerInfo2_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
     ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
 
-#define ICorProfilerInfo3_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
+#define ICorProfilerInfo2_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
     ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
 
-#define ICorProfilerInfo3_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
+#define ICorProfilerInfo2_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
     ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo3_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
+#define ICorProfilerInfo2_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
     ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
 
-#define ICorProfilerInfo3_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
+#define ICorProfilerInfo2_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
     ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
 
-#define ICorProfilerInfo3_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
+#define ICorProfilerInfo2_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
     ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
 
-#define ICorProfilerInfo3_GetObjectGeneration(This,objectId,range)     \
+#define ICorProfilerInfo2_GetObjectGeneration(This,objectId,range)     \
     ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
 
-#define ICorProfilerInfo3_GetNotifiedExceptionClauseInfo(This,pinfo)   \
+#define ICorProfilerInfo2_GetNotifiedExceptionClauseInfo(This,pinfo)   \
     ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
 
-
-#define ICorProfilerInfo3_EnumJITedFunctions(This,ppEnum)      \
-    ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) 
-
-#define ICorProfilerInfo3_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
-    ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) 
-
-#define ICorProfilerInfo3_SetFunctionIDMapper2(This,pFunc,clientData)  \
-    ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) 
-
-#define ICorProfilerInfo3_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
-    ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) 
-
-#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
-    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) 
-
-#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
-    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) 
-
-#define ICorProfilerInfo3_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
-    ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) 
-
-#define ICorProfilerInfo3_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
-    ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) 
-
-#define ICorProfilerInfo3_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
-    ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) 
-
-#define ICorProfilerInfo3_EnumModules(This,ppEnum)     \
-    ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) 
-
-#define ICorProfilerInfo3_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
-    ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) 
-
-#define ICorProfilerInfo3_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
-    ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) 
-
-#define ICorProfilerInfo3_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
-    ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) 
-
-#define ICorProfilerInfo3_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
-    ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) 
-
 #endif /* COBJMACROS */
 
 
@@ -7808,210 +7820,1919 @@ EXTERN_C const IID IID_ICorProfilerInfo3;
 
 
 
-#endif         /* __ICorProfilerInfo3_INTERFACE_DEFINED__ */
+#endif         /* __ICorProfilerInfo2_INTERFACE_DEFINED__ */
 
 
-#ifndef __ICorProfilerObjectEnum_INTERFACE_DEFINED__
-#define __ICorProfilerObjectEnum_INTERFACE_DEFINED__
+#ifndef __ICorProfilerInfo3_INTERFACE_DEFINED__
+#define __ICorProfilerInfo3_INTERFACE_DEFINED__
 
-/* interface ICorProfilerObjectEnum */
+/* interface ICorProfilerInfo3 */
 /* [local][unique][uuid][object] */ 
 
 
-EXTERN_C const IID IID_ICorProfilerObjectEnum;
+EXTERN_C const IID IID_ICorProfilerInfo3;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("2C6269BD-2D13-4321-AE12-6686365FD6AF")
-    ICorProfilerObjectEnum : public IUnknown
+    MIDL_INTERFACE("B555ED4F-452A-4E54-8B39-B5360BAD32A0")
+    ICorProfilerInfo3 : public ICorProfilerInfo2
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE Skip( 
-            /* [in] */ ULONG celt) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+        virtual HRESULT STDMETHODCALLTYPE EnumJITedFunctions( 
+            /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE Clone
-            /* [out] */ ICorProfilerObjectEnum **ppEnum) = 0;
+        virtual HRESULT STDMETHODCALLTYPE RequestProfilerDetach
+            /* [in] */ DWORD dwExpectedCompletionMilliseconds) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ ULONG *pcelt) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetFunctionIDMapper2( 
+            /* [in] */ FunctionIDMapper2 *pFunc,
+            /* [in] */ void *clientData) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE Next( 
-            /* [in] */ ULONG celt,
-            /* [length_is][size_is][out] */ ObjectID objects[  ],
-            /* [out] */ ULONG *pceltFetched) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetStringLayout2( 
+            /* [out] */ ULONG *pStringLengthOffset,
+            /* [out] */ ULONG *pBufferOffset) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks3( 
+            /* [in] */ FunctionEnter3 *pFuncEnter3,
+            /* [in] */ FunctionLeave3 *pFuncLeave3,
+            /* [in] */ FunctionTailcall3 *pFuncTailcall3) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetEnterLeaveFunctionHooks3WithInfo( 
+            /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
+            /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
+            /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionEnter3Info( 
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
+            /* [out][in] */ ULONG *pcbArgumentInfo,
+            /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionLeave3Info( 
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
+            /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionTailcall3Info( 
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnumModules( 
+            /* [out] */ ICorProfilerModuleEnum **ppEnum) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetRuntimeInformation( 
+            /* [out] */ USHORT *pClrInstanceId,
+            /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
+            /* [out] */ USHORT *pMajorVersion,
+            /* [out] */ USHORT *pMinorVersion,
+            /* [out] */ USHORT *pBuildNumber,
+            /* [out] */ USHORT *pQFEVersion,
+            /* [in] */ ULONG cchVersionString,
+            /* [out] */ ULONG *pcchVersionString,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetThreadStaticAddress2( 
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ void **ppAddress) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetAppDomainsContainingModule( 
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ ULONG32 cAppDomainIds,
+            /* [out] */ ULONG32 *pcAppDomainIds,
+            /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetModuleInfo2( 
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ LPCBYTE *ppBaseLoadAddress,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AssemblyID *pAssemblyId,
+            /* [out] */ DWORD *pdwModuleFlags) = 0;
         
     };
     
     
 #else  /* C style interface */
 
-    typedef struct ICorProfilerObjectEnumVtbl
+    typedef struct ICorProfilerInfo3Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerObjectEnum * This,
+            ICorProfilerInfo3 * This,
             /* [in] */ REFIID riid,
             /* [annotation][iid_is][out] */ 
             _COM_Outptr_  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerObjectEnum * This);
+            ICorProfilerInfo3 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerObjectEnum * This);
+            ICorProfilerInfo3 * This);
         
-        HRESULT ( STDMETHODCALLTYPE *Skip )( 
-            ICorProfilerObjectEnum * This,
-            /* [in] */ ULONG celt);
+        HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ObjectID objectId,
+            /* [out] */ ClassID *pClassId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdTypeDef typeDef,
+            /* [out] */ ClassID *pClassId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [out] */ LPCBYTE *pStart,
+            /* [out] */ ULONG *pcSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ DWORD *pdwEvents);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ LPCBYTE ip,
+            /* [out] */ FunctionID *pFunctionId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdToken token,
+            /* [out] */ FunctionID *pFunctionId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ HANDLE *phThread);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ObjectID objectId,
+            /* [out] */ ULONG *pcSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ CorElementType *pBaseElemType,
+            /* [out] */ ClassID *pBaseClassId,
+            /* [out] */ ULONG *pcRank);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ DWORD *pdwWin32ThreadId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ ThreadID *pThreadId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdTypeDef *pTypeDefToken);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [out] */ ClassID *pClassId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdToken *pToken);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ DWORD dwEvents);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionEnter *pFuncEnter,
+            /* [in] */ FunctionLeave *pFuncLeave,
+            /* [in] */ FunctionTailcall *pFuncTailcall);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionIDMapper *pFunc);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ REFIID riid,
+            /* [out] */ IUnknown **ppImport,
+            /* [out] */ mdToken *pToken);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ LPCBYTE *ppBaseLoadAddress,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AssemblyID *pAssemblyId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ DWORD dwOpenFlags,
+            /* [in] */ REFIID riid,
+            /* [out] */ IUnknown **ppOut);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodId,
+            /* [out] */ LPCBYTE *ppMethodHeader,
+            /* [out] */ ULONG *pcbMethodSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ IMethodMalloc **ppMalloc);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodid,
+            /* [in] */ LPCBYTE pbNewILMethodHeader);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ ProcessID *pProcessId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ AssemblyID assemblyId,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AppDomainID *pAppDomainId,
+            /* [out] */ ModuleID *pModuleId);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId);
+        
+        HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
+            ICorProfilerInfo3 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ BOOL fStartJit,
+            /* [in] */ ULONG cILMapEntries,
+            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ IUnknown **ppicd);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ IUnknown **ppicd);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ ContextID *pContextId);
+        
+        HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ BOOL fThisThreadOnly,
+            /* [out] */ DWORD *pdwProfilerContext);
+        
+        HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ DWORD dwProfilerContext);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ULONG32 cMap,
+            /* [out] */ ULONG32 *pcMap,
+            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ThreadID thread,
+            /* [in] */ StackSnapshotCallback *callback,
+            /* [in] */ ULONG32 infoFlags,
+            /* [in] */ void *clientData,
+            /* [size_is][in] */ BYTE context[  ],
+            /* [in] */ ULONG32 contextSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionEnter2 *pFuncEnter,
+            /* [in] */ FunctionLeave2 *pFuncLeave,
+            /* [in] */ FunctionTailcall2 *pFuncTailcall);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID funcId,
+            /* [in] */ COR_PRF_FRAME_INFO frameInfo,
+            /* [out] */ ClassID *pClassId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdToken *pToken,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [out] */ ULONG32 *pcTypeArgs,
+            /* [out] */ ClassID typeArgs[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ ULONG *pBufferLengthOffset,
+            /* [out] */ ULONG *pStringLengthOffset,
+            /* [out] */ ULONG *pBufferOffset);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classID,
+            /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
+            /* [in] */ ULONG cFieldOffset,
+            /* [out] */ ULONG *pcFieldOffset,
+            /* [out] */ ULONG *pulClassSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdTypeDef *pTypeDefToken,
+            /* [out] */ ClassID *pParentClassId,
+            /* [in] */ ULONG32 cNumTypeArgs,
+            /* [out] */ ULONG32 *pcNumTypeArgs,
+            /* [out] */ ClassID typeArgs[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionID,
+            /* [in] */ ULONG32 cCodeInfos,
+            /* [out] */ ULONG32 *pcCodeInfos,
+            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleID,
+            /* [in] */ mdTypeDef typeDef,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [size_is][in] */ ClassID typeArgs[  ],
+            /* [out] */ ClassID *pClassID);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleID,
+            /* [in] */ mdMethodDef funcDef,
+            /* [in] */ ClassID classId,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [size_is][in] */ ClassID typeArgs[  ],
+            /* [out] */ FunctionID *pFunctionID);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleID,
+            /* [out] */ ICorProfilerObjectEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ObjectID objectId,
+            /* [in] */ ULONG32 cDimensions,
+            /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
+            /* [size_is][out] */ int pDimensionLowerBounds[  ],
+            /* [out] */ BYTE **ppData);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ ULONG32 *pBufferOffset);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ AppDomainID *pAppDomainId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ AppDomainID appDomainId,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ ContextID contextId,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ULONG cObjectRanges,
+            /* [out] */ ULONG *pcObjectRanges,
+            /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ObjectID objectId,
+            /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ ICorProfilerFunctionEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ DWORD dwExpectedCompletionMilliseconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionIDMapper2 *pFunc,
+            /* [in] */ void *clientData);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ ULONG *pStringLengthOffset,
+            /* [out] */ ULONG *pBufferOffset);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionEnter3 *pFuncEnter3,
+            /* [in] */ FunctionLeave3 *pFuncLeave3,
+            /* [in] */ FunctionTailcall3 *pFuncTailcall3);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
+            /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
+            /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
+            /* [out][in] */ ULONG *pcbArgumentInfo,
+            /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
+            /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnumModules )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ ICorProfilerModuleEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( 
+            ICorProfilerInfo3 * This,
+            /* [out] */ USHORT *pClrInstanceId,
+            /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
+            /* [out] */ USHORT *pMajorVersion,
+            /* [out] */ USHORT *pMinorVersion,
+            /* [out] */ USHORT *pBuildNumber,
+            /* [out] */ USHORT *pQFEVersion,
+            /* [in] */ ULONG cchVersionString,
+            /* [out] */ ULONG *pcchVersionString,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ ULONG32 cAppDomainIds,
+            /* [out] */ ULONG32 *pcAppDomainIds,
+            /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( 
+            ICorProfilerInfo3 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ LPCBYTE *ppBaseLoadAddress,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AssemblyID *pAssemblyId,
+            /* [out] */ DWORD *pdwModuleFlags);
+        
+        END_INTERFACE
+    } ICorProfilerInfo3Vtbl;
+
+    interface ICorProfilerInfo3
+    {
+        CONST_VTBL struct ICorProfilerInfo3Vtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ICorProfilerInfo3_QueryInterface(This,riid,ppvObject)  \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ICorProfilerInfo3_AddRef(This) \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ICorProfilerInfo3_Release(This)        \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ICorProfilerInfo3_GetClassFromObject(This,objectId,pClassId)   \
+    ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
+
+#define ICorProfilerInfo3_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+    ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
+
+#define ICorProfilerInfo3_GetCodeInfo(This,functionId,pStart,pcSize)   \
+    ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
+
+#define ICorProfilerInfo3_GetEventMask(This,pdwEvents) \
+    ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
+
+#define ICorProfilerInfo3_GetFunctionFromIP(This,ip,pFunctionId)       \
+    ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
+
+#define ICorProfilerInfo3_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+    ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
+
+#define ICorProfilerInfo3_GetHandleFromThread(This,threadId,phThread)  \
+    ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
+
+#define ICorProfilerInfo3_GetObjectSize(This,objectId,pcSize)  \
+    ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
+
+#define ICorProfilerInfo3_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+    ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
+
+#define ICorProfilerInfo3_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+    ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
+
+#define ICorProfilerInfo3_GetCurrentThreadID(This,pThreadId)   \
+    ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
+
+#define ICorProfilerInfo3_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+    ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
+
+#define ICorProfilerInfo3_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+    ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
+
+#define ICorProfilerInfo3_SetEventMask(This,dwEvents)  \
+    ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
+
+#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
+
+#define ICorProfilerInfo3_SetFunctionIDMapper(This,pFunc)      \
+    ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
+
+#define ICorProfilerInfo3_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+    ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
+
+#define ICorProfilerInfo3_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+    ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
+
+#define ICorProfilerInfo3_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+    ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
+
+#define ICorProfilerInfo3_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+    ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
+
+#define ICorProfilerInfo3_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+    ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
+
+#define ICorProfilerInfo3_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+    ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
+
+#define ICorProfilerInfo3_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+    ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
+
+#define ICorProfilerInfo3_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+    ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
+
+#define ICorProfilerInfo3_SetFunctionReJIT(This,functionId)    \
+    ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
+
+#define ICorProfilerInfo3_ForceGC(This)        \
+    ( (This)->lpVtbl -> ForceGC(This) ) 
+
+#define ICorProfilerInfo3_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+    ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
+
+#define ICorProfilerInfo3_GetInprocInspectionInterface(This,ppicd)     \
+    ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
+
+#define ICorProfilerInfo3_GetInprocInspectionIThisThread(This,ppicd)   \
+    ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
+
+#define ICorProfilerInfo3_GetThreadContext(This,threadId,pContextId)   \
+    ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
+
+#define ICorProfilerInfo3_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+    ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
+
+#define ICorProfilerInfo3_EndInprocDebugging(This,dwProfilerContext)   \
+    ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
+
+#define ICorProfilerInfo3_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+    ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
+
+
+#define ICorProfilerInfo3_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
+    ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
+
+#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
+
+#define ICorProfilerInfo3_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
+    ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
+
+#define ICorProfilerInfo3_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
+    ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
+
+#define ICorProfilerInfo3_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
+    ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
+
+#define ICorProfilerInfo3_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
+    ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
+
+#define ICorProfilerInfo3_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
+    ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
+
+#define ICorProfilerInfo3_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
+    ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
+
+#define ICorProfilerInfo3_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
+    ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
+
+#define ICorProfilerInfo3_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
+    ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
+
+#define ICorProfilerInfo3_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
+    ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
+
+#define ICorProfilerInfo3_GetBoxClassLayout(This,classId,pBufferOffset)        \
+    ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
+
+#define ICorProfilerInfo3_GetThreadAppDomain(This,threadId,pAppDomainId)       \
+    ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
+
+#define ICorProfilerInfo3_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
+    ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
+
+#define ICorProfilerInfo3_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
+    ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
+
+#define ICorProfilerInfo3_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
+    ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
+
+#define ICorProfilerInfo3_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
+    ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
+
+#define ICorProfilerInfo3_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
+    ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
+
+#define ICorProfilerInfo3_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
+    ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
+
+#define ICorProfilerInfo3_GetObjectGeneration(This,objectId,range)     \
+    ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
+
+#define ICorProfilerInfo3_GetNotifiedExceptionClauseInfo(This,pinfo)   \
+    ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
+
+
+#define ICorProfilerInfo3_EnumJITedFunctions(This,ppEnum)      \
+    ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) 
+
+#define ICorProfilerInfo3_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
+    ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) 
+
+#define ICorProfilerInfo3_SetFunctionIDMapper2(This,pFunc,clientData)  \
+    ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) 
+
+#define ICorProfilerInfo3_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
+    ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) 
+
+#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) 
+
+#define ICorProfilerInfo3_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) 
+
+#define ICorProfilerInfo3_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
+    ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) 
+
+#define ICorProfilerInfo3_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
+    ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) 
+
+#define ICorProfilerInfo3_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
+    ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) 
+
+#define ICorProfilerInfo3_EnumModules(This,ppEnum)     \
+    ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) 
+
+#define ICorProfilerInfo3_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
+    ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) 
+
+#define ICorProfilerInfo3_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
+    ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) 
+
+#define ICorProfilerInfo3_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
+    ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) 
+
+#define ICorProfilerInfo3_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
+    ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __ICorProfilerInfo3_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICorProfilerObjectEnum_INTERFACE_DEFINED__
+#define __ICorProfilerObjectEnum_INTERFACE_DEFINED__
+
+/* interface ICorProfilerObjectEnum */
+/* [local][unique][uuid][object] */ 
+
+
+EXTERN_C const IID IID_ICorProfilerObjectEnum;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("2C6269BD-2D13-4321-AE12-6686365FD6AF")
+    ICorProfilerObjectEnum : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Skip( 
+            /* [in] */ ULONG celt) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Clone( 
+            /* [out] */ ICorProfilerObjectEnum **ppEnum) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCount( 
+            /* [out] */ ULONG *pcelt) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [in] */ ULONG celt,
+            /* [length_is][size_is][out] */ ObjectID objects[  ],
+            /* [out] */ ULONG *pceltFetched) = 0;
+        
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct ICorProfilerObjectEnumVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ICorProfilerObjectEnum * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ICorProfilerObjectEnum * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ICorProfilerObjectEnum * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Skip )( 
+            ICorProfilerObjectEnum * This,
+            /* [in] */ ULONG celt);
+        
+        HRESULT ( STDMETHODCALLTYPE *Reset )( 
+            ICorProfilerObjectEnum * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Clone )( 
+            ICorProfilerObjectEnum * This,
+            /* [out] */ ICorProfilerObjectEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
+            ICorProfilerObjectEnum * This,
+            /* [out] */ ULONG *pcelt);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            ICorProfilerObjectEnum * This,
+            /* [in] */ ULONG celt,
+            /* [length_is][size_is][out] */ ObjectID objects[  ],
+            /* [out] */ ULONG *pceltFetched);
+        
+        END_INTERFACE
+    } ICorProfilerObjectEnumVtbl;
+
+    interface ICorProfilerObjectEnum
+    {
+        CONST_VTBL struct ICorProfilerObjectEnumVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ICorProfilerObjectEnum_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ICorProfilerObjectEnum_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ICorProfilerObjectEnum_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ICorProfilerObjectEnum_Skip(This,celt) \
+    ( (This)->lpVtbl -> Skip(This,celt) ) 
+
+#define ICorProfilerObjectEnum_Reset(This)     \
+    ( (This)->lpVtbl -> Reset(This) ) 
+
+#define ICorProfilerObjectEnum_Clone(This,ppEnum)      \
+    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 
+
+#define ICorProfilerObjectEnum_GetCount(This,pcelt)    \
+    ( (This)->lpVtbl -> GetCount(This,pcelt) ) 
+
+#define ICorProfilerObjectEnum_Next(This,celt,objects,pceltFetched)    \
+    ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __ICorProfilerObjectEnum_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICorProfilerFunctionEnum_INTERFACE_DEFINED__
+#define __ICorProfilerFunctionEnum_INTERFACE_DEFINED__
+
+/* interface ICorProfilerFunctionEnum */
+/* [local][unique][uuid][object] */ 
+
+
+EXTERN_C const IID IID_ICorProfilerFunctionEnum;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("FF71301A-B994-429D-A10B-B345A65280EF")
+    ICorProfilerFunctionEnum : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Skip( 
+            /* [in] */ ULONG celt) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Clone( 
+            /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCount( 
+            /* [out] */ ULONG *pcelt) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [in] */ ULONG celt,
+            /* [length_is][size_is][out] */ COR_PRF_FUNCTION ids[  ],
+            /* [out] */ ULONG *pceltFetched) = 0;
+        
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct ICorProfilerFunctionEnumVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ICorProfilerFunctionEnum * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ICorProfilerFunctionEnum * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ICorProfilerFunctionEnum * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Skip )( 
+            ICorProfilerFunctionEnum * This,
+            /* [in] */ ULONG celt);
+        
+        HRESULT ( STDMETHODCALLTYPE *Reset )( 
+            ICorProfilerFunctionEnum * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Clone )( 
+            ICorProfilerFunctionEnum * This,
+            /* [out] */ ICorProfilerFunctionEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
+            ICorProfilerFunctionEnum * This,
+            /* [out] */ ULONG *pcelt);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            ICorProfilerFunctionEnum * This,
+            /* [in] */ ULONG celt,
+            /* [length_is][size_is][out] */ COR_PRF_FUNCTION ids[  ],
+            /* [out] */ ULONG *pceltFetched);
+        
+        END_INTERFACE
+    } ICorProfilerFunctionEnumVtbl;
+
+    interface ICorProfilerFunctionEnum
+    {
+        CONST_VTBL struct ICorProfilerFunctionEnumVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ICorProfilerFunctionEnum_QueryInterface(This,riid,ppvObject)   \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ICorProfilerFunctionEnum_AddRef(This)  \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ICorProfilerFunctionEnum_Release(This) \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ICorProfilerFunctionEnum_Skip(This,celt)       \
+    ( (This)->lpVtbl -> Skip(This,celt) ) 
+
+#define ICorProfilerFunctionEnum_Reset(This)   \
+    ( (This)->lpVtbl -> Reset(This) ) 
+
+#define ICorProfilerFunctionEnum_Clone(This,ppEnum)    \
+    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 
+
+#define ICorProfilerFunctionEnum_GetCount(This,pcelt)  \
+    ( (This)->lpVtbl -> GetCount(This,pcelt) ) 
+
+#define ICorProfilerFunctionEnum_Next(This,celt,ids,pceltFetched)      \
+    ( (This)->lpVtbl -> Next(This,celt,ids,pceltFetched) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __ICorProfilerFunctionEnum_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICorProfilerModuleEnum_INTERFACE_DEFINED__
+#define __ICorProfilerModuleEnum_INTERFACE_DEFINED__
+
+/* interface ICorProfilerModuleEnum */
+/* [local][unique][uuid][object] */ 
+
+
+EXTERN_C const IID IID_ICorProfilerModuleEnum;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("b0266d75-2081-4493-af7f-028ba34db891")
+    ICorProfilerModuleEnum : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE Skip( 
+            /* [in] */ ULONG celt) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Clone( 
+            /* [out] */ ICorProfilerModuleEnum **ppEnum) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCount( 
+            /* [out] */ ULONG *pcelt) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE Next( 
+            /* [in] */ ULONG celt,
+            /* [length_is][size_is][out] */ ModuleID ids[  ],
+            /* [out] */ ULONG *pceltFetched) = 0;
+        
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct ICorProfilerModuleEnumVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ICorProfilerModuleEnum * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ICorProfilerModuleEnum * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ICorProfilerModuleEnum * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Skip )( 
+            ICorProfilerModuleEnum * This,
+            /* [in] */ ULONG celt);
+        
+        HRESULT ( STDMETHODCALLTYPE *Reset )( 
+            ICorProfilerModuleEnum * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *Clone )( 
+            ICorProfilerModuleEnum * This,
+            /* [out] */ ICorProfilerModuleEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
+            ICorProfilerModuleEnum * This,
+            /* [out] */ ULONG *pcelt);
+        
+        HRESULT ( STDMETHODCALLTYPE *Next )( 
+            ICorProfilerModuleEnum * This,
+            /* [in] */ ULONG celt,
+            /* [length_is][size_is][out] */ ModuleID ids[  ],
+            /* [out] */ ULONG *pceltFetched);
+        
+        END_INTERFACE
+    } ICorProfilerModuleEnumVtbl;
+
+    interface ICorProfilerModuleEnum
+    {
+        CONST_VTBL struct ICorProfilerModuleEnumVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ICorProfilerModuleEnum_QueryInterface(This,riid,ppvObject)     \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ICorProfilerModuleEnum_AddRef(This)    \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ICorProfilerModuleEnum_Release(This)   \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ICorProfilerModuleEnum_Skip(This,celt) \
+    ( (This)->lpVtbl -> Skip(This,celt) ) 
+
+#define ICorProfilerModuleEnum_Reset(This)     \
+    ( (This)->lpVtbl -> Reset(This) ) 
+
+#define ICorProfilerModuleEnum_Clone(This,ppEnum)      \
+    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 
+
+#define ICorProfilerModuleEnum_GetCount(This,pcelt)    \
+    ( (This)->lpVtbl -> GetCount(This,pcelt) ) 
+
+#define ICorProfilerModuleEnum_Next(This,celt,ids,pceltFetched)        \
+    ( (This)->lpVtbl -> Next(This,celt,ids,pceltFetched) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __ICorProfilerModuleEnum_INTERFACE_DEFINED__ */
+
+
+#ifndef __IMethodMalloc_INTERFACE_DEFINED__
+#define __IMethodMalloc_INTERFACE_DEFINED__
+
+/* interface IMethodMalloc */
+/* [local][unique][uuid][object] */ 
+
+
+EXTERN_C const IID IID_IMethodMalloc;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("A0EFB28B-6EE2-4d7b-B983-A75EF7BEEDB8")
+    IMethodMalloc : public IUnknown
+    {
+    public:
+        virtual PVOID STDMETHODCALLTYPE Alloc( 
+            /* [in] */ ULONG cb) = 0;
+        
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct IMethodMallocVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            IMethodMalloc * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            IMethodMalloc * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            IMethodMalloc * This);
+        
+        PVOID ( STDMETHODCALLTYPE *Alloc )( 
+            IMethodMalloc * This,
+            /* [in] */ ULONG cb);
+        
+        END_INTERFACE
+    } IMethodMallocVtbl;
+
+    interface IMethodMalloc
+    {
+        CONST_VTBL struct IMethodMallocVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define IMethodMalloc_QueryInterface(This,riid,ppvObject)      \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define IMethodMalloc_AddRef(This)     \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define IMethodMalloc_Release(This)    \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define IMethodMalloc_Alloc(This,cb)   \
+    ( (This)->lpVtbl -> Alloc(This,cb) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __IMethodMalloc_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICorProfilerFunctionControl_INTERFACE_DEFINED__
+#define __ICorProfilerFunctionControl_INTERFACE_DEFINED__
+
+/* interface ICorProfilerFunctionControl */
+/* [local][unique][uuid][object] */ 
+
+
+EXTERN_C const IID IID_ICorProfilerFunctionControl;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("F0963021-E1EA-4732-8581-E01B0BD3C0C6")
+    ICorProfilerFunctionControl : public IUnknown
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE SetCodegenFlags( 
+            /* [in] */ DWORD flags) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetILFunctionBody( 
+            /* [in] */ ULONG cbNewILMethodHeader,
+            /* [size_is][in] */ LPCBYTE pbNewILMethodHeader) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE SetILInstrumentedCodeMap( 
+            /* [in] */ ULONG cILMapEntries,
+            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]) = 0;
+        
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct ICorProfilerFunctionControlVtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ICorProfilerFunctionControl * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ICorProfilerFunctionControl * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ICorProfilerFunctionControl * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetCodegenFlags )( 
+            ICorProfilerFunctionControl * This,
+            /* [in] */ DWORD flags);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
+            ICorProfilerFunctionControl * This,
+            /* [in] */ ULONG cbNewILMethodHeader,
+            /* [size_is][in] */ LPCBYTE pbNewILMethodHeader);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
+            ICorProfilerFunctionControl * This,
+            /* [in] */ ULONG cILMapEntries,
+            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
+        
+        END_INTERFACE
+    } ICorProfilerFunctionControlVtbl;
+
+    interface ICorProfilerFunctionControl
+    {
+        CONST_VTBL struct ICorProfilerFunctionControlVtbl *lpVtbl;
+    };
+
+    
+
+#ifdef COBJMACROS
+
+
+#define ICorProfilerFunctionControl_QueryInterface(This,riid,ppvObject)        \
+    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+
+#define ICorProfilerFunctionControl_AddRef(This)       \
+    ( (This)->lpVtbl -> AddRef(This) ) 
+
+#define ICorProfilerFunctionControl_Release(This)      \
+    ( (This)->lpVtbl -> Release(This) ) 
+
+
+#define ICorProfilerFunctionControl_SetCodegenFlags(This,flags)        \
+    ( (This)->lpVtbl -> SetCodegenFlags(This,flags) ) 
+
+#define ICorProfilerFunctionControl_SetILFunctionBody(This,cbNewILMethodHeader,pbNewILMethodHeader)    \
+    ( (This)->lpVtbl -> SetILFunctionBody(This,cbNewILMethodHeader,pbNewILMethodHeader) ) 
+
+#define ICorProfilerFunctionControl_SetILInstrumentedCodeMap(This,cILMapEntries,rgILMapEntries)        \
+    ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,cILMapEntries,rgILMapEntries) ) 
+
+#endif /* COBJMACROS */
+
+
+#endif         /* C style interface */
+
+
+
+
+#endif         /* __ICorProfilerFunctionControl_INTERFACE_DEFINED__ */
+
+
+#ifndef __ICorProfilerInfo4_INTERFACE_DEFINED__
+#define __ICorProfilerInfo4_INTERFACE_DEFINED__
+
+/* interface ICorProfilerInfo4 */
+/* [local][unique][uuid][object] */ 
+
+
+EXTERN_C const IID IID_ICorProfilerInfo4;
+
+#if defined(__cplusplus) && !defined(CINTERFACE)
+    
+    MIDL_INTERFACE("0d8fdcaa-6257-47bf-b1bf-94dac88466ee")
+    ICorProfilerInfo4 : public ICorProfilerInfo3
+    {
+    public:
+        virtual HRESULT STDMETHODCALLTYPE EnumThreads( 
+            /* [out] */ ICorProfilerThreadEnum **ppEnum) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE InitializeCurrentThread( void) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE RequestReJIT( 
+            /* [in] */ ULONG cFunctions,
+            /* [size_is][in] */ ModuleID moduleIds[  ],
+            /* [size_is][in] */ mdMethodDef methodIds[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE RequestRevert( 
+            /* [in] */ ULONG cFunctions,
+            /* [size_is][in] */ ModuleID moduleIds[  ],
+            /* [size_is][in] */ mdMethodDef methodIds[  ],
+            /* [size_is][out] */ HRESULT status[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetCodeInfo3( 
+            /* [in] */ FunctionID functionID,
+            /* [in] */ ReJITID reJitId,
+            /* [in] */ ULONG32 cCodeInfos,
+            /* [out] */ ULONG32 *pcCodeInfos,
+            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP2( 
+            /* [in] */ LPCBYTE ip,
+            /* [out] */ FunctionID *pFunctionId,
+            /* [out] */ ReJITID *pReJitId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetReJITIDs( 
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ULONG cReJitIds,
+            /* [out] */ ULONG *pcReJitIds,
+            /* [length_is][size_is][out] */ ReJITID reJitIds[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping2( 
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ReJITID reJitId,
+            /* [in] */ ULONG32 cMap,
+            /* [out] */ ULONG32 *pcMap,
+            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE EnumJITedFunctions2( 
+            /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetObjectSize2( 
+            /* [in] */ ObjectID objectId,
+            /* [out] */ SIZE_T *pcSize) = 0;
+        
+    };
+    
+    
+#else  /* C style interface */
+
+    typedef struct ICorProfilerInfo4Vtbl
+    {
+        BEGIN_INTERFACE
+        
+        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ REFIID riid,
+            /* [annotation][iid_is][out] */ 
+            _COM_Outptr_  void **ppvObject);
+        
+        ULONG ( STDMETHODCALLTYPE *AddRef )( 
+            ICorProfilerInfo4 * This);
+        
+        ULONG ( STDMETHODCALLTYPE *Release )( 
+            ICorProfilerInfo4 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ObjectID objectId,
+            /* [out] */ ClassID *pClassId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdTypeDef typeDef,
+            /* [out] */ ClassID *pClassId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [out] */ LPCBYTE *pStart,
+            /* [out] */ ULONG *pcSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ DWORD *pdwEvents);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ LPCBYTE ip,
+            /* [out] */ FunctionID *pFunctionId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdToken token,
+            /* [out] */ FunctionID *pFunctionId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ HANDLE *phThread);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ObjectID objectId,
+            /* [out] */ ULONG *pcSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ CorElementType *pBaseElemType,
+            /* [out] */ ClassID *pBaseClassId,
+            /* [out] */ ULONG *pcRank);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ DWORD *pdwWin32ThreadId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ ThreadID *pThreadId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdTypeDef *pTypeDefToken);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [out] */ ClassID *pClassId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdToken *pToken);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ DWORD dwEvents);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionEnter *pFuncEnter,
+            /* [in] */ FunctionLeave *pFuncLeave,
+            /* [in] */ FunctionTailcall *pFuncTailcall);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionIDMapper *pFunc);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ REFIID riid,
+            /* [out] */ IUnknown **ppImport,
+            /* [out] */ mdToken *pToken);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ LPCBYTE *ppBaseLoadAddress,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AssemblyID *pAssemblyId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ DWORD dwOpenFlags,
+            /* [in] */ REFIID riid,
+            /* [out] */ IUnknown **ppOut);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodId,
+            /* [out] */ LPCBYTE *ppMethodHeader,
+            /* [out] */ ULONG *pcbMethodSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ IMethodMalloc **ppMalloc);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ mdMethodDef methodid,
+            /* [in] */ LPCBYTE pbNewILMethodHeader);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ ProcessID *pProcessId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ AssemblyID assemblyId,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AppDomainID *pAppDomainId,
+            /* [out] */ ModuleID *pModuleId);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId);
+        
+        HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
+            ICorProfilerInfo4 * This);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ BOOL fStartJit,
+            /* [in] */ ULONG cILMapEntries,
+            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ IUnknown **ppicd);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ IUnknown **ppicd);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ ContextID *pContextId);
+        
+        HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ BOOL fThisThreadOnly,
+            /* [out] */ DWORD *pdwProfilerContext);
+        
+        HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ DWORD dwProfilerContext);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ULONG32 cMap,
+            /* [out] */ ULONG32 *pcMap,
+            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ThreadID thread,
+            /* [in] */ StackSnapshotCallback *callback,
+            /* [in] */ ULONG32 infoFlags,
+            /* [in] */ void *clientData,
+            /* [size_is][in] */ BYTE context[  ],
+            /* [in] */ ULONG32 contextSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionEnter2 *pFuncEnter,
+            /* [in] */ FunctionLeave2 *pFuncLeave,
+            /* [in] */ FunctionTailcall2 *pFuncTailcall);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID funcId,
+            /* [in] */ COR_PRF_FRAME_INFO frameInfo,
+            /* [out] */ ClassID *pClassId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdToken *pToken,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [out] */ ULONG32 *pcTypeArgs,
+            /* [out] */ ClassID typeArgs[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ ULONG *pBufferLengthOffset,
+            /* [out] */ ULONG *pStringLengthOffset,
+            /* [out] */ ULONG *pBufferOffset);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classID,
+            /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
+            /* [in] */ ULONG cFieldOffset,
+            /* [out] */ ULONG *pcFieldOffset,
+            /* [out] */ ULONG *pulClassSize);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ ModuleID *pModuleId,
+            /* [out] */ mdTypeDef *pTypeDefToken,
+            /* [out] */ ClassID *pParentClassId,
+            /* [in] */ ULONG32 cNumTypeArgs,
+            /* [out] */ ULONG32 *pcNumTypeArgs,
+            /* [out] */ ClassID typeArgs[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionID,
+            /* [in] */ ULONG32 cCodeInfos,
+            /* [out] */ ULONG32 *pcCodeInfos,
+            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleID,
+            /* [in] */ mdTypeDef typeDef,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [size_is][in] */ ClassID typeArgs[  ],
+            /* [out] */ ClassID *pClassID);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleID,
+            /* [in] */ mdMethodDef funcDef,
+            /* [in] */ ClassID classId,
+            /* [in] */ ULONG32 cTypeArgs,
+            /* [size_is][in] */ ClassID typeArgs[  ],
+            /* [out] */ FunctionID *pFunctionID);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleID,
+            /* [out] */ ICorProfilerObjectEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ObjectID objectId,
+            /* [in] */ ULONG32 cDimensions,
+            /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
+            /* [size_is][out] */ int pDimensionLowerBounds[  ],
+            /* [out] */ BYTE **ppData);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [out] */ ULONG32 *pBufferOffset);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ AppDomainID *pAppDomainId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ AppDomainID appDomainId,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ ContextID contextId,
+            /* [out] */ void **ppAddress);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ULONG cObjectRanges,
+            /* [out] */ ULONG *pcObjectRanges,
+            /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ObjectID objectId,
+            /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ ICorProfilerFunctionEnum **ppEnum);
+        
+        HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ DWORD dwExpectedCompletionMilliseconds);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionIDMapper2 *pFunc,
+            /* [in] */ void *clientData);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ ULONG *pStringLengthOffset,
+            /* [out] */ ULONG *pBufferOffset);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionEnter3 *pFuncEnter3,
+            /* [in] */ FunctionLeave3 *pFuncLeave3,
+            /* [in] */ FunctionTailcall3 *pFuncTailcall3);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
+            /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
+            /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
+            /* [out][in] */ ULONG *pcbArgumentInfo,
+            /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo);
         
-        HRESULT ( STDMETHODCALLTYPE *Reset )( 
-            ICorProfilerObjectEnum * This);
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
+            /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange);
         
-        HRESULT ( STDMETHODCALLTYPE *Clone )( 
-            ICorProfilerObjectEnum * This,
-            /* [out] */ ICorProfilerObjectEnum **ppEnum);
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ COR_PRF_ELT_INFO eltInfo,
+            /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo);
         
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            ICorProfilerObjectEnum * This,
-            /* [out] */ ULONG *pcelt);
+        HRESULT ( STDMETHODCALLTYPE *EnumModules )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ ICorProfilerModuleEnum **ppEnum);
         
-        HRESULT ( STDMETHODCALLTYPE *Next )( 
-            ICorProfilerObjectEnum * This,
-            /* [in] */ ULONG celt,
-            /* [length_is][size_is][out] */ ObjectID objects[  ],
-            /* [out] */ ULONG *pceltFetched);
+        HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ USHORT *pClrInstanceId,
+            /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
+            /* [out] */ USHORT *pMajorVersion,
+            /* [out] */ USHORT *pMinorVersion,
+            /* [out] */ USHORT *pBuildNumber,
+            /* [out] */ USHORT *pQFEVersion,
+            /* [in] */ ULONG cchVersionString,
+            /* [out] */ ULONG *pcchVersionString,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]);
         
-        END_INTERFACE
-    } ICorProfilerObjectEnumVtbl;
-
-    interface ICorProfilerObjectEnum
-    {
-        CONST_VTBL struct ICorProfilerObjectEnumVtbl *lpVtbl;
-    };
-
-    
-
-#ifdef COBJMACROS
-
-
-#define ICorProfilerObjectEnum_QueryInterface(This,riid,ppvObject)     \
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
-
-#define ICorProfilerObjectEnum_AddRef(This)    \
-    ( (This)->lpVtbl -> AddRef(This) ) 
-
-#define ICorProfilerObjectEnum_Release(This)   \
-    ( (This)->lpVtbl -> Release(This) ) 
-
-
-#define ICorProfilerObjectEnum_Skip(This,celt) \
-    ( (This)->lpVtbl -> Skip(This,celt) ) 
-
-#define ICorProfilerObjectEnum_Reset(This)     \
-    ( (This)->lpVtbl -> Reset(This) ) 
-
-#define ICorProfilerObjectEnum_Clone(This,ppEnum)      \
-    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 
-
-#define ICorProfilerObjectEnum_GetCount(This,pcelt)    \
-    ( (This)->lpVtbl -> GetCount(This,pcelt) ) 
-
-#define ICorProfilerObjectEnum_Next(This,celt,objects,pceltFetched)    \
-    ( (This)->lpVtbl -> Next(This,celt,objects,pceltFetched) ) 
-
-#endif /* COBJMACROS */
-
-
-#endif         /* C style interface */
-
-
-
-
-#endif         /* __ICorProfilerObjectEnum_INTERFACE_DEFINED__ */
-
-
-#ifndef __ICorProfilerFunctionEnum_INTERFACE_DEFINED__
-#define __ICorProfilerFunctionEnum_INTERFACE_DEFINED__
-
-/* interface ICorProfilerFunctionEnum */
-/* [local][unique][uuid][object] */ 
-
-
-EXTERN_C const IID IID_ICorProfilerFunctionEnum;
-
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("FF71301A-B994-429D-A10B-B345A65280EF")
-    ICorProfilerFunctionEnum : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Skip( 
-            /* [in] */ ULONG celt) = 0;
+        HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ClassID classId,
+            /* [in] */ mdFieldDef fieldToken,
+            /* [in] */ AppDomainID appDomainId,
+            /* [in] */ ThreadID threadId,
+            /* [out] */ void **ppAddress);
         
-        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
+        HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ ULONG32 cAppDomainIds,
+            /* [out] */ ULONG32 *pcAppDomainIds,
+            /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]);
         
-        virtual HRESULT STDMETHODCALLTYPE Clone( 
-            /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0;
+        HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ LPCBYTE *ppBaseLoadAddress,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [annotation][out] */ 
+            _Out_writes_to_(cchName, *pcchName)  WCHAR szName[  ],
+            /* [out] */ AssemblyID *pAssemblyId,
+            /* [out] */ DWORD *pdwModuleFlags);
         
-        virtual HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ ULONG *pcelt) = 0;
+        HRESULT ( STDMETHODCALLTYPE *EnumThreads )( 
+            ICorProfilerInfo4 * This,
+            /* [out] */ ICorProfilerThreadEnum **ppEnum);
         
-        virtual HRESULT STDMETHODCALLTYPE Next( 
-            /* [in] */ ULONG celt,
-            /* [length_is][size_is][out] */ COR_PRF_FUNCTION ids[  ],
-            /* [out] */ ULONG *pceltFetched) = 0;
+        HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( 
+            ICorProfilerInfo4 * This);
         
-    };
-    
-    
-#else  /* C style interface */
-
-    typedef struct ICorProfilerFunctionEnumVtbl
-    {
-        BEGIN_INTERFACE
+        HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ULONG cFunctions,
+            /* [size_is][in] */ ModuleID moduleIds[  ],
+            /* [size_is][in] */ mdMethodDef methodIds[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerFunctionEnum * This,
-            /* [in] */ REFIID riid,
-            /* [annotation][iid_is][out] */ 
-            _COM_Outptr_  void **ppvObject);
+        HRESULT ( STDMETHODCALLTYPE *RequestRevert )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ULONG cFunctions,
+            /* [size_is][in] */ ModuleID moduleIds[  ],
+            /* [size_is][in] */ mdMethodDef methodIds[  ],
+            /* [size_is][out] */ HRESULT status[  ]);
         
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerFunctionEnum * This);
+        HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionID,
+            /* [in] */ ReJITID reJitId,
+            /* [in] */ ULONG32 cCodeInfos,
+            /* [out] */ ULONG32 *pcCodeInfos,
+            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerFunctionEnum * This);
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ LPCBYTE ip,
+            /* [out] */ FunctionID *pFunctionId,
+            /* [out] */ ReJITID *pReJitId);
         
-        HRESULT ( STDMETHODCALLTYPE *Skip )( 
-            ICorProfilerFunctionEnum * This,
-            /* [in] */ ULONG celt);
+        HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ULONG cReJitIds,
+            /* [out] */ ULONG *pcReJitIds,
+            /* [length_is][size_is][out] */ ReJITID reJitIds[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *Reset )( 
-            ICorProfilerFunctionEnum * This);
+        HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ FunctionID functionId,
+            /* [in] */ ReJITID reJitId,
+            /* [in] */ ULONG32 cMap,
+            /* [out] */ ULONG32 *pcMap,
+            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
-        HRESULT ( STDMETHODCALLTYPE *Clone )( 
-            ICorProfilerFunctionEnum * This,
+        HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( 
+            ICorProfilerInfo4 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            ICorProfilerFunctionEnum * This,
-            /* [out] */ ULONG *pcelt);
-        
-        HRESULT ( STDMETHODCALLTYPE *Next )( 
-            ICorProfilerFunctionEnum * This,
-            /* [in] */ ULONG celt,
-            /* [length_is][size_is][out] */ COR_PRF_FUNCTION ids[  ],
-            /* [out] */ ULONG *pceltFetched);
+        HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( 
+            ICorProfilerInfo4 * This,
+            /* [in] */ ObjectID objectId,
+            /* [out] */ SIZE_T *pcSize);
         
         END_INTERFACE
-    } ICorProfilerFunctionEnumVtbl;
+    } ICorProfilerInfo4Vtbl;
 
-    interface ICorProfilerFunctionEnum
+    interface ICorProfilerInfo4
     {
-        CONST_VTBL struct ICorProfilerFunctionEnumVtbl *lpVtbl;
+        CONST_VTBL struct ICorProfilerInfo4Vtbl *lpVtbl;
     };
 
     
@@ -8019,336 +9740,252 @@ EXTERN_C const IID IID_ICorProfilerFunctionEnum;
 #ifdef COBJMACROS
 
 
-#define ICorProfilerFunctionEnum_QueryInterface(This,riid,ppvObject)   \
+#define ICorProfilerInfo4_QueryInterface(This,riid,ppvObject)  \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerFunctionEnum_AddRef(This)  \
+#define ICorProfilerInfo4_AddRef(This) \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerFunctionEnum_Release(This) \
+#define ICorProfilerInfo4_Release(This)        \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerFunctionEnum_Skip(This,celt)       \
-    ( (This)->lpVtbl -> Skip(This,celt) ) 
+#define ICorProfilerInfo4_GetClassFromObject(This,objectId,pClassId)   \
+    ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
 
-#define ICorProfilerFunctionEnum_Reset(This)   \
-    ( (This)->lpVtbl -> Reset(This) ) 
+#define ICorProfilerInfo4_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+    ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
 
-#define ICorProfilerFunctionEnum_Clone(This,ppEnum)    \
-    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 
+#define ICorProfilerInfo4_GetCodeInfo(This,functionId,pStart,pcSize)   \
+    ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
 
-#define ICorProfilerFunctionEnum_GetCount(This,pcelt)  \
-    ( (This)->lpVtbl -> GetCount(This,pcelt) ) 
+#define ICorProfilerInfo4_GetEventMask(This,pdwEvents) \
+    ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
 
-#define ICorProfilerFunctionEnum_Next(This,celt,ids,pceltFetched)      \
-    ( (This)->lpVtbl -> Next(This,celt,ids,pceltFetched) ) 
+#define ICorProfilerInfo4_GetFunctionFromIP(This,ip,pFunctionId)       \
+    ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
+
+#define ICorProfilerInfo4_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+    ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
 
-#endif /* COBJMACROS */
+#define ICorProfilerInfo4_GetHandleFromThread(This,threadId,phThread)  \
+    ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
 
+#define ICorProfilerInfo4_GetObjectSize(This,objectId,pcSize)  \
+    ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
 
-#endif         /* C style interface */
+#define ICorProfilerInfo4_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+    ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
 
+#define ICorProfilerInfo4_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+    ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
 
+#define ICorProfilerInfo4_GetCurrentThreadID(This,pThreadId)   \
+    ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
 
+#define ICorProfilerInfo4_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+    ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
 
-#endif         /* __ICorProfilerFunctionEnum_INTERFACE_DEFINED__ */
+#define ICorProfilerInfo4_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+    ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
 
+#define ICorProfilerInfo4_SetEventMask(This,dwEvents)  \
+    ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
 
-#ifndef __ICorProfilerModuleEnum_INTERFACE_DEFINED__
-#define __ICorProfilerModuleEnum_INTERFACE_DEFINED__
+#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-/* interface ICorProfilerModuleEnum */
-/* [local][unique][uuid][object] */ 
+#define ICorProfilerInfo4_SetFunctionIDMapper(This,pFunc)      \
+    ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
 
+#define ICorProfilerInfo4_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+    ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
 
-EXTERN_C const IID IID_ICorProfilerModuleEnum;
+#define ICorProfilerInfo4_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+    ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
 
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("b0266d75-2081-4493-af7f-028ba34db891")
-    ICorProfilerModuleEnum : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE Skip( 
-            /* [in] */ ULONG celt) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Reset( void) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Clone( 
-            /* [out] */ ICorProfilerModuleEnum **ppEnum) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetCount( 
-            /* [out] */ ULONG *pcelt) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE Next( 
-            /* [in] */ ULONG celt,
-            /* [length_is][size_is][out] */ ModuleID ids[  ],
-            /* [out] */ ULONG *pceltFetched) = 0;
-        
-    };
-    
-    
-#else  /* C style interface */
+#define ICorProfilerInfo4_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+    ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
 
-    typedef struct ICorProfilerModuleEnumVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerModuleEnum * This,
-            /* [in] */ REFIID riid,
-            /* [annotation][iid_is][out] */ 
-            _COM_Outptr_  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerModuleEnum * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerModuleEnum * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Skip )( 
-            ICorProfilerModuleEnum * This,
-            /* [in] */ ULONG celt);
-        
-        HRESULT ( STDMETHODCALLTYPE *Reset )( 
-            ICorProfilerModuleEnum * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *Clone )( 
-            ICorProfilerModuleEnum * This,
-            /* [out] */ ICorProfilerModuleEnum **ppEnum);
-        
-        HRESULT ( STDMETHODCALLTYPE *GetCount )( 
-            ICorProfilerModuleEnum * This,
-            /* [out] */ ULONG *pcelt);
-        
-        HRESULT ( STDMETHODCALLTYPE *Next )( 
-            ICorProfilerModuleEnum * This,
-            /* [in] */ ULONG celt,
-            /* [length_is][size_is][out] */ ModuleID ids[  ],
-            /* [out] */ ULONG *pceltFetched);
-        
-        END_INTERFACE
-    } ICorProfilerModuleEnumVtbl;
+#define ICorProfilerInfo4_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+    ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
 
-    interface ICorProfilerModuleEnum
-    {
-        CONST_VTBL struct ICorProfilerModuleEnumVtbl *lpVtbl;
-    };
+#define ICorProfilerInfo4_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+    ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
 
-    
+#define ICorProfilerInfo4_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+    ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
 
-#ifdef COBJMACROS
+#define ICorProfilerInfo4_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+    ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
 
+#define ICorProfilerInfo4_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+    ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
 
-#define ICorProfilerModuleEnum_QueryInterface(This,riid,ppvObject)     \
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+#define ICorProfilerInfo4_SetFunctionReJIT(This,functionId)    \
+    ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
 
-#define ICorProfilerModuleEnum_AddRef(This)    \
-    ( (This)->lpVtbl -> AddRef(This) ) 
+#define ICorProfilerInfo4_ForceGC(This)        \
+    ( (This)->lpVtbl -> ForceGC(This) ) 
 
-#define ICorProfilerModuleEnum_Release(This)   \
-    ( (This)->lpVtbl -> Release(This) ) 
+#define ICorProfilerInfo4_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+    ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
 
+#define ICorProfilerInfo4_GetInprocInspectionInterface(This,ppicd)     \
+    ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
 
-#define ICorProfilerModuleEnum_Skip(This,celt) \
-    ( (This)->lpVtbl -> Skip(This,celt) ) 
+#define ICorProfilerInfo4_GetInprocInspectionIThisThread(This,ppicd)   \
+    ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
 
-#define ICorProfilerModuleEnum_Reset(This)     \
-    ( (This)->lpVtbl -> Reset(This) ) 
+#define ICorProfilerInfo4_GetThreadContext(This,threadId,pContextId)   \
+    ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
 
-#define ICorProfilerModuleEnum_Clone(This,ppEnum)      \
-    ( (This)->lpVtbl -> Clone(This,ppEnum) ) 
+#define ICorProfilerInfo4_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+    ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
 
-#define ICorProfilerModuleEnum_GetCount(This,pcelt)    \
-    ( (This)->lpVtbl -> GetCount(This,pcelt) ) 
+#define ICorProfilerInfo4_EndInprocDebugging(This,dwProfilerContext)   \
+    ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
 
-#define ICorProfilerModuleEnum_Next(This,celt,ids,pceltFetched)        \
-    ( (This)->lpVtbl -> Next(This,celt,ids,pceltFetched) ) 
+#define ICorProfilerInfo4_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+    ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
 
-#endif /* COBJMACROS */
 
+#define ICorProfilerInfo4_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
+    ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
 
-#endif         /* C style interface */
+#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
+#define ICorProfilerInfo4_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
+    ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
 
+#define ICorProfilerInfo4_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
+    ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
 
+#define ICorProfilerInfo4_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
+    ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
 
-#endif         /* __ICorProfilerModuleEnum_INTERFACE_DEFINED__ */
+#define ICorProfilerInfo4_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
+    ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
 
+#define ICorProfilerInfo4_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
+    ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#ifndef __IMethodMalloc_INTERFACE_DEFINED__
-#define __IMethodMalloc_INTERFACE_DEFINED__
+#define ICorProfilerInfo4_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
+    ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
 
-/* interface IMethodMalloc */
-/* [local][unique][uuid][object] */ 
+#define ICorProfilerInfo4_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
+    ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
 
+#define ICorProfilerInfo4_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
+    ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
 
-EXTERN_C const IID IID_IMethodMalloc;
+#define ICorProfilerInfo4_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
+    ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
 
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("A0EFB28B-6EE2-4d7b-B983-A75EF7BEEDB8")
-    IMethodMalloc : public IUnknown
-    {
-    public:
-        virtual PVOID STDMETHODCALLTYPE Alloc( 
-            /* [in] */ ULONG cb) = 0;
-        
-    };
-    
-    
-#else  /* C style interface */
+#define ICorProfilerInfo4_GetBoxClassLayout(This,classId,pBufferOffset)        \
+    ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
 
-    typedef struct IMethodMallocVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            IMethodMalloc * This,
-            /* [in] */ REFIID riid,
-            /* [annotation][iid_is][out] */ 
-            _COM_Outptr_  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            IMethodMalloc * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            IMethodMalloc * This);
-        
-        PVOID ( STDMETHODCALLTYPE *Alloc )( 
-            IMethodMalloc * This,
-            /* [in] */ ULONG cb);
-        
-        END_INTERFACE
-    } IMethodMallocVtbl;
+#define ICorProfilerInfo4_GetThreadAppDomain(This,threadId,pAppDomainId)       \
+    ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
 
-    interface IMethodMalloc
-    {
-        CONST_VTBL struct IMethodMallocVtbl *lpVtbl;
-    };
+#define ICorProfilerInfo4_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
+    ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
 
-    
+#define ICorProfilerInfo4_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
+    ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
 
-#ifdef COBJMACROS
+#define ICorProfilerInfo4_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
+    ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
 
+#define ICorProfilerInfo4_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
+    ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
 
-#define IMethodMalloc_QueryInterface(This,riid,ppvObject)      \
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+#define ICorProfilerInfo4_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
+    ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
 
-#define IMethodMalloc_AddRef(This)     \
-    ( (This)->lpVtbl -> AddRef(This) ) 
+#define ICorProfilerInfo4_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
+    ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
 
-#define IMethodMalloc_Release(This)    \
-    ( (This)->lpVtbl -> Release(This) ) 
+#define ICorProfilerInfo4_GetObjectGeneration(This,objectId,range)     \
+    ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
 
+#define ICorProfilerInfo4_GetNotifiedExceptionClauseInfo(This,pinfo)   \
+    ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
 
-#define IMethodMalloc_Alloc(This,cb)   \
-    ( (This)->lpVtbl -> Alloc(This,cb) ) 
 
-#endif /* COBJMACROS */
+#define ICorProfilerInfo4_EnumJITedFunctions(This,ppEnum)      \
+    ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) 
 
+#define ICorProfilerInfo4_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
+    ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) 
 
-#endif         /* C style interface */
+#define ICorProfilerInfo4_SetFunctionIDMapper2(This,pFunc,clientData)  \
+    ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) 
 
+#define ICorProfilerInfo4_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
+    ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) 
 
+#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) 
 
+#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
+    ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) 
 
-#endif         /* __IMethodMalloc_INTERFACE_DEFINED__ */
+#define ICorProfilerInfo4_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
+    ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) 
 
+#define ICorProfilerInfo4_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
+    ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) 
 
-#ifndef __ICorProfilerFunctionControl_INTERFACE_DEFINED__
-#define __ICorProfilerFunctionControl_INTERFACE_DEFINED__
+#define ICorProfilerInfo4_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
+    ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) 
 
-/* interface ICorProfilerFunctionControl */
-/* [local][unique][uuid][object] */ 
+#define ICorProfilerInfo4_EnumModules(This,ppEnum)     \
+    ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) 
 
+#define ICorProfilerInfo4_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
+    ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) 
 
-EXTERN_C const IID IID_ICorProfilerFunctionControl;
+#define ICorProfilerInfo4_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
+    ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) 
 
-#if defined(__cplusplus) && !defined(CINTERFACE)
-    
-    MIDL_INTERFACE("F0963021-E1EA-4732-8581-E01B0BD3C0C6")
-    ICorProfilerFunctionControl : public IUnknown
-    {
-    public:
-        virtual HRESULT STDMETHODCALLTYPE SetCodegenFlags( 
-            /* [in] */ DWORD flags) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetILFunctionBody( 
-            /* [in] */ ULONG cbNewILMethodHeader,
-            /* [size_is][in] */ LPCBYTE pbNewILMethodHeader) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetILInstrumentedCodeMap( 
-            /* [in] */ ULONG cILMapEntries,
-            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]) = 0;
-        
-    };
-    
-    
-#else  /* C style interface */
+#define ICorProfilerInfo4_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
+    ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) 
 
-    typedef struct ICorProfilerFunctionControlVtbl
-    {
-        BEGIN_INTERFACE
-        
-        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerFunctionControl * This,
-            /* [in] */ REFIID riid,
-            /* [annotation][iid_is][out] */ 
-            _COM_Outptr_  void **ppvObject);
-        
-        ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerFunctionControl * This);
-        
-        ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerFunctionControl * This);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetCodegenFlags )( 
-            ICorProfilerFunctionControl * This,
-            /* [in] */ DWORD flags);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerFunctionControl * This,
-            /* [in] */ ULONG cbNewILMethodHeader,
-            /* [size_is][in] */ LPCBYTE pbNewILMethodHeader);
-        
-        HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerFunctionControl * This,
-            /* [in] */ ULONG cILMapEntries,
-            /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
-        
-        END_INTERFACE
-    } ICorProfilerFunctionControlVtbl;
+#define ICorProfilerInfo4_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
+    ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) 
 
-    interface ICorProfilerFunctionControl
-    {
-        CONST_VTBL struct ICorProfilerFunctionControlVtbl *lpVtbl;
-    };
 
-    
+#define ICorProfilerInfo4_EnumThreads(This,ppEnum)     \
+    ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) 
 
-#ifdef COBJMACROS
+#define ICorProfilerInfo4_InitializeCurrentThread(This)        \
+    ( (This)->lpVtbl -> InitializeCurrentThread(This) ) 
 
+#define ICorProfilerInfo4_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
+    ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) 
 
-#define ICorProfilerFunctionControl_QueryInterface(This,riid,ppvObject)        \
-    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
+#define ICorProfilerInfo4_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
+    ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) 
 
-#define ICorProfilerFunctionControl_AddRef(This)       \
-    ( (This)->lpVtbl -> AddRef(This) ) 
+#define ICorProfilerInfo4_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
+    ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerFunctionControl_Release(This)      \
-    ( (This)->lpVtbl -> Release(This) ) 
+#define ICorProfilerInfo4_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
+    ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) 
 
+#define ICorProfilerInfo4_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
+    ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) 
 
-#define ICorProfilerFunctionControl_SetCodegenFlags(This,flags)        \
-    ( (This)->lpVtbl -> SetCodegenFlags(This,flags) ) 
+#define ICorProfilerInfo4_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
+    ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) 
 
-#define ICorProfilerFunctionControl_SetILFunctionBody(This,cbNewILMethodHeader,pbNewILMethodHeader)    \
-    ( (This)->lpVtbl -> SetILFunctionBody(This,cbNewILMethodHeader,pbNewILMethodHeader) ) 
+#define ICorProfilerInfo4_EnumJITedFunctions2(This,ppEnum)     \
+    ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) 
 
-#define ICorProfilerFunctionControl_SetILInstrumentedCodeMap(This,cILMapEntries,rgILMapEntries)        \
-    ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,cILMapEntries,rgILMapEntries) ) 
+#define ICorProfilerInfo4_GetObjectSize2(This,objectId,pcSize) \
+    ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) 
 
 #endif /* COBJMACROS */
 
@@ -8358,187 +9995,147 @@ EXTERN_C const IID IID_ICorProfilerFunctionControl;
 
 
 
-#endif         /* __ICorProfilerFunctionControl_INTERFACE_DEFINED__ */
+#endif         /* __ICorProfilerInfo4_INTERFACE_DEFINED__ */
 
 
-#ifndef __ICorProfilerInfo4_INTERFACE_DEFINED__
-#define __ICorProfilerInfo4_INTERFACE_DEFINED__
+#ifndef __ICorProfilerInfo5_INTERFACE_DEFINED__
+#define __ICorProfilerInfo5_INTERFACE_DEFINED__
 
-/* interface ICorProfilerInfo4 */
+/* interface ICorProfilerInfo5 */
 /* [local][unique][uuid][object] */ 
 
 
-EXTERN_C const IID IID_ICorProfilerInfo4;
+EXTERN_C const IID IID_ICorProfilerInfo5;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("0d8fdcaa-6257-47bf-b1bf-94dac88466ee")
-    ICorProfilerInfo4 : public ICorProfilerInfo3
+    MIDL_INTERFACE("07602928-CE38-4B83-81E7-74ADAF781214")
+    ICorProfilerInfo5 : public ICorProfilerInfo4
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE EnumThreads( 
-            /* [out] */ ICorProfilerThreadEnum **ppEnum) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE InitializeCurrentThread( void) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RequestReJIT( 
-            /* [in] */ ULONG cFunctions,
-            /* [size_is][in] */ ModuleID moduleIds[  ],
-            /* [size_is][in] */ mdMethodDef methodIds[  ]) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE RequestRevert( 
-            /* [in] */ ULONG cFunctions,
-            /* [size_is][in] */ ModuleID moduleIds[  ],
-            /* [size_is][in] */ mdMethodDef methodIds[  ],
-            /* [size_is][out] */ HRESULT status[  ]) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetCodeInfo3( 
-            /* [in] */ FunctionID functionID,
-            /* [in] */ ReJITID reJitId,
-            /* [in] */ ULONG32 cCodeInfos,
-            /* [out] */ ULONG32 *pcCodeInfos,
-            /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP2( 
-            /* [in] */ LPCBYTE ip,
-            /* [out] */ FunctionID *pFunctionId,
-            /* [out] */ ReJITID *pReJitId) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetReJITIDs( 
-            /* [in] */ FunctionID functionId,
-            /* [in] */ ULONG cReJitIds,
-            /* [out] */ ULONG *pcReJitIds,
-            /* [length_is][size_is][out] */ ReJITID reJitIds[  ]) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping2( 
-            /* [in] */ FunctionID functionId,
-            /* [in] */ ReJITID reJitId,
-            /* [in] */ ULONG32 cMap,
-            /* [out] */ ULONG32 *pcMap,
-            /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE EnumJITedFunctions2( 
-            /* [out] */ ICorProfilerFunctionEnum **ppEnum) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetEventMask2( 
+            /* [out] */ DWORD *pdwEventsLow,
+            /* [out] */ DWORD *pdwEventsHigh) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetObjectSize2( 
-            /* [in] */ ObjectID objectId,
-            /* [out] */ SIZE_T *pcSize) = 0;
+        virtual HRESULT STDMETHODCALLTYPE SetEventMask2( 
+            /* [in] */ DWORD dwEventsLow,
+            /* [in] */ DWORD dwEventsHigh) = 0;
         
     };
     
     
 #else  /* C style interface */
 
-    typedef struct ICorProfilerInfo4Vtbl
+    typedef struct ICorProfilerInfo5Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ REFIID riid,
             /* [annotation][iid_is][out] */ 
             _COM_Outptr_  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerInfo4 * This);
+            ICorProfilerInfo5 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerInfo4 * This);
+            ICorProfilerInfo5 * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdTypeDef typeDef,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ LPCBYTE *pStart,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ DWORD *pdwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdToken token,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ HANDLE *phThread);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [out] */ CorElementType *pBaseElemType,
             /* [out] */ ClassID *pBaseClassId,
             /* [out] */ ULONG *pcRank);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ DWORD *pdwWin32ThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ ThreadID *pThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ ClassID *pClassId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ DWORD dwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionEnter *pFuncEnter,
             /* [in] */ FunctionLeave *pFuncLeave,
             /* [in] */ FunctionTailcall *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionIDMapper *pFunc);
         
         HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppImport,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -8548,32 +10145,32 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ AssemblyID *pAssemblyId);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ DWORD dwOpenFlags,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppOut);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodId,
             /* [out] */ LPCBYTE *ppMethodHeader,
             /* [out] */ ULONG *pcbMethodSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ IMethodMalloc **ppMalloc);
         
         HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodid,
             /* [in] */ LPCBYTE pbNewILMethodHeader);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ AppDomainID appDomainId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -8582,7 +10179,7 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ ProcessID *pProcessId);
         
         HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ AssemblyID assemblyId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -8592,50 +10189,50 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ ModuleID *pModuleId);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId);
         
         HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
-            ICorProfilerInfo4 * This);
+            ICorProfilerInfo5 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ BOOL fStartJit,
             /* [in] */ ULONG cILMapEntries,
             /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ ContextID *pContextId);
         
         HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ BOOL fThisThreadOnly,
             /* [out] */ DWORD *pdwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ DWORD dwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG32 cMap,
             /* [out] */ ULONG32 *pcMap,
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ThreadID thread,
             /* [in] */ StackSnapshotCallback *callback,
             /* [in] */ ULONG32 infoFlags,
@@ -8644,13 +10241,13 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [in] */ ULONG32 contextSize);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionEnter2 *pFuncEnter,
             /* [in] */ FunctionLeave2 *pFuncLeave,
             /* [in] */ FunctionTailcall2 *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID funcId,
             /* [in] */ COR_PRF_FRAME_INFO frameInfo,
             /* [out] */ ClassID *pClassId,
@@ -8661,13 +10258,13 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ ULONG *pBufferLengthOffset,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classID,
             /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
             /* [in] */ ULONG cFieldOffset,
@@ -8675,7 +10272,7 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ ULONG *pulClassSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken,
@@ -8685,14 +10282,14 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ULONG32 cCodeInfos,
             /* [out] */ ULONG32 *pcCodeInfos,
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdTypeDef typeDef,
             /* [in] */ ULONG32 cTypeArgs,
@@ -8700,7 +10297,7 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ ClassID *pClassID);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdMethodDef funcDef,
             /* [in] */ ClassID classId,
@@ -8709,12 +10306,12 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ FunctionID *pFunctionID);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleID,
             /* [out] */ ICorProfilerObjectEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ObjectID objectId,
             /* [in] */ ULONG32 cDimensions,
             /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
@@ -8722,95 +10319,95 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ BYTE **ppData);
         
         HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ULONG32 *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ AppDomainID *pAppDomainId);
         
         HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ThreadID threadId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ContextID contextId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ULONG cObjectRanges,
             /* [out] */ ULONG *pcObjectRanges,
             /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
         
         HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ DWORD dwExpectedCompletionMilliseconds);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionIDMapper2 *pFunc,
             /* [in] */ void *clientData);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionEnter3 *pFuncEnter3,
             /* [in] */ FunctionLeave3 *pFuncLeave3,
             /* [in] */ FunctionTailcall3 *pFuncTailcall3);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
             /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
             /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
@@ -8818,24 +10415,24 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
             /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModules )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ ICorProfilerModuleEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ USHORT *pClrInstanceId,
             /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
             /* [out] */ USHORT *pMajorVersion,
@@ -8848,7 +10445,7 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
@@ -8856,14 +10453,14 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ ULONG32 cAppDomainIds,
             /* [out] */ ULONG32 *pcAppDomainIds,
             /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -8874,27 +10471,27 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [out] */ DWORD *pdwModuleFlags);
         
         HRESULT ( STDMETHODCALLTYPE *EnumThreads )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ ICorProfilerThreadEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( 
-            ICorProfilerInfo4 * This);
+            ICorProfilerInfo5 * This);
         
         HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *RequestRevert )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ],
             /* [size_is][out] */ HRESULT status[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cCodeInfos,
@@ -8902,20 +10499,20 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId,
             /* [out] */ ReJITID *pReJitId);
         
         HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG cReJitIds,
             /* [out] */ ULONG *pcReJitIds,
             /* [length_is][size_is][out] */ ReJITID reJitIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cMap,
@@ -8923,20 +10520,30 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( 
-            ICorProfilerInfo4 * This,
+            ICorProfilerInfo5 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ SIZE_T *pcSize);
         
+        HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( 
+            ICorProfilerInfo5 * This,
+            /* [out] */ DWORD *pdwEventsLow,
+            /* [out] */ DWORD *pdwEventsHigh);
+        
+        HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( 
+            ICorProfilerInfo5 * This,
+            /* [in] */ DWORD dwEventsLow,
+            /* [in] */ DWORD dwEventsHigh);
+        
         END_INTERFACE
-    } ICorProfilerInfo4Vtbl;
+    } ICorProfilerInfo5Vtbl;
 
-    interface ICorProfilerInfo4
+    interface ICorProfilerInfo5
     {
-        CONST_VTBL struct ICorProfilerInfo4Vtbl *lpVtbl;
+        CONST_VTBL struct ICorProfilerInfo5Vtbl *lpVtbl;
     };
 
     
@@ -8944,253 +10551,260 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
 #ifdef COBJMACROS
 
 
-#define ICorProfilerInfo4_QueryInterface(This,riid,ppvObject)  \
+#define ICorProfilerInfo5_QueryInterface(This,riid,ppvObject)  \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerInfo4_AddRef(This) \
+#define ICorProfilerInfo5_AddRef(This) \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerInfo4_Release(This)        \
+#define ICorProfilerInfo5_Release(This)        \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerInfo4_GetClassFromObject(This,objectId,pClassId)   \
+#define ICorProfilerInfo5_GetClassFromObject(This,objectId,pClassId)   \
     ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
 
-#define ICorProfilerInfo4_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+#define ICorProfilerInfo5_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
     ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
 
-#define ICorProfilerInfo4_GetCodeInfo(This,functionId,pStart,pcSize)   \
+#define ICorProfilerInfo5_GetCodeInfo(This,functionId,pStart,pcSize)   \
     ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
 
-#define ICorProfilerInfo4_GetEventMask(This,pdwEvents) \
+#define ICorProfilerInfo5_GetEventMask(This,pdwEvents) \
     ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
 
-#define ICorProfilerInfo4_GetFunctionFromIP(This,ip,pFunctionId)       \
+#define ICorProfilerInfo5_GetFunctionFromIP(This,ip,pFunctionId)       \
     ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
 
-#define ICorProfilerInfo4_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+#define ICorProfilerInfo5_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
     ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
 
-#define ICorProfilerInfo4_GetHandleFromThread(This,threadId,phThread)  \
+#define ICorProfilerInfo5_GetHandleFromThread(This,threadId,phThread)  \
     ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
 
-#define ICorProfilerInfo4_GetObjectSize(This,objectId,pcSize)  \
+#define ICorProfilerInfo5_GetObjectSize(This,objectId,pcSize)  \
     ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
 
-#define ICorProfilerInfo4_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+#define ICorProfilerInfo5_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
     ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
 
-#define ICorProfilerInfo4_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+#define ICorProfilerInfo5_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
     ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
 
-#define ICorProfilerInfo4_GetCurrentThreadID(This,pThreadId)   \
+#define ICorProfilerInfo5_GetCurrentThreadID(This,pThreadId)   \
     ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
 
-#define ICorProfilerInfo4_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+#define ICorProfilerInfo5_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
     ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
 
-#define ICorProfilerInfo4_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+#define ICorProfilerInfo5_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
     ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
 
-#define ICorProfilerInfo4_SetEventMask(This,dwEvents)  \
+#define ICorProfilerInfo5_SetEventMask(This,dwEvents)  \
     ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
 
-#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo4_SetFunctionIDMapper(This,pFunc)      \
+#define ICorProfilerInfo5_SetFunctionIDMapper(This,pFunc)      \
     ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
 
-#define ICorProfilerInfo4_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+#define ICorProfilerInfo5_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
     ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
 
-#define ICorProfilerInfo4_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+#define ICorProfilerInfo5_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
     ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
 
-#define ICorProfilerInfo4_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+#define ICorProfilerInfo5_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
     ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
 
-#define ICorProfilerInfo4_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+#define ICorProfilerInfo5_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
     ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
 
-#define ICorProfilerInfo4_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+#define ICorProfilerInfo5_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
     ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
 
-#define ICorProfilerInfo4_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+#define ICorProfilerInfo5_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
     ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
 
-#define ICorProfilerInfo4_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+#define ICorProfilerInfo5_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
     ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
 
-#define ICorProfilerInfo4_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+#define ICorProfilerInfo5_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
     ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
 
-#define ICorProfilerInfo4_SetFunctionReJIT(This,functionId)    \
+#define ICorProfilerInfo5_SetFunctionReJIT(This,functionId)    \
     ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
 
-#define ICorProfilerInfo4_ForceGC(This)        \
+#define ICorProfilerInfo5_ForceGC(This)        \
     ( (This)->lpVtbl -> ForceGC(This) ) 
 
-#define ICorProfilerInfo4_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+#define ICorProfilerInfo5_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
     ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
 
-#define ICorProfilerInfo4_GetInprocInspectionInterface(This,ppicd)     \
+#define ICorProfilerInfo5_GetInprocInspectionInterface(This,ppicd)     \
     ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
 
-#define ICorProfilerInfo4_GetInprocInspectionIThisThread(This,ppicd)   \
+#define ICorProfilerInfo5_GetInprocInspectionIThisThread(This,ppicd)   \
     ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
 
-#define ICorProfilerInfo4_GetThreadContext(This,threadId,pContextId)   \
+#define ICorProfilerInfo5_GetThreadContext(This,threadId,pContextId)   \
     ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
 
-#define ICorProfilerInfo4_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+#define ICorProfilerInfo5_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
     ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
 
-#define ICorProfilerInfo4_EndInprocDebugging(This,dwProfilerContext)   \
+#define ICorProfilerInfo5_EndInprocDebugging(This,dwProfilerContext)   \
     ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
 
-#define ICorProfilerInfo4_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+#define ICorProfilerInfo5_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
     ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
 
 
-#define ICorProfilerInfo4_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
+#define ICorProfilerInfo5_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
     ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
 
-#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
+#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo4_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
+#define ICorProfilerInfo5_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
     ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo4_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
+#define ICorProfilerInfo5_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
     ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo4_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
+#define ICorProfilerInfo5_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
     ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
 
-#define ICorProfilerInfo4_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
+#define ICorProfilerInfo5_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
     ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo4_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo5_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo4_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
+#define ICorProfilerInfo5_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
     ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
 
-#define ICorProfilerInfo4_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
+#define ICorProfilerInfo5_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
     ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
 
-#define ICorProfilerInfo4_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
+#define ICorProfilerInfo5_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
     ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
 
-#define ICorProfilerInfo4_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
+#define ICorProfilerInfo5_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
     ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
 
-#define ICorProfilerInfo4_GetBoxClassLayout(This,classId,pBufferOffset)        \
+#define ICorProfilerInfo5_GetBoxClassLayout(This,classId,pBufferOffset)        \
     ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
 
-#define ICorProfilerInfo4_GetThreadAppDomain(This,threadId,pAppDomainId)       \
+#define ICorProfilerInfo5_GetThreadAppDomain(This,threadId,pAppDomainId)       \
     ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
 
-#define ICorProfilerInfo4_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
+#define ICorProfilerInfo5_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
     ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
 
-#define ICorProfilerInfo4_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
+#define ICorProfilerInfo5_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
     ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
 
-#define ICorProfilerInfo4_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
+#define ICorProfilerInfo5_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
     ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo4_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
+#define ICorProfilerInfo5_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
     ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
 
-#define ICorProfilerInfo4_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
+#define ICorProfilerInfo5_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
     ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
 
-#define ICorProfilerInfo4_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
+#define ICorProfilerInfo5_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
     ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
 
-#define ICorProfilerInfo4_GetObjectGeneration(This,objectId,range)     \
+#define ICorProfilerInfo5_GetObjectGeneration(This,objectId,range)     \
     ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
 
-#define ICorProfilerInfo4_GetNotifiedExceptionClauseInfo(This,pinfo)   \
+#define ICorProfilerInfo5_GetNotifiedExceptionClauseInfo(This,pinfo)   \
     ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
 
 
-#define ICorProfilerInfo4_EnumJITedFunctions(This,ppEnum)      \
+#define ICorProfilerInfo5_EnumJITedFunctions(This,ppEnum)      \
     ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) 
 
-#define ICorProfilerInfo4_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
+#define ICorProfilerInfo5_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
     ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) 
 
-#define ICorProfilerInfo4_SetFunctionIDMapper2(This,pFunc,clientData)  \
+#define ICorProfilerInfo5_SetFunctionIDMapper2(This,pFunc,clientData)  \
     ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) 
 
-#define ICorProfilerInfo4_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
+#define ICorProfilerInfo5_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
     ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
+#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) 
 
-#define ICorProfilerInfo4_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
+#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) 
 
-#define ICorProfilerInfo4_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
+#define ICorProfilerInfo5_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
     ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) 
 
-#define ICorProfilerInfo4_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
+#define ICorProfilerInfo5_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
     ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) 
 
-#define ICorProfilerInfo4_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
+#define ICorProfilerInfo5_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
     ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) 
 
-#define ICorProfilerInfo4_EnumModules(This,ppEnum)     \
+#define ICorProfilerInfo5_EnumModules(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) 
 
-#define ICorProfilerInfo4_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
+#define ICorProfilerInfo5_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
     ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) 
 
-#define ICorProfilerInfo4_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
+#define ICorProfilerInfo5_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
     ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo4_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
+#define ICorProfilerInfo5_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
     ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) 
 
-#define ICorProfilerInfo4_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
+#define ICorProfilerInfo5_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
     ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) 
 
 
-#define ICorProfilerInfo4_EnumThreads(This,ppEnum)     \
+#define ICorProfilerInfo5_EnumThreads(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) 
 
-#define ICorProfilerInfo4_InitializeCurrentThread(This)        \
+#define ICorProfilerInfo5_InitializeCurrentThread(This)        \
     ( (This)->lpVtbl -> InitializeCurrentThread(This) ) 
 
-#define ICorProfilerInfo4_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
+#define ICorProfilerInfo5_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
     ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) 
 
-#define ICorProfilerInfo4_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
+#define ICorProfilerInfo5_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
     ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) 
 
-#define ICorProfilerInfo4_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo5_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo4_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
+#define ICorProfilerInfo5_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
     ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) 
 
-#define ICorProfilerInfo4_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
+#define ICorProfilerInfo5_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
     ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) 
 
-#define ICorProfilerInfo4_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
+#define ICorProfilerInfo5_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
     ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) 
 
-#define ICorProfilerInfo4_EnumJITedFunctions2(This,ppEnum)     \
+#define ICorProfilerInfo5_EnumJITedFunctions2(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) 
 
-#define ICorProfilerInfo4_GetObjectSize2(This,objectId,pcSize) \
+#define ICorProfilerInfo5_GetObjectSize2(This,objectId,pcSize) \
     ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) 
 
+
+#define ICorProfilerInfo5_GetEventMask2(This,pdwEventsLow,pdwEventsHigh)       \
+    ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) 
+
+#define ICorProfilerInfo5_SetEventMask2(This,dwEventsLow,dwEventsHigh) \
+    ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -9199,147 +10813,146 @@ EXTERN_C const IID IID_ICorProfilerInfo4;
 
 
 
-#endif         /* __ICorProfilerInfo4_INTERFACE_DEFINED__ */
+#endif         /* __ICorProfilerInfo5_INTERFACE_DEFINED__ */
 
 
-#ifndef __ICorProfilerInfo5_INTERFACE_DEFINED__
-#define __ICorProfilerInfo5_INTERFACE_DEFINED__
+#ifndef __ICorProfilerInfo6_INTERFACE_DEFINED__
+#define __ICorProfilerInfo6_INTERFACE_DEFINED__
 
-/* interface ICorProfilerInfo5 */
+/* interface ICorProfilerInfo6 */
 /* [local][unique][uuid][object] */ 
 
 
-EXTERN_C const IID IID_ICorProfilerInfo5;
+EXTERN_C const IID IID_ICorProfilerInfo6;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("07602928-CE38-4B83-81E7-74ADAF781214")
-    ICorProfilerInfo5 : public ICorProfilerInfo4
+    MIDL_INTERFACE("F30A070D-BFFB-46A7-B1D8-8781EF7B698A")
+    ICorProfilerInfo6 : public ICorProfilerInfo5
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE GetEventMask2( 
-            /* [out] */ DWORD *pdwEventsLow,
-            /* [out] */ DWORD *pdwEventsHigh) = 0;
-        
-        virtual HRESULT STDMETHODCALLTYPE SetEventMask2( 
-            /* [in] */ DWORD dwEventsLow,
-            /* [in] */ DWORD dwEventsHigh) = 0;
+        virtual HRESULT STDMETHODCALLTYPE EnumNgenModuleMethodsInliningThisMethod( 
+            /* [in] */ ModuleID inlinersModuleId,
+            /* [in] */ ModuleID inlineeModuleId,
+            /* [in] */ mdMethodDef inlineeMethodId,
+            /* [out] */ BOOL *incompleteData,
+            /* [out] */ ICorProfilerMethodEnum **ppEnum) = 0;
         
     };
     
     
 #else  /* C style interface */
 
-    typedef struct ICorProfilerInfo5Vtbl
+    typedef struct ICorProfilerInfo6Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ REFIID riid,
             /* [annotation][iid_is][out] */ 
             _COM_Outptr_  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerInfo5 * This);
+            ICorProfilerInfo6 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerInfo5 * This);
+            ICorProfilerInfo6 * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdTypeDef typeDef,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ LPCBYTE *pStart,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ DWORD *pdwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdToken token,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ HANDLE *phThread);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [out] */ CorElementType *pBaseElemType,
             /* [out] */ ClassID *pBaseClassId,
             /* [out] */ ULONG *pcRank);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ DWORD *pdwWin32ThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ ThreadID *pThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ ClassID *pClassId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ DWORD dwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionEnter *pFuncEnter,
             /* [in] */ FunctionLeave *pFuncLeave,
             /* [in] */ FunctionTailcall *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionIDMapper *pFunc);
         
         HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppImport,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -9349,32 +10962,32 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ AssemblyID *pAssemblyId);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ DWORD dwOpenFlags,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppOut);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodId,
             /* [out] */ LPCBYTE *ppMethodHeader,
             /* [out] */ ULONG *pcbMethodSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ IMethodMalloc **ppMalloc);
         
         HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodid,
             /* [in] */ LPCBYTE pbNewILMethodHeader);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ AppDomainID appDomainId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -9383,7 +10996,7 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ ProcessID *pProcessId);
         
         HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ AssemblyID assemblyId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -9393,50 +11006,50 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ ModuleID *pModuleId);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId);
         
         HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
-            ICorProfilerInfo5 * This);
+            ICorProfilerInfo6 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ BOOL fStartJit,
             /* [in] */ ULONG cILMapEntries,
             /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ ContextID *pContextId);
         
         HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ BOOL fThisThreadOnly,
             /* [out] */ DWORD *pdwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ DWORD dwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG32 cMap,
             /* [out] */ ULONG32 *pcMap,
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ThreadID thread,
             /* [in] */ StackSnapshotCallback *callback,
             /* [in] */ ULONG32 infoFlags,
@@ -9445,13 +11058,13 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [in] */ ULONG32 contextSize);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionEnter2 *pFuncEnter,
             /* [in] */ FunctionLeave2 *pFuncLeave,
             /* [in] */ FunctionTailcall2 *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID funcId,
             /* [in] */ COR_PRF_FRAME_INFO frameInfo,
             /* [out] */ ClassID *pClassId,
@@ -9462,13 +11075,13 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ ULONG *pBufferLengthOffset,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classID,
             /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
             /* [in] */ ULONG cFieldOffset,
@@ -9476,7 +11089,7 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ ULONG *pulClassSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken,
@@ -9486,14 +11099,14 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ULONG32 cCodeInfos,
             /* [out] */ ULONG32 *pcCodeInfos,
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdTypeDef typeDef,
             /* [in] */ ULONG32 cTypeArgs,
@@ -9501,7 +11114,7 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ ClassID *pClassID);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdMethodDef funcDef,
             /* [in] */ ClassID classId,
@@ -9510,12 +11123,12 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ FunctionID *pFunctionID);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleID,
             /* [out] */ ICorProfilerObjectEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ObjectID objectId,
             /* [in] */ ULONG32 cDimensions,
             /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
@@ -9523,95 +11136,95 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ BYTE **ppData);
         
         HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ULONG32 *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ AppDomainID *pAppDomainId);
         
         HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ThreadID threadId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ContextID contextId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ULONG cObjectRanges,
             /* [out] */ ULONG *pcObjectRanges,
             /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
         
         HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ DWORD dwExpectedCompletionMilliseconds);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionIDMapper2 *pFunc,
             /* [in] */ void *clientData);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionEnter3 *pFuncEnter3,
             /* [in] */ FunctionLeave3 *pFuncLeave3,
             /* [in] */ FunctionTailcall3 *pFuncTailcall3);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
             /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
             /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
@@ -9619,24 +11232,24 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
             /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModules )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ ICorProfilerModuleEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ USHORT *pClrInstanceId,
             /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
             /* [out] */ USHORT *pMajorVersion,
@@ -9649,7 +11262,7 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
@@ -9657,14 +11270,14 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ ULONG32 cAppDomainIds,
             /* [out] */ ULONG32 *pcAppDomainIds,
             /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -9675,27 +11288,27 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [out] */ DWORD *pdwModuleFlags);
         
         HRESULT ( STDMETHODCALLTYPE *EnumThreads )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ ICorProfilerThreadEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( 
-            ICorProfilerInfo5 * This);
+            ICorProfilerInfo6 * This);
         
         HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *RequestRevert )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ],
             /* [size_is][out] */ HRESULT status[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cCodeInfos,
@@ -9703,20 +11316,20 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId,
             /* [out] */ ReJITID *pReJitId);
         
         HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG cReJitIds,
             /* [out] */ ULONG *pcReJitIds,
             /* [length_is][size_is][out] */ ReJITID reJitIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cMap,
@@ -9724,30 +11337,38 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ SIZE_T *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [out] */ DWORD *pdwEventsLow,
             /* [out] */ DWORD *pdwEventsHigh);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( 
-            ICorProfilerInfo5 * This,
+            ICorProfilerInfo6 * This,
             /* [in] */ DWORD dwEventsLow,
             /* [in] */ DWORD dwEventsHigh);
         
+        HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( 
+            ICorProfilerInfo6 * This,
+            /* [in] */ ModuleID inlinersModuleId,
+            /* [in] */ ModuleID inlineeModuleId,
+            /* [in] */ mdMethodDef inlineeMethodId,
+            /* [out] */ BOOL *incompleteData,
+            /* [out] */ ICorProfilerMethodEnum **ppEnum);
+        
         END_INTERFACE
-    } ICorProfilerInfo5Vtbl;
+    } ICorProfilerInfo6Vtbl;
 
-    interface ICorProfilerInfo5
+    interface ICorProfilerInfo6
     {
-        CONST_VTBL struct ICorProfilerInfo5Vtbl *lpVtbl;
+        CONST_VTBL struct ICorProfilerInfo6Vtbl *lpVtbl;
     };
 
     
@@ -9755,260 +11376,264 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
 #ifdef COBJMACROS
 
 
-#define ICorProfilerInfo5_QueryInterface(This,riid,ppvObject)  \
+#define ICorProfilerInfo6_QueryInterface(This,riid,ppvObject)  \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerInfo5_AddRef(This) \
+#define ICorProfilerInfo6_AddRef(This) \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerInfo5_Release(This)        \
+#define ICorProfilerInfo6_Release(This)        \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerInfo5_GetClassFromObject(This,objectId,pClassId)   \
+#define ICorProfilerInfo6_GetClassFromObject(This,objectId,pClassId)   \
     ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
 
-#define ICorProfilerInfo5_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+#define ICorProfilerInfo6_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
     ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
 
-#define ICorProfilerInfo5_GetCodeInfo(This,functionId,pStart,pcSize)   \
+#define ICorProfilerInfo6_GetCodeInfo(This,functionId,pStart,pcSize)   \
     ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
 
-#define ICorProfilerInfo5_GetEventMask(This,pdwEvents) \
+#define ICorProfilerInfo6_GetEventMask(This,pdwEvents) \
     ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
 
-#define ICorProfilerInfo5_GetFunctionFromIP(This,ip,pFunctionId)       \
+#define ICorProfilerInfo6_GetFunctionFromIP(This,ip,pFunctionId)       \
     ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
 
-#define ICorProfilerInfo5_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+#define ICorProfilerInfo6_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
     ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
 
-#define ICorProfilerInfo5_GetHandleFromThread(This,threadId,phThread)  \
+#define ICorProfilerInfo6_GetHandleFromThread(This,threadId,phThread)  \
     ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
 
-#define ICorProfilerInfo5_GetObjectSize(This,objectId,pcSize)  \
+#define ICorProfilerInfo6_GetObjectSize(This,objectId,pcSize)  \
     ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
 
-#define ICorProfilerInfo5_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+#define ICorProfilerInfo6_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
     ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
 
-#define ICorProfilerInfo5_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+#define ICorProfilerInfo6_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
     ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
 
-#define ICorProfilerInfo5_GetCurrentThreadID(This,pThreadId)   \
+#define ICorProfilerInfo6_GetCurrentThreadID(This,pThreadId)   \
     ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
 
-#define ICorProfilerInfo5_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+#define ICorProfilerInfo6_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
     ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
 
-#define ICorProfilerInfo5_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+#define ICorProfilerInfo6_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
     ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
 
-#define ICorProfilerInfo5_SetEventMask(This,dwEvents)  \
+#define ICorProfilerInfo6_SetEventMask(This,dwEvents)  \
     ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
 
-#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo5_SetFunctionIDMapper(This,pFunc)      \
+#define ICorProfilerInfo6_SetFunctionIDMapper(This,pFunc)      \
     ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
 
-#define ICorProfilerInfo5_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+#define ICorProfilerInfo6_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
     ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
 
-#define ICorProfilerInfo5_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+#define ICorProfilerInfo6_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
     ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
 
-#define ICorProfilerInfo5_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+#define ICorProfilerInfo6_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
     ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
 
-#define ICorProfilerInfo5_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+#define ICorProfilerInfo6_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
     ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
 
-#define ICorProfilerInfo5_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+#define ICorProfilerInfo6_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
     ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
 
-#define ICorProfilerInfo5_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+#define ICorProfilerInfo6_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
     ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
 
-#define ICorProfilerInfo5_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+#define ICorProfilerInfo6_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
     ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
 
-#define ICorProfilerInfo5_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+#define ICorProfilerInfo6_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
     ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
 
-#define ICorProfilerInfo5_SetFunctionReJIT(This,functionId)    \
+#define ICorProfilerInfo6_SetFunctionReJIT(This,functionId)    \
     ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
 
-#define ICorProfilerInfo5_ForceGC(This)        \
+#define ICorProfilerInfo6_ForceGC(This)        \
     ( (This)->lpVtbl -> ForceGC(This) ) 
 
-#define ICorProfilerInfo5_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+#define ICorProfilerInfo6_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
     ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
 
-#define ICorProfilerInfo5_GetInprocInspectionInterface(This,ppicd)     \
+#define ICorProfilerInfo6_GetInprocInspectionInterface(This,ppicd)     \
     ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
 
-#define ICorProfilerInfo5_GetInprocInspectionIThisThread(This,ppicd)   \
+#define ICorProfilerInfo6_GetInprocInspectionIThisThread(This,ppicd)   \
     ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
 
-#define ICorProfilerInfo5_GetThreadContext(This,threadId,pContextId)   \
+#define ICorProfilerInfo6_GetThreadContext(This,threadId,pContextId)   \
     ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
 
-#define ICorProfilerInfo5_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+#define ICorProfilerInfo6_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
     ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
 
-#define ICorProfilerInfo5_EndInprocDebugging(This,dwProfilerContext)   \
+#define ICorProfilerInfo6_EndInprocDebugging(This,dwProfilerContext)   \
     ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
 
-#define ICorProfilerInfo5_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+#define ICorProfilerInfo6_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
     ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
 
 
-#define ICorProfilerInfo5_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
+#define ICorProfilerInfo6_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
     ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
 
-#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
+#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo5_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
+#define ICorProfilerInfo6_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
     ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo5_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
+#define ICorProfilerInfo6_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
     ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo5_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
+#define ICorProfilerInfo6_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
     ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
 
-#define ICorProfilerInfo5_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
+#define ICorProfilerInfo6_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
     ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo5_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo6_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo5_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
+#define ICorProfilerInfo6_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
     ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
 
-#define ICorProfilerInfo5_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
+#define ICorProfilerInfo6_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
     ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
 
-#define ICorProfilerInfo5_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
+#define ICorProfilerInfo6_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
     ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
 
-#define ICorProfilerInfo5_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
+#define ICorProfilerInfo6_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
     ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
 
-#define ICorProfilerInfo5_GetBoxClassLayout(This,classId,pBufferOffset)        \
+#define ICorProfilerInfo6_GetBoxClassLayout(This,classId,pBufferOffset)        \
     ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
 
-#define ICorProfilerInfo5_GetThreadAppDomain(This,threadId,pAppDomainId)       \
+#define ICorProfilerInfo6_GetThreadAppDomain(This,threadId,pAppDomainId)       \
     ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
 
-#define ICorProfilerInfo5_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
+#define ICorProfilerInfo6_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
     ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
 
-#define ICorProfilerInfo5_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
+#define ICorProfilerInfo6_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
     ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
 
-#define ICorProfilerInfo5_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
+#define ICorProfilerInfo6_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
     ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo5_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
+#define ICorProfilerInfo6_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
     ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
 
-#define ICorProfilerInfo5_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
+#define ICorProfilerInfo6_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
     ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
 
-#define ICorProfilerInfo5_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
+#define ICorProfilerInfo6_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
     ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
 
-#define ICorProfilerInfo5_GetObjectGeneration(This,objectId,range)     \
+#define ICorProfilerInfo6_GetObjectGeneration(This,objectId,range)     \
     ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
 
-#define ICorProfilerInfo5_GetNotifiedExceptionClauseInfo(This,pinfo)   \
+#define ICorProfilerInfo6_GetNotifiedExceptionClauseInfo(This,pinfo)   \
     ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
 
 
-#define ICorProfilerInfo5_EnumJITedFunctions(This,ppEnum)      \
+#define ICorProfilerInfo6_EnumJITedFunctions(This,ppEnum)      \
     ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) 
 
-#define ICorProfilerInfo5_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
+#define ICorProfilerInfo6_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
     ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) 
 
-#define ICorProfilerInfo5_SetFunctionIDMapper2(This,pFunc,clientData)  \
+#define ICorProfilerInfo6_SetFunctionIDMapper2(This,pFunc,clientData)  \
     ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) 
 
-#define ICorProfilerInfo5_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
+#define ICorProfilerInfo6_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
     ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
+#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) 
 
-#define ICorProfilerInfo5_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
+#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) 
 
-#define ICorProfilerInfo5_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
+#define ICorProfilerInfo6_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
     ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) 
 
-#define ICorProfilerInfo5_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
+#define ICorProfilerInfo6_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
     ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) 
 
-#define ICorProfilerInfo5_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
+#define ICorProfilerInfo6_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
     ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) 
 
-#define ICorProfilerInfo5_EnumModules(This,ppEnum)     \
+#define ICorProfilerInfo6_EnumModules(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) 
 
-#define ICorProfilerInfo5_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
+#define ICorProfilerInfo6_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
     ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) 
 
-#define ICorProfilerInfo5_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
+#define ICorProfilerInfo6_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
     ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo5_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
+#define ICorProfilerInfo6_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
     ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) 
 
-#define ICorProfilerInfo5_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
+#define ICorProfilerInfo6_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
     ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) 
 
 
-#define ICorProfilerInfo5_EnumThreads(This,ppEnum)     \
+#define ICorProfilerInfo6_EnumThreads(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) 
 
-#define ICorProfilerInfo5_InitializeCurrentThread(This)        \
+#define ICorProfilerInfo6_InitializeCurrentThread(This)        \
     ( (This)->lpVtbl -> InitializeCurrentThread(This) ) 
 
-#define ICorProfilerInfo5_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
+#define ICorProfilerInfo6_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
     ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) 
 
-#define ICorProfilerInfo5_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
+#define ICorProfilerInfo6_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
     ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) 
 
-#define ICorProfilerInfo5_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo6_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo5_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
+#define ICorProfilerInfo6_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
     ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) 
 
-#define ICorProfilerInfo5_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
+#define ICorProfilerInfo6_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
     ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) 
 
-#define ICorProfilerInfo5_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
+#define ICorProfilerInfo6_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
     ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) 
 
-#define ICorProfilerInfo5_EnumJITedFunctions2(This,ppEnum)     \
+#define ICorProfilerInfo6_EnumJITedFunctions2(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) 
 
-#define ICorProfilerInfo5_GetObjectSize2(This,objectId,pcSize) \
+#define ICorProfilerInfo6_GetObjectSize2(This,objectId,pcSize) \
     ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) 
 
 
-#define ICorProfilerInfo5_GetEventMask2(This,pdwEventsLow,pdwEventsHigh)       \
+#define ICorProfilerInfo6_GetEventMask2(This,pdwEventsLow,pdwEventsHigh)       \
     ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) 
 
-#define ICorProfilerInfo5_SetEventMask2(This,dwEventsLow,dwEventsHigh) \
+#define ICorProfilerInfo6_SetEventMask2(This,dwEventsLow,dwEventsHigh) \
     ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) 
 
+
+#define ICorProfilerInfo6_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \
+    ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -10017,146 +11642,153 @@ EXTERN_C const IID IID_ICorProfilerInfo5;
 
 
 
-#endif         /* __ICorProfilerInfo5_INTERFACE_DEFINED__ */
+#endif         /* __ICorProfilerInfo6_INTERFACE_DEFINED__ */
 
 
-#ifndef __ICorProfilerInfo6_INTERFACE_DEFINED__
-#define __ICorProfilerInfo6_INTERFACE_DEFINED__
+#ifndef __ICorProfilerInfo7_INTERFACE_DEFINED__
+#define __ICorProfilerInfo7_INTERFACE_DEFINED__
 
-/* interface ICorProfilerInfo6 */
+/* interface ICorProfilerInfo7 */
 /* [local][unique][uuid][object] */ 
 
 
-EXTERN_C const IID IID_ICorProfilerInfo6;
+EXTERN_C const IID IID_ICorProfilerInfo7;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("F30A070D-BFFB-46A7-B1D8-8781EF7B698A")
-    ICorProfilerInfo6 : public ICorProfilerInfo5
+    MIDL_INTERFACE("9AEECC0D-63E0-4187-8C00-E312F503F663")
+    ICorProfilerInfo7 : public ICorProfilerInfo6
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE EnumNgenModuleMethodsInliningThisMethod( 
-            /* [in] */ ModuleID inlinersModuleId,
-            /* [in] */ ModuleID inlineeModuleId,
-            /* [in] */ mdMethodDef inlineeMethodId,
-            /* [out] */ BOOL *incompleteData,
-            /* [out] */ ICorProfilerMethodEnum **ppEnum) = 0;
+        virtual HRESULT STDMETHODCALLTYPE ApplyMetaData( 
+            /* [in] */ ModuleID moduleId) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE GetInMemorySymbolsLength( 
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ DWORD *pCountSymbolBytes) = 0;
+        
+        virtual HRESULT STDMETHODCALLTYPE ReadInMemorySymbols( 
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ DWORD symbolsReadOffset,
+            /* [out] */ BYTE *pSymbolBytes,
+            /* [in] */ DWORD countSymbolBytes,
+            /* [out] */ DWORD *pCountSymbolBytesRead) = 0;
         
     };
     
     
 #else  /* C style interface */
 
-    typedef struct ICorProfilerInfo6Vtbl
+    typedef struct ICorProfilerInfo7Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ REFIID riid,
             /* [annotation][iid_is][out] */ 
             _COM_Outptr_  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerInfo6 * This);
+            ICorProfilerInfo7 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerInfo6 * This);
+            ICorProfilerInfo7 * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdTypeDef typeDef,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ LPCBYTE *pStart,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ DWORD *pdwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdToken token,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ HANDLE *phThread);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [out] */ CorElementType *pBaseElemType,
             /* [out] */ ClassID *pBaseClassId,
             /* [out] */ ULONG *pcRank);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ DWORD *pdwWin32ThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ ThreadID *pThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ ClassID *pClassId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ DWORD dwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionEnter *pFuncEnter,
             /* [in] */ FunctionLeave *pFuncLeave,
             /* [in] */ FunctionTailcall *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionIDMapper *pFunc);
         
         HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppImport,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -10166,32 +11798,32 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ AssemblyID *pAssemblyId);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ DWORD dwOpenFlags,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppOut);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodId,
             /* [out] */ LPCBYTE *ppMethodHeader,
             /* [out] */ ULONG *pcbMethodSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ IMethodMalloc **ppMalloc);
         
         HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodid,
             /* [in] */ LPCBYTE pbNewILMethodHeader);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ AppDomainID appDomainId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -10200,7 +11832,7 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ ProcessID *pProcessId);
         
         HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ AssemblyID assemblyId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -10210,50 +11842,50 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ ModuleID *pModuleId);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId);
         
         HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
-            ICorProfilerInfo6 * This);
+            ICorProfilerInfo7 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ BOOL fStartJit,
             /* [in] */ ULONG cILMapEntries,
             /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ ContextID *pContextId);
         
         HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ BOOL fThisThreadOnly,
             /* [out] */ DWORD *pdwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ DWORD dwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG32 cMap,
             /* [out] */ ULONG32 *pcMap,
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ThreadID thread,
             /* [in] */ StackSnapshotCallback *callback,
             /* [in] */ ULONG32 infoFlags,
@@ -10262,13 +11894,13 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [in] */ ULONG32 contextSize);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionEnter2 *pFuncEnter,
             /* [in] */ FunctionLeave2 *pFuncLeave,
             /* [in] */ FunctionTailcall2 *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID funcId,
             /* [in] */ COR_PRF_FRAME_INFO frameInfo,
             /* [out] */ ClassID *pClassId,
@@ -10279,13 +11911,13 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ ULONG *pBufferLengthOffset,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classID,
             /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
             /* [in] */ ULONG cFieldOffset,
@@ -10293,7 +11925,7 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ ULONG *pulClassSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken,
@@ -10303,14 +11935,14 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ULONG32 cCodeInfos,
             /* [out] */ ULONG32 *pcCodeInfos,
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdTypeDef typeDef,
             /* [in] */ ULONG32 cTypeArgs,
@@ -10318,7 +11950,7 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ ClassID *pClassID);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdMethodDef funcDef,
             /* [in] */ ClassID classId,
@@ -10327,12 +11959,12 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ FunctionID *pFunctionID);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleID,
             /* [out] */ ICorProfilerObjectEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ObjectID objectId,
             /* [in] */ ULONG32 cDimensions,
             /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
@@ -10340,95 +11972,95 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ BYTE **ppData);
         
         HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ULONG32 *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ AppDomainID *pAppDomainId);
         
         HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ThreadID threadId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ContextID contextId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ULONG cObjectRanges,
             /* [out] */ ULONG *pcObjectRanges,
             /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
         
         HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ DWORD dwExpectedCompletionMilliseconds);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionIDMapper2 *pFunc,
             /* [in] */ void *clientData);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionEnter3 *pFuncEnter3,
             /* [in] */ FunctionLeave3 *pFuncLeave3,
             /* [in] */ FunctionTailcall3 *pFuncTailcall3);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
             /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
             /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
@@ -10436,24 +12068,24 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
             /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModules )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ ICorProfilerModuleEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ USHORT *pClrInstanceId,
             /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
             /* [out] */ USHORT *pMajorVersion,
@@ -10466,7 +12098,7 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
@@ -10474,14 +12106,14 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ ULONG32 cAppDomainIds,
             /* [out] */ ULONG32 *pcAppDomainIds,
             /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -10492,27 +12124,27 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [out] */ DWORD *pdwModuleFlags);
         
         HRESULT ( STDMETHODCALLTYPE *EnumThreads )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ ICorProfilerThreadEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( 
-            ICorProfilerInfo6 * This);
+            ICorProfilerInfo7 * This);
         
         HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *RequestRevert )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ],
             /* [size_is][out] */ HRESULT status[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cCodeInfos,
@@ -10520,20 +12152,20 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId,
             /* [out] */ ReJITID *pReJitId);
         
         HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG cReJitIds,
             /* [out] */ ULONG *pcReJitIds,
             /* [length_is][size_is][out] */ ReJITID reJitIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cMap,
@@ -10541,38 +12173,55 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ SIZE_T *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [out] */ DWORD *pdwEventsLow,
             /* [out] */ DWORD *pdwEventsHigh);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ DWORD dwEventsLow,
             /* [in] */ DWORD dwEventsHigh);
         
         HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( 
-            ICorProfilerInfo6 * This,
+            ICorProfilerInfo7 * This,
             /* [in] */ ModuleID inlinersModuleId,
             /* [in] */ ModuleID inlineeModuleId,
             /* [in] */ mdMethodDef inlineeMethodId,
             /* [out] */ BOOL *incompleteData,
             /* [out] */ ICorProfilerMethodEnum **ppEnum);
         
+        HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( 
+            ICorProfilerInfo7 * This,
+            /* [in] */ ModuleID moduleId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( 
+            ICorProfilerInfo7 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [out] */ DWORD *pCountSymbolBytes);
+        
+        HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( 
+            ICorProfilerInfo7 * This,
+            /* [in] */ ModuleID moduleId,
+            /* [in] */ DWORD symbolsReadOffset,
+            /* [out] */ BYTE *pSymbolBytes,
+            /* [in] */ DWORD countSymbolBytes,
+            /* [out] */ DWORD *pCountSymbolBytesRead);
+        
         END_INTERFACE
-    } ICorProfilerInfo6Vtbl;
+    } ICorProfilerInfo7Vtbl;
 
-    interface ICorProfilerInfo6
+    interface ICorProfilerInfo7
     {
-        CONST_VTBL struct ICorProfilerInfo6Vtbl *lpVtbl;
+        CONST_VTBL struct ICorProfilerInfo7Vtbl *lpVtbl;
     };
 
     
@@ -10580,264 +12229,274 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
 #ifdef COBJMACROS
 
 
-#define ICorProfilerInfo6_QueryInterface(This,riid,ppvObject)  \
+#define ICorProfilerInfo7_QueryInterface(This,riid,ppvObject)  \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerInfo6_AddRef(This) \
+#define ICorProfilerInfo7_AddRef(This) \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerInfo6_Release(This)        \
+#define ICorProfilerInfo7_Release(This)        \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerInfo6_GetClassFromObject(This,objectId,pClassId)   \
+#define ICorProfilerInfo7_GetClassFromObject(This,objectId,pClassId)   \
     ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
 
-#define ICorProfilerInfo6_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+#define ICorProfilerInfo7_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
     ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
 
-#define ICorProfilerInfo6_GetCodeInfo(This,functionId,pStart,pcSize)   \
+#define ICorProfilerInfo7_GetCodeInfo(This,functionId,pStart,pcSize)   \
     ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
 
-#define ICorProfilerInfo6_GetEventMask(This,pdwEvents) \
+#define ICorProfilerInfo7_GetEventMask(This,pdwEvents) \
     ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
 
-#define ICorProfilerInfo6_GetFunctionFromIP(This,ip,pFunctionId)       \
+#define ICorProfilerInfo7_GetFunctionFromIP(This,ip,pFunctionId)       \
     ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
 
-#define ICorProfilerInfo6_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+#define ICorProfilerInfo7_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
     ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
 
-#define ICorProfilerInfo6_GetHandleFromThread(This,threadId,phThread)  \
+#define ICorProfilerInfo7_GetHandleFromThread(This,threadId,phThread)  \
     ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
 
-#define ICorProfilerInfo6_GetObjectSize(This,objectId,pcSize)  \
+#define ICorProfilerInfo7_GetObjectSize(This,objectId,pcSize)  \
     ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
 
-#define ICorProfilerInfo6_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+#define ICorProfilerInfo7_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
     ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
 
-#define ICorProfilerInfo6_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+#define ICorProfilerInfo7_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
     ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
 
-#define ICorProfilerInfo6_GetCurrentThreadID(This,pThreadId)   \
+#define ICorProfilerInfo7_GetCurrentThreadID(This,pThreadId)   \
     ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
 
-#define ICorProfilerInfo6_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+#define ICorProfilerInfo7_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
     ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
 
-#define ICorProfilerInfo6_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+#define ICorProfilerInfo7_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
     ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
 
-#define ICorProfilerInfo6_SetEventMask(This,dwEvents)  \
+#define ICorProfilerInfo7_SetEventMask(This,dwEvents)  \
     ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
 
-#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo6_SetFunctionIDMapper(This,pFunc)      \
+#define ICorProfilerInfo7_SetFunctionIDMapper(This,pFunc)      \
     ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
 
-#define ICorProfilerInfo6_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+#define ICorProfilerInfo7_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
     ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
 
-#define ICorProfilerInfo6_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+#define ICorProfilerInfo7_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
     ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
 
-#define ICorProfilerInfo6_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+#define ICorProfilerInfo7_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
     ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
 
-#define ICorProfilerInfo6_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+#define ICorProfilerInfo7_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
     ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
 
-#define ICorProfilerInfo6_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+#define ICorProfilerInfo7_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
     ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
 
-#define ICorProfilerInfo6_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+#define ICorProfilerInfo7_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
     ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
 
-#define ICorProfilerInfo6_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+#define ICorProfilerInfo7_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
     ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
 
-#define ICorProfilerInfo6_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+#define ICorProfilerInfo7_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
     ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
 
-#define ICorProfilerInfo6_SetFunctionReJIT(This,functionId)    \
+#define ICorProfilerInfo7_SetFunctionReJIT(This,functionId)    \
     ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
 
-#define ICorProfilerInfo6_ForceGC(This)        \
+#define ICorProfilerInfo7_ForceGC(This)        \
     ( (This)->lpVtbl -> ForceGC(This) ) 
 
-#define ICorProfilerInfo6_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+#define ICorProfilerInfo7_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
     ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
 
-#define ICorProfilerInfo6_GetInprocInspectionInterface(This,ppicd)     \
+#define ICorProfilerInfo7_GetInprocInspectionInterface(This,ppicd)     \
     ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
 
-#define ICorProfilerInfo6_GetInprocInspectionIThisThread(This,ppicd)   \
+#define ICorProfilerInfo7_GetInprocInspectionIThisThread(This,ppicd)   \
     ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
 
-#define ICorProfilerInfo6_GetThreadContext(This,threadId,pContextId)   \
+#define ICorProfilerInfo7_GetThreadContext(This,threadId,pContextId)   \
     ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
 
-#define ICorProfilerInfo6_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+#define ICorProfilerInfo7_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
     ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
 
-#define ICorProfilerInfo6_EndInprocDebugging(This,dwProfilerContext)   \
+#define ICorProfilerInfo7_EndInprocDebugging(This,dwProfilerContext)   \
     ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
 
-#define ICorProfilerInfo6_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+#define ICorProfilerInfo7_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
     ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
 
 
-#define ICorProfilerInfo6_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
+#define ICorProfilerInfo7_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
     ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
 
-#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
+#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo6_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
+#define ICorProfilerInfo7_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
     ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo6_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
+#define ICorProfilerInfo7_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
     ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo6_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
+#define ICorProfilerInfo7_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
     ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
 
-#define ICorProfilerInfo6_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
+#define ICorProfilerInfo7_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
     ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo6_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo7_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo6_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
+#define ICorProfilerInfo7_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
     ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
 
-#define ICorProfilerInfo6_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
+#define ICorProfilerInfo7_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
     ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
 
-#define ICorProfilerInfo6_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
+#define ICorProfilerInfo7_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
     ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
 
-#define ICorProfilerInfo6_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
+#define ICorProfilerInfo7_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
     ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
 
-#define ICorProfilerInfo6_GetBoxClassLayout(This,classId,pBufferOffset)        \
+#define ICorProfilerInfo7_GetBoxClassLayout(This,classId,pBufferOffset)        \
     ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
 
-#define ICorProfilerInfo6_GetThreadAppDomain(This,threadId,pAppDomainId)       \
+#define ICorProfilerInfo7_GetThreadAppDomain(This,threadId,pAppDomainId)       \
     ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
 
-#define ICorProfilerInfo6_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
+#define ICorProfilerInfo7_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
     ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
 
-#define ICorProfilerInfo6_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
+#define ICorProfilerInfo7_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
     ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
 
-#define ICorProfilerInfo6_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
+#define ICorProfilerInfo7_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
     ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo6_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
+#define ICorProfilerInfo7_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
     ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
 
-#define ICorProfilerInfo6_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
+#define ICorProfilerInfo7_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
     ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
 
-#define ICorProfilerInfo6_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
+#define ICorProfilerInfo7_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
     ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
 
-#define ICorProfilerInfo6_GetObjectGeneration(This,objectId,range)     \
+#define ICorProfilerInfo7_GetObjectGeneration(This,objectId,range)     \
     ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
 
-#define ICorProfilerInfo6_GetNotifiedExceptionClauseInfo(This,pinfo)   \
+#define ICorProfilerInfo7_GetNotifiedExceptionClauseInfo(This,pinfo)   \
     ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
 
 
-#define ICorProfilerInfo6_EnumJITedFunctions(This,ppEnum)      \
+#define ICorProfilerInfo7_EnumJITedFunctions(This,ppEnum)      \
     ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) 
 
-#define ICorProfilerInfo6_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
+#define ICorProfilerInfo7_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
     ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) 
 
-#define ICorProfilerInfo6_SetFunctionIDMapper2(This,pFunc,clientData)  \
+#define ICorProfilerInfo7_SetFunctionIDMapper2(This,pFunc,clientData)  \
     ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) 
 
-#define ICorProfilerInfo6_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
+#define ICorProfilerInfo7_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
     ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
+#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) 
 
-#define ICorProfilerInfo6_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
+#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) 
 
-#define ICorProfilerInfo6_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
+#define ICorProfilerInfo7_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
     ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) 
 
-#define ICorProfilerInfo6_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
+#define ICorProfilerInfo7_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
     ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) 
 
-#define ICorProfilerInfo6_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
+#define ICorProfilerInfo7_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
     ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) 
 
-#define ICorProfilerInfo6_EnumModules(This,ppEnum)     \
+#define ICorProfilerInfo7_EnumModules(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) 
 
-#define ICorProfilerInfo6_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
+#define ICorProfilerInfo7_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
     ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) 
 
-#define ICorProfilerInfo6_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
+#define ICorProfilerInfo7_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
     ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo6_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
+#define ICorProfilerInfo7_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
     ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) 
 
-#define ICorProfilerInfo6_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
+#define ICorProfilerInfo7_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
     ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) 
 
 
-#define ICorProfilerInfo6_EnumThreads(This,ppEnum)     \
+#define ICorProfilerInfo7_EnumThreads(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) 
 
-#define ICorProfilerInfo6_InitializeCurrentThread(This)        \
+#define ICorProfilerInfo7_InitializeCurrentThread(This)        \
     ( (This)->lpVtbl -> InitializeCurrentThread(This) ) 
 
-#define ICorProfilerInfo6_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
+#define ICorProfilerInfo7_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
     ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) 
 
-#define ICorProfilerInfo6_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
+#define ICorProfilerInfo7_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
     ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) 
 
-#define ICorProfilerInfo6_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo7_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo6_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
+#define ICorProfilerInfo7_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
     ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) 
 
-#define ICorProfilerInfo6_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
+#define ICorProfilerInfo7_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
     ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) 
 
-#define ICorProfilerInfo6_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
+#define ICorProfilerInfo7_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
     ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) 
 
-#define ICorProfilerInfo6_EnumJITedFunctions2(This,ppEnum)     \
+#define ICorProfilerInfo7_EnumJITedFunctions2(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) 
 
-#define ICorProfilerInfo6_GetObjectSize2(This,objectId,pcSize) \
+#define ICorProfilerInfo7_GetObjectSize2(This,objectId,pcSize) \
     ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) 
 
 
-#define ICorProfilerInfo6_GetEventMask2(This,pdwEventsLow,pdwEventsHigh)       \
+#define ICorProfilerInfo7_GetEventMask2(This,pdwEventsLow,pdwEventsHigh)       \
     ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) 
 
-#define ICorProfilerInfo6_SetEventMask2(This,dwEventsLow,dwEventsHigh) \
+#define ICorProfilerInfo7_SetEventMask2(This,dwEventsLow,dwEventsHigh) \
     ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) 
 
 
-#define ICorProfilerInfo6_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \
+#define ICorProfilerInfo7_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \
     ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) 
 
+
+#define ICorProfilerInfo7_ApplyMetaData(This,moduleId) \
+    ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) 
+
+#define ICorProfilerInfo7_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes)    \
+    ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) 
+
+#define ICorProfilerInfo7_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead)     \
+    ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -10846,153 +12505,157 @@ EXTERN_C const IID IID_ICorProfilerInfo6;
 
 
 
-#endif         /* __ICorProfilerInfo6_INTERFACE_DEFINED__ */
+#endif         /* __ICorProfilerInfo7_INTERFACE_DEFINED__ */
 
 
-#ifndef __ICorProfilerInfo7_INTERFACE_DEFINED__
-#define __ICorProfilerInfo7_INTERFACE_DEFINED__
+#ifndef __ICorProfilerInfo8_INTERFACE_DEFINED__
+#define __ICorProfilerInfo8_INTERFACE_DEFINED__
 
-/* interface ICorProfilerInfo7 */
+/* interface ICorProfilerInfo8 */
 /* [local][unique][uuid][object] */ 
 
 
-EXTERN_C const IID IID_ICorProfilerInfo7;
+EXTERN_C const IID IID_ICorProfilerInfo8;
 
 #if defined(__cplusplus) && !defined(CINTERFACE)
     
-    MIDL_INTERFACE("9AEECC0D-63E0-4187-8C00-E312F503F663")
-    ICorProfilerInfo7 : public ICorProfilerInfo6
+    MIDL_INTERFACE("C5AC80A6-782E-4716-8044-39598C60CFBF")
+    ICorProfilerInfo8 : public ICorProfilerInfo7
     {
     public:
-        virtual HRESULT STDMETHODCALLTYPE ApplyMetaData( 
-            /* [in] */ ModuleID moduleId) = 0;
+        virtual HRESULT STDMETHODCALLTYPE IsFunctionDynamic( 
+            /* [in] */ FunctionID functionId,
+            /* [out] */ BOOL *isDynamic) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE GetInMemorySymbolsLength( 
-            /* [in] */ ModuleID moduleId,
-            /* [out] */ DWORD *pCountSymbolBytes) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetFunctionFromIP3( 
+            /* [in] */ LPCBYTE ip,
+            /* [out] */ FunctionID *functionId,
+            /* [out] */ ReJITID *pReJitId) = 0;
         
-        virtual HRESULT STDMETHODCALLTYPE ReadInMemorySymbols( 
-            /* [in] */ ModuleID moduleId,
-            /* [in] */ DWORD symbolsReadOffset,
-            /* [out] */ BYTE *pSymbolBytes,
-            /* [in] */ DWORD countSymbolBytes,
-            /* [out] */ DWORD *pCountSymbolBytesRead) = 0;
+        virtual HRESULT STDMETHODCALLTYPE GetDynamicFunctionInfo( 
+            /* [in] */ FunctionID functionId,
+            /* [out] */ ModuleID *moduleId,
+            /* [out] */ PCCOR_SIGNATURE *ppvSig,
+            /* [out] */ ULONG *pbSig,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [out] */ WCHAR wszName[  ]) = 0;
         
     };
     
     
 #else  /* C style interface */
 
-    typedef struct ICorProfilerInfo7Vtbl
+    typedef struct ICorProfilerInfo8Vtbl
     {
         BEGIN_INTERFACE
         
         HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ REFIID riid,
             /* [annotation][iid_is][out] */ 
             _COM_Outptr_  void **ppvObject);
         
         ULONG ( STDMETHODCALLTYPE *AddRef )( 
-            ICorProfilerInfo7 * This);
+            ICorProfilerInfo8 * This);
         
         ULONG ( STDMETHODCALLTYPE *Release )( 
-            ICorProfilerInfo7 * This);
+            ICorProfilerInfo8 * This);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromObject )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromToken )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdTypeDef typeDef,
             /* [out] */ ClassID *pClassId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ LPCBYTE *pStart,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ DWORD *pdwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromToken )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdToken token,
             /* [out] */ FunctionID *pFunctionId);
         
         HRESULT ( STDMETHODCALLTYPE *GetHandleFromThread )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ HANDLE *phThread);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ ULONG *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *IsArrayClass )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [out] */ CorElementType *pBaseElemType,
             /* [out] */ ClassID *pBaseClassId,
             /* [out] */ ULONG *pcRank);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ DWORD *pdwWin32ThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ ThreadID *pThreadId);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [out] */ ClassID *pClassId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ DWORD dwEvents);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionEnter *pFuncEnter,
             /* [in] */ FunctionLeave *pFuncLeave,
             /* [in] */ FunctionTailcall *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionIDMapper *pFunc);
         
         HRESULT ( STDMETHODCALLTYPE *GetTokenAndMetaDataFromFunction )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppImport,
             /* [out] */ mdToken *pToken);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -11002,32 +12665,32 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ AssemblyID *pAssemblyId);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleMetaData )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ DWORD dwOpenFlags,
             /* [in] */ REFIID riid,
             /* [out] */ IUnknown **ppOut);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBody )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodId,
             /* [out] */ LPCBYTE *ppMethodHeader,
             /* [out] */ ULONG *pcbMethodSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetILFunctionBodyAllocator )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ IMethodMalloc **ppMalloc);
         
         HRESULT ( STDMETHODCALLTYPE *SetILFunctionBody )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ mdMethodDef methodid,
             /* [in] */ LPCBYTE pbNewILMethodHeader);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ AppDomainID appDomainId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -11036,7 +12699,7 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ ProcessID *pProcessId);
         
         HRESULT ( STDMETHODCALLTYPE *GetAssemblyInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ AssemblyID assemblyId,
             /* [in] */ ULONG cchName,
             /* [out] */ ULONG *pcchName,
@@ -11046,50 +12709,50 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ ModuleID *pModuleId);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionReJIT )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId);
         
         HRESULT ( STDMETHODCALLTYPE *ForceGC )( 
-            ICorProfilerInfo7 * This);
+            ICorProfilerInfo8 * This);
         
         HRESULT ( STDMETHODCALLTYPE *SetILInstrumentedCodeMap )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ BOOL fStartJit,
             /* [in] */ ULONG cILMapEntries,
             /* [size_is][in] */ COR_IL_MAP rgILMapEntries[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionInterface )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetInprocInspectionIThisThread )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ IUnknown **ppicd);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadContext )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ ContextID *pContextId);
         
         HRESULT ( STDMETHODCALLTYPE *BeginInprocDebugging )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ BOOL fThisThreadOnly,
             /* [out] */ DWORD *pdwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *EndInprocDebugging )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ DWORD dwProfilerContext);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG32 cMap,
             /* [out] */ ULONG32 *pcMap,
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *DoStackSnapshot )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ThreadID thread,
             /* [in] */ StackSnapshotCallback *callback,
             /* [in] */ ULONG32 infoFlags,
@@ -11098,13 +12761,13 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [in] */ ULONG32 contextSize);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionEnter2 *pFuncEnter,
             /* [in] */ FunctionLeave2 *pFuncLeave,
             /* [in] */ FunctionTailcall2 *pFuncTailcall);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionInfo2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID funcId,
             /* [in] */ COR_PRF_FRAME_INFO frameInfo,
             /* [out] */ ClassID *pClassId,
@@ -11115,13 +12778,13 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ ULONG *pBufferLengthOffset,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassLayout )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classID,
             /* [out][in] */ COR_FIELD_OFFSET rFieldOffset[  ],
             /* [in] */ ULONG cFieldOffset,
@@ -11129,7 +12792,7 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ ULONG *pulClassSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassIDInfo2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ModuleID *pModuleId,
             /* [out] */ mdTypeDef *pTypeDefToken,
@@ -11139,14 +12802,14 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ ClassID typeArgs[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ULONG32 cCodeInfos,
             /* [out] */ ULONG32 *pcCodeInfos,
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetClassFromTokenAndTypeArgs )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdTypeDef typeDef,
             /* [in] */ ULONG32 cTypeArgs,
@@ -11154,7 +12817,7 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ ClassID *pClassID);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromTokenAndTypeArgs )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleID,
             /* [in] */ mdMethodDef funcDef,
             /* [in] */ ClassID classId,
@@ -11163,12 +12826,12 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ FunctionID *pFunctionID);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModuleFrozenObjects )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleID,
             /* [out] */ ICorProfilerObjectEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetArrayObjectInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ObjectID objectId,
             /* [in] */ ULONG32 cDimensions,
             /* [size_is][out] */ ULONG32 pDimensionSizes[  ],
@@ -11176,95 +12839,95 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ BYTE **ppData);
         
         HRESULT ( STDMETHODCALLTYPE *GetBoxClassLayout )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [out] */ ULONG32 *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadAppDomain )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ThreadID threadId,
             /* [out] */ AppDomainID *pAppDomainId);
         
         HRESULT ( STDMETHODCALLTYPE *GetRVAStaticAddress )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainStaticAddress )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ThreadID threadId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetContextStaticAddress )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ ContextID contextId,
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetStaticFieldInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [out] */ COR_PRF_STATIC_TYPE *pFieldInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetGenerationBounds )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ULONG cObjectRanges,
             /* [out] */ ULONG *pcObjectRanges,
             /* [length_is][size_is][out] */ COR_PRF_GC_GENERATION_RANGE ranges[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectGeneration )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ COR_PRF_GC_GENERATION_RANGE *range);
         
         HRESULT ( STDMETHODCALLTYPE *GetNotifiedExceptionClauseInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ COR_PRF_EX_CLAUSE_INFO *pinfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *RequestProfilerDetach )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ DWORD dwExpectedCompletionMilliseconds);
         
         HRESULT ( STDMETHODCALLTYPE *SetFunctionIDMapper2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionIDMapper2 *pFunc,
             /* [in] */ void *clientData);
         
         HRESULT ( STDMETHODCALLTYPE *GetStringLayout2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ ULONG *pStringLengthOffset,
             /* [out] */ ULONG *pBufferOffset);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionEnter3 *pFuncEnter3,
             /* [in] */ FunctionLeave3 *pFuncLeave3,
             /* [in] */ FunctionTailcall3 *pFuncTailcall3);
         
         HRESULT ( STDMETHODCALLTYPE *SetEnterLeaveFunctionHooks3WithInfo )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionEnter3WithInfo *pFuncEnter3WithInfo,
             /* [in] */ FunctionLeave3WithInfo *pFuncLeave3WithInfo,
             /* [in] */ FunctionTailcall3WithInfo *pFuncTailcall3WithInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionEnter3Info )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
@@ -11272,24 +12935,24 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [size_is][out] */ COR_PRF_FUNCTION_ARGUMENT_INFO *pArgumentInfo);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionLeave3Info )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo,
             /* [out] */ COR_PRF_FUNCTION_ARGUMENT_RANGE *pRetvalRange);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionTailcall3Info )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ COR_PRF_ELT_INFO eltInfo,
             /* [out] */ COR_PRF_FRAME_INFO *pFrameInfo);
         
         HRESULT ( STDMETHODCALLTYPE *EnumModules )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ ICorProfilerModuleEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetRuntimeInformation )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ USHORT *pClrInstanceId,
             /* [out] */ COR_PRF_RUNTIME_TYPE *pRuntimeType,
             /* [out] */ USHORT *pMajorVersion,
@@ -11302,7 +12965,7 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             _Out_writes_to_(cchVersionString, *pcchVersionString)  WCHAR szVersionString[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetThreadStaticAddress2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ClassID classId,
             /* [in] */ mdFieldDef fieldToken,
             /* [in] */ AppDomainID appDomainId,
@@ -11310,14 +12973,14 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ void **ppAddress);
         
         HRESULT ( STDMETHODCALLTYPE *GetAppDomainsContainingModule )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ ULONG32 cAppDomainIds,
             /* [out] */ ULONG32 *pcAppDomainIds,
             /* [length_is][size_is][out] */ AppDomainID appDomainIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetModuleInfo2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ LPCBYTE *ppBaseLoadAddress,
             /* [in] */ ULONG cchName,
@@ -11328,27 +12991,27 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ DWORD *pdwModuleFlags);
         
         HRESULT ( STDMETHODCALLTYPE *EnumThreads )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ ICorProfilerThreadEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *InitializeCurrentThread )( 
-            ICorProfilerInfo7 * This);
+            ICorProfilerInfo8 * This);
         
         HRESULT ( STDMETHODCALLTYPE *RequestReJIT )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *RequestRevert )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ULONG cFunctions,
             /* [size_is][in] */ ModuleID moduleIds[  ],
             /* [size_is][in] */ mdMethodDef methodIds[  ],
             /* [size_is][out] */ HRESULT status[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetCodeInfo3 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionID,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cCodeInfos,
@@ -11356,20 +13019,20 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [length_is][size_is][out] */ COR_PRF_CODE_INFO codeInfos[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ LPCBYTE ip,
             /* [out] */ FunctionID *pFunctionId,
             /* [out] */ ReJITID *pReJitId);
         
         HRESULT ( STDMETHODCALLTYPE *GetReJITIDs )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ULONG cReJitIds,
             /* [out] */ ULONG *pcReJitIds,
             /* [length_is][size_is][out] */ ReJITID reJitIds[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *GetILToNativeMapping2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ FunctionID functionId,
             /* [in] */ ReJITID reJitId,
             /* [in] */ ULONG32 cMap,
@@ -11377,26 +13040,26 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [length_is][size_is][out] */ COR_DEBUG_IL_TO_NATIVE_MAP map[  ]);
         
         HRESULT ( STDMETHODCALLTYPE *EnumJITedFunctions2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ ICorProfilerFunctionEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *GetObjectSize2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ObjectID objectId,
             /* [out] */ SIZE_T *pcSize);
         
         HRESULT ( STDMETHODCALLTYPE *GetEventMask2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [out] */ DWORD *pdwEventsLow,
             /* [out] */ DWORD *pdwEventsHigh);
         
         HRESULT ( STDMETHODCALLTYPE *SetEventMask2 )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ DWORD dwEventsLow,
             /* [in] */ DWORD dwEventsHigh);
         
         HRESULT ( STDMETHODCALLTYPE *EnumNgenModuleMethodsInliningThisMethod )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID inlinersModuleId,
             /* [in] */ ModuleID inlineeModuleId,
             /* [in] */ mdMethodDef inlineeMethodId,
@@ -11404,28 +13067,49 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
             /* [out] */ ICorProfilerMethodEnum **ppEnum);
         
         HRESULT ( STDMETHODCALLTYPE *ApplyMetaData )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId);
         
         HRESULT ( STDMETHODCALLTYPE *GetInMemorySymbolsLength )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [out] */ DWORD *pCountSymbolBytes);
         
         HRESULT ( STDMETHODCALLTYPE *ReadInMemorySymbols )( 
-            ICorProfilerInfo7 * This,
+            ICorProfilerInfo8 * This,
             /* [in] */ ModuleID moduleId,
             /* [in] */ DWORD symbolsReadOffset,
             /* [out] */ BYTE *pSymbolBytes,
             /* [in] */ DWORD countSymbolBytes,
             /* [out] */ DWORD *pCountSymbolBytesRead);
         
+        HRESULT ( STDMETHODCALLTYPE *IsFunctionDynamic )( 
+            ICorProfilerInfo8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [out] */ BOOL *isDynamic);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetFunctionFromIP3 )( 
+            ICorProfilerInfo8 * This,
+            /* [in] */ LPCBYTE ip,
+            /* [out] */ FunctionID *functionId,
+            /* [out] */ ReJITID *pReJitId);
+        
+        HRESULT ( STDMETHODCALLTYPE *GetDynamicFunctionInfo )( 
+            ICorProfilerInfo8 * This,
+            /* [in] */ FunctionID functionId,
+            /* [out] */ ModuleID *moduleId,
+            /* [out] */ PCCOR_SIGNATURE *ppvSig,
+            /* [out] */ ULONG *pbSig,
+            /* [in] */ ULONG cchName,
+            /* [out] */ ULONG *pcchName,
+            /* [out] */ WCHAR wszName[  ]);
+        
         END_INTERFACE
-    } ICorProfilerInfo7Vtbl;
+    } ICorProfilerInfo8Vtbl;
 
-    interface ICorProfilerInfo7
+    interface ICorProfilerInfo8
     {
-        CONST_VTBL struct ICorProfilerInfo7Vtbl *lpVtbl;
+        CONST_VTBL struct ICorProfilerInfo8Vtbl *lpVtbl;
     };
 
     
@@ -11433,274 +13117,284 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
 #ifdef COBJMACROS
 
 
-#define ICorProfilerInfo7_QueryInterface(This,riid,ppvObject)  \
+#define ICorProfilerInfo8_QueryInterface(This,riid,ppvObject)  \
     ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) ) 
 
-#define ICorProfilerInfo7_AddRef(This) \
+#define ICorProfilerInfo8_AddRef(This) \
     ( (This)->lpVtbl -> AddRef(This) ) 
 
-#define ICorProfilerInfo7_Release(This)        \
+#define ICorProfilerInfo8_Release(This)        \
     ( (This)->lpVtbl -> Release(This) ) 
 
 
-#define ICorProfilerInfo7_GetClassFromObject(This,objectId,pClassId)   \
+#define ICorProfilerInfo8_GetClassFromObject(This,objectId,pClassId)   \
     ( (This)->lpVtbl -> GetClassFromObject(This,objectId,pClassId) ) 
 
-#define ICorProfilerInfo7_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
+#define ICorProfilerInfo8_GetClassFromToken(This,moduleId,typeDef,pClassId)    \
     ( (This)->lpVtbl -> GetClassFromToken(This,moduleId,typeDef,pClassId) ) 
 
-#define ICorProfilerInfo7_GetCodeInfo(This,functionId,pStart,pcSize)   \
+#define ICorProfilerInfo8_GetCodeInfo(This,functionId,pStart,pcSize)   \
     ( (This)->lpVtbl -> GetCodeInfo(This,functionId,pStart,pcSize) ) 
 
-#define ICorProfilerInfo7_GetEventMask(This,pdwEvents) \
+#define ICorProfilerInfo8_GetEventMask(This,pdwEvents) \
     ( (This)->lpVtbl -> GetEventMask(This,pdwEvents) ) 
 
-#define ICorProfilerInfo7_GetFunctionFromIP(This,ip,pFunctionId)       \
+#define ICorProfilerInfo8_GetFunctionFromIP(This,ip,pFunctionId)       \
     ( (This)->lpVtbl -> GetFunctionFromIP(This,ip,pFunctionId) ) 
 
-#define ICorProfilerInfo7_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
+#define ICorProfilerInfo8_GetFunctionFromToken(This,moduleId,token,pFunctionId)        \
     ( (This)->lpVtbl -> GetFunctionFromToken(This,moduleId,token,pFunctionId) ) 
 
-#define ICorProfilerInfo7_GetHandleFromThread(This,threadId,phThread)  \
+#define ICorProfilerInfo8_GetHandleFromThread(This,threadId,phThread)  \
     ( (This)->lpVtbl -> GetHandleFromThread(This,threadId,phThread) ) 
 
-#define ICorProfilerInfo7_GetObjectSize(This,objectId,pcSize)  \
+#define ICorProfilerInfo8_GetObjectSize(This,objectId,pcSize)  \
     ( (This)->lpVtbl -> GetObjectSize(This,objectId,pcSize) ) 
 
-#define ICorProfilerInfo7_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
+#define ICorProfilerInfo8_IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) \
     ( (This)->lpVtbl -> IsArrayClass(This,classId,pBaseElemType,pBaseClassId,pcRank) ) 
 
-#define ICorProfilerInfo7_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
+#define ICorProfilerInfo8_GetThreadInfo(This,threadId,pdwWin32ThreadId)        \
     ( (This)->lpVtbl -> GetThreadInfo(This,threadId,pdwWin32ThreadId) ) 
 
-#define ICorProfilerInfo7_GetCurrentThreadID(This,pThreadId)   \
+#define ICorProfilerInfo8_GetCurrentThreadID(This,pThreadId)   \
     ( (This)->lpVtbl -> GetCurrentThreadID(This,pThreadId) ) 
 
-#define ICorProfilerInfo7_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
+#define ICorProfilerInfo8_GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) \
     ( (This)->lpVtbl -> GetClassIDInfo(This,classId,pModuleId,pTypeDefToken) ) 
 
-#define ICorProfilerInfo7_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
+#define ICorProfilerInfo8_GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken)   \
     ( (This)->lpVtbl -> GetFunctionInfo(This,functionId,pClassId,pModuleId,pToken) ) 
 
-#define ICorProfilerInfo7_SetEventMask(This,dwEvents)  \
+#define ICorProfilerInfo8_SetEventMask(This,dwEvents)  \
     ( (This)->lpVtbl -> SetEventMask(This,dwEvents) ) 
 
-#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
+#define ICorProfilerInfo8_SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo7_SetFunctionIDMapper(This,pFunc)      \
+#define ICorProfilerInfo8_SetFunctionIDMapper(This,pFunc)      \
     ( (This)->lpVtbl -> SetFunctionIDMapper(This,pFunc) ) 
 
-#define ICorProfilerInfo7_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
+#define ICorProfilerInfo8_GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken)        \
     ( (This)->lpVtbl -> GetTokenAndMetaDataFromFunction(This,functionId,riid,ppImport,pToken) ) 
 
-#define ICorProfilerInfo7_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
+#define ICorProfilerInfo8_GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId)   \
     ( (This)->lpVtbl -> GetModuleInfo(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId) ) 
 
-#define ICorProfilerInfo7_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
+#define ICorProfilerInfo8_GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut)      \
     ( (This)->lpVtbl -> GetModuleMetaData(This,moduleId,dwOpenFlags,riid,ppOut) ) 
 
-#define ICorProfilerInfo7_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
+#define ICorProfilerInfo8_GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize)       \
     ( (This)->lpVtbl -> GetILFunctionBody(This,moduleId,methodId,ppMethodHeader,pcbMethodSize) ) 
 
-#define ICorProfilerInfo7_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
+#define ICorProfilerInfo8_GetILFunctionBodyAllocator(This,moduleId,ppMalloc)   \
     ( (This)->lpVtbl -> GetILFunctionBodyAllocator(This,moduleId,ppMalloc) ) 
 
-#define ICorProfilerInfo7_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
+#define ICorProfilerInfo8_SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader)        \
     ( (This)->lpVtbl -> SetILFunctionBody(This,moduleId,methodid,pbNewILMethodHeader) ) 
 
-#define ICorProfilerInfo7_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
+#define ICorProfilerInfo8_GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId)        \
     ( (This)->lpVtbl -> GetAppDomainInfo(This,appDomainId,cchName,pcchName,szName,pProcessId) ) 
 
-#define ICorProfilerInfo7_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
+#define ICorProfilerInfo8_GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId)      \
     ( (This)->lpVtbl -> GetAssemblyInfo(This,assemblyId,cchName,pcchName,szName,pAppDomainId,pModuleId) ) 
 
-#define ICorProfilerInfo7_SetFunctionReJIT(This,functionId)    \
+#define ICorProfilerInfo8_SetFunctionReJIT(This,functionId)    \
     ( (This)->lpVtbl -> SetFunctionReJIT(This,functionId) ) 
 
-#define ICorProfilerInfo7_ForceGC(This)        \
+#define ICorProfilerInfo8_ForceGC(This)        \
     ( (This)->lpVtbl -> ForceGC(This) ) 
 
-#define ICorProfilerInfo7_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
+#define ICorProfilerInfo8_SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries)     \
     ( (This)->lpVtbl -> SetILInstrumentedCodeMap(This,functionId,fStartJit,cILMapEntries,rgILMapEntries) ) 
 
-#define ICorProfilerInfo7_GetInprocInspectionInterface(This,ppicd)     \
+#define ICorProfilerInfo8_GetInprocInspectionInterface(This,ppicd)     \
     ( (This)->lpVtbl -> GetInprocInspectionInterface(This,ppicd) ) 
 
-#define ICorProfilerInfo7_GetInprocInspectionIThisThread(This,ppicd)   \
+#define ICorProfilerInfo8_GetInprocInspectionIThisThread(This,ppicd)   \
     ( (This)->lpVtbl -> GetInprocInspectionIThisThread(This,ppicd) ) 
 
-#define ICorProfilerInfo7_GetThreadContext(This,threadId,pContextId)   \
+#define ICorProfilerInfo8_GetThreadContext(This,threadId,pContextId)   \
     ( (This)->lpVtbl -> GetThreadContext(This,threadId,pContextId) ) 
 
-#define ICorProfilerInfo7_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
+#define ICorProfilerInfo8_BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext)        \
     ( (This)->lpVtbl -> BeginInprocDebugging(This,fThisThreadOnly,pdwProfilerContext) ) 
 
-#define ICorProfilerInfo7_EndInprocDebugging(This,dwProfilerContext)   \
+#define ICorProfilerInfo8_EndInprocDebugging(This,dwProfilerContext)   \
     ( (This)->lpVtbl -> EndInprocDebugging(This,dwProfilerContext) ) 
 
-#define ICorProfilerInfo7_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
+#define ICorProfilerInfo8_GetILToNativeMapping(This,functionId,cMap,pcMap,map) \
     ( (This)->lpVtbl -> GetILToNativeMapping(This,functionId,cMap,pcMap,map) ) 
 
 
-#define ICorProfilerInfo7_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
+#define ICorProfilerInfo8_DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize)       \
     ( (This)->lpVtbl -> DoStackSnapshot(This,thread,callback,infoFlags,clientData,context,contextSize) ) 
 
-#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
+#define ICorProfilerInfo8_SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall)        \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks2(This,pFuncEnter,pFuncLeave,pFuncTailcall) ) 
 
-#define ICorProfilerInfo7_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
+#define ICorProfilerInfo8_GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs)      \
     ( (This)->lpVtbl -> GetFunctionInfo2(This,funcId,frameInfo,pClassId,pModuleId,pToken,cTypeArgs,pcTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo7_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
+#define ICorProfilerInfo8_GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset)  \
     ( (This)->lpVtbl -> GetStringLayout(This,pBufferLengthOffset,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo7_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
+#define ICorProfilerInfo8_GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize)    \
     ( (This)->lpVtbl -> GetClassLayout(This,classID,rFieldOffset,cFieldOffset,pcFieldOffset,pulClassSize) ) 
 
-#define ICorProfilerInfo7_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
+#define ICorProfilerInfo8_GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs)     \
     ( (This)->lpVtbl -> GetClassIDInfo2(This,classId,pModuleId,pTypeDefToken,pParentClassId,cNumTypeArgs,pcNumTypeArgs,typeArgs) ) 
 
-#define ICorProfilerInfo7_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo8_GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo2(This,functionID,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo7_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
+#define ICorProfilerInfo8_GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID)      \
     ( (This)->lpVtbl -> GetClassFromTokenAndTypeArgs(This,moduleID,typeDef,cTypeArgs,typeArgs,pClassID) ) 
 
-#define ICorProfilerInfo7_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
+#define ICorProfilerInfo8_GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID)        \
     ( (This)->lpVtbl -> GetFunctionFromTokenAndTypeArgs(This,moduleID,funcDef,classId,cTypeArgs,typeArgs,pFunctionID) ) 
 
-#define ICorProfilerInfo7_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
+#define ICorProfilerInfo8_EnumModuleFrozenObjects(This,moduleID,ppEnum)        \
     ( (This)->lpVtbl -> EnumModuleFrozenObjects(This,moduleID,ppEnum) ) 
 
-#define ICorProfilerInfo7_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
+#define ICorProfilerInfo8_GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData)   \
     ( (This)->lpVtbl -> GetArrayObjectInfo(This,objectId,cDimensions,pDimensionSizes,pDimensionLowerBounds,ppData) ) 
 
-#define ICorProfilerInfo7_GetBoxClassLayout(This,classId,pBufferOffset)        \
+#define ICorProfilerInfo8_GetBoxClassLayout(This,classId,pBufferOffset)        \
     ( (This)->lpVtbl -> GetBoxClassLayout(This,classId,pBufferOffset) ) 
 
-#define ICorProfilerInfo7_GetThreadAppDomain(This,threadId,pAppDomainId)       \
+#define ICorProfilerInfo8_GetThreadAppDomain(This,threadId,pAppDomainId)       \
     ( (This)->lpVtbl -> GetThreadAppDomain(This,threadId,pAppDomainId) ) 
 
-#define ICorProfilerInfo7_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
+#define ICorProfilerInfo8_GetRVAStaticAddress(This,classId,fieldToken,ppAddress)       \
     ( (This)->lpVtbl -> GetRVAStaticAddress(This,classId,fieldToken,ppAddress) ) 
 
-#define ICorProfilerInfo7_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
+#define ICorProfilerInfo8_GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress)     \
     ( (This)->lpVtbl -> GetAppDomainStaticAddress(This,classId,fieldToken,appDomainId,ppAddress) ) 
 
-#define ICorProfilerInfo7_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
+#define ICorProfilerInfo8_GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress)   \
     ( (This)->lpVtbl -> GetThreadStaticAddress(This,classId,fieldToken,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo7_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
+#define ICorProfilerInfo8_GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) \
     ( (This)->lpVtbl -> GetContextStaticAddress(This,classId,fieldToken,contextId,ppAddress) ) 
 
-#define ICorProfilerInfo7_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
+#define ICorProfilerInfo8_GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo)       \
     ( (This)->lpVtbl -> GetStaticFieldInfo(This,classId,fieldToken,pFieldInfo) ) 
 
-#define ICorProfilerInfo7_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
+#define ICorProfilerInfo8_GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges)        \
     ( (This)->lpVtbl -> GetGenerationBounds(This,cObjectRanges,pcObjectRanges,ranges) ) 
 
-#define ICorProfilerInfo7_GetObjectGeneration(This,objectId,range)     \
+#define ICorProfilerInfo8_GetObjectGeneration(This,objectId,range)     \
     ( (This)->lpVtbl -> GetObjectGeneration(This,objectId,range) ) 
 
-#define ICorProfilerInfo7_GetNotifiedExceptionClauseInfo(This,pinfo)   \
+#define ICorProfilerInfo8_GetNotifiedExceptionClauseInfo(This,pinfo)   \
     ( (This)->lpVtbl -> GetNotifiedExceptionClauseInfo(This,pinfo) ) 
 
 
-#define ICorProfilerInfo7_EnumJITedFunctions(This,ppEnum)      \
+#define ICorProfilerInfo8_EnumJITedFunctions(This,ppEnum)      \
     ( (This)->lpVtbl -> EnumJITedFunctions(This,ppEnum) ) 
 
-#define ICorProfilerInfo7_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
+#define ICorProfilerInfo8_RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) \
     ( (This)->lpVtbl -> RequestProfilerDetach(This,dwExpectedCompletionMilliseconds) ) 
 
-#define ICorProfilerInfo7_SetFunctionIDMapper2(This,pFunc,clientData)  \
+#define ICorProfilerInfo8_SetFunctionIDMapper2(This,pFunc,clientData)  \
     ( (This)->lpVtbl -> SetFunctionIDMapper2(This,pFunc,clientData) ) 
 
-#define ICorProfilerInfo7_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
+#define ICorProfilerInfo8_GetStringLayout2(This,pStringLengthOffset,pBufferOffset)     \
     ( (This)->lpVtbl -> GetStringLayout2(This,pStringLengthOffset,pBufferOffset) ) 
 
-#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
+#define ICorProfilerInfo8_SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3(This,pFuncEnter3,pFuncLeave3,pFuncTailcall3) ) 
 
-#define ICorProfilerInfo7_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
+#define ICorProfilerInfo8_SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo)     \
     ( (This)->lpVtbl -> SetEnterLeaveFunctionHooks3WithInfo(This,pFuncEnter3WithInfo,pFuncLeave3WithInfo,pFuncTailcall3WithInfo) ) 
 
-#define ICorProfilerInfo7_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
+#define ICorProfilerInfo8_GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo)      \
     ( (This)->lpVtbl -> GetFunctionEnter3Info(This,functionId,eltInfo,pFrameInfo,pcbArgumentInfo,pArgumentInfo) ) 
 
-#define ICorProfilerInfo7_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
+#define ICorProfilerInfo8_GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange)       \
     ( (This)->lpVtbl -> GetFunctionLeave3Info(This,functionId,eltInfo,pFrameInfo,pRetvalRange) ) 
 
-#define ICorProfilerInfo7_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
+#define ICorProfilerInfo8_GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) \
     ( (This)->lpVtbl -> GetFunctionTailcall3Info(This,functionId,eltInfo,pFrameInfo) ) 
 
-#define ICorProfilerInfo7_EnumModules(This,ppEnum)     \
+#define ICorProfilerInfo8_EnumModules(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumModules(This,ppEnum) ) 
 
-#define ICorProfilerInfo7_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
+#define ICorProfilerInfo8_GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString)      \
     ( (This)->lpVtbl -> GetRuntimeInformation(This,pClrInstanceId,pRuntimeType,pMajorVersion,pMinorVersion,pBuildNumber,pQFEVersion,cchVersionString,pcchVersionString,szVersionString) ) 
 
-#define ICorProfilerInfo7_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
+#define ICorProfilerInfo8_GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress)      \
     ( (This)->lpVtbl -> GetThreadStaticAddress2(This,classId,fieldToken,appDomainId,threadId,ppAddress) ) 
 
-#define ICorProfilerInfo7_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
+#define ICorProfilerInfo8_GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds)       \
     ( (This)->lpVtbl -> GetAppDomainsContainingModule(This,moduleId,cAppDomainIds,pcAppDomainIds,appDomainIds) ) 
 
-#define ICorProfilerInfo7_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
+#define ICorProfilerInfo8_GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags)   \
     ( (This)->lpVtbl -> GetModuleInfo2(This,moduleId,ppBaseLoadAddress,cchName,pcchName,szName,pAssemblyId,pdwModuleFlags) ) 
 
 
-#define ICorProfilerInfo7_EnumThreads(This,ppEnum)     \
+#define ICorProfilerInfo8_EnumThreads(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumThreads(This,ppEnum) ) 
 
-#define ICorProfilerInfo7_InitializeCurrentThread(This)        \
+#define ICorProfilerInfo8_InitializeCurrentThread(This)        \
     ( (This)->lpVtbl -> InitializeCurrentThread(This) ) 
 
-#define ICorProfilerInfo7_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
+#define ICorProfilerInfo8_RequestReJIT(This,cFunctions,moduleIds,methodIds)    \
     ( (This)->lpVtbl -> RequestReJIT(This,cFunctions,moduleIds,methodIds) ) 
 
-#define ICorProfilerInfo7_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
+#define ICorProfilerInfo8_RequestRevert(This,cFunctions,moduleIds,methodIds,status)    \
     ( (This)->lpVtbl -> RequestRevert(This,cFunctions,moduleIds,methodIds,status) ) 
 
-#define ICorProfilerInfo7_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
+#define ICorProfilerInfo8_GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos)       \
     ( (This)->lpVtbl -> GetCodeInfo3(This,functionID,reJitId,cCodeInfos,pcCodeInfos,codeInfos) ) 
 
-#define ICorProfilerInfo7_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
+#define ICorProfilerInfo8_GetFunctionFromIP2(This,ip,pFunctionId,pReJitId)     \
     ( (This)->lpVtbl -> GetFunctionFromIP2(This,ip,pFunctionId,pReJitId) ) 
 
-#define ICorProfilerInfo7_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
+#define ICorProfilerInfo8_GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds)   \
     ( (This)->lpVtbl -> GetReJITIDs(This,functionId,cReJitIds,pcReJitIds,reJitIds) ) 
 
-#define ICorProfilerInfo7_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
+#define ICorProfilerInfo8_GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map)        \
     ( (This)->lpVtbl -> GetILToNativeMapping2(This,functionId,reJitId,cMap,pcMap,map) ) 
 
-#define ICorProfilerInfo7_EnumJITedFunctions2(This,ppEnum)     \
+#define ICorProfilerInfo8_EnumJITedFunctions2(This,ppEnum)     \
     ( (This)->lpVtbl -> EnumJITedFunctions2(This,ppEnum) ) 
 
-#define ICorProfilerInfo7_GetObjectSize2(This,objectId,pcSize) \
+#define ICorProfilerInfo8_GetObjectSize2(This,objectId,pcSize) \
     ( (This)->lpVtbl -> GetObjectSize2(This,objectId,pcSize) ) 
 
 
-#define ICorProfilerInfo7_GetEventMask2(This,pdwEventsLow,pdwEventsHigh)       \
+#define ICorProfilerInfo8_GetEventMask2(This,pdwEventsLow,pdwEventsHigh)       \
     ( (This)->lpVtbl -> GetEventMask2(This,pdwEventsLow,pdwEventsHigh) ) 
 
-#define ICorProfilerInfo7_SetEventMask2(This,dwEventsLow,dwEventsHigh) \
+#define ICorProfilerInfo8_SetEventMask2(This,dwEventsLow,dwEventsHigh) \
     ( (This)->lpVtbl -> SetEventMask2(This,dwEventsLow,dwEventsHigh) ) 
 
 
-#define ICorProfilerInfo7_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \
+#define ICorProfilerInfo8_EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) \
     ( (This)->lpVtbl -> EnumNgenModuleMethodsInliningThisMethod(This,inlinersModuleId,inlineeModuleId,inlineeMethodId,incompleteData,ppEnum) ) 
 
 
-#define ICorProfilerInfo7_ApplyMetaData(This,moduleId) \
+#define ICorProfilerInfo8_ApplyMetaData(This,moduleId) \
     ( (This)->lpVtbl -> ApplyMetaData(This,moduleId) ) 
 
-#define ICorProfilerInfo7_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes)    \
+#define ICorProfilerInfo8_GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes)    \
     ( (This)->lpVtbl -> GetInMemorySymbolsLength(This,moduleId,pCountSymbolBytes) ) 
 
-#define ICorProfilerInfo7_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead)     \
+#define ICorProfilerInfo8_ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead)     \
     ( (This)->lpVtbl -> ReadInMemorySymbols(This,moduleId,symbolsReadOffset,pSymbolBytes,countSymbolBytes,pCountSymbolBytesRead) ) 
 
+
+#define ICorProfilerInfo8_IsFunctionDynamic(This,functionId,isDynamic) \
+    ( (This)->lpVtbl -> IsFunctionDynamic(This,functionId,isDynamic) ) 
+
+#define ICorProfilerInfo8_GetFunctionFromIP3(This,ip,functionId,pReJitId)      \
+    ( (This)->lpVtbl -> GetFunctionFromIP3(This,ip,functionId,pReJitId) ) 
+
+#define ICorProfilerInfo8_GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName)       \
+    ( (This)->lpVtbl -> GetDynamicFunctionInfo(This,functionId,moduleId,ppvSig,pbSig,cchName,pcchName,wszName) ) 
+
 #endif /* COBJMACROS */
 
 
@@ -11709,7 +13403,7 @@ EXTERN_C const IID IID_ICorProfilerInfo7;
 
 
 
-#endif         /* __ICorProfilerInfo7_INTERFACE_DEFINED__ */
+#endif         /* __ICorProfilerInfo8_INTERFACE_DEFINED__ */
 
 
 #ifndef __ICorProfilerMethodEnum_INTERFACE_DEFINED__
index fdc725b..16da50e 100644 (file)
@@ -414,6 +414,7 @@ EEToProfInterfaceImpl::EEToProfInterfaceImpl() :
     m_pCallback5(NULL),
     m_pCallback6(NULL),
     m_pCallback7(NULL),
+    m_pCallback8(NULL),
     m_hmodProfilerDLL(NULL),
     m_fLoadedViaAttach(FALSE),
     m_pProfToEE(NULL),
@@ -664,21 +665,25 @@ HRESULT EEToProfInterfaceImpl::CreateProfiler(
     m_hmodProfilerDLL = hmodProfilerDLL.Extract();
     hmodProfilerDLL = NULL;
 
-    // The profiler may optionally support ICorProfilerCallback3,4,5,6,7.  Let's check.
+    // The profiler may optionally support ICorProfilerCallback3,4,5,6,7,8.  Let's check.
 
-    ReleaseHolder<ICorProfilerCallback7> pCallback7;
+    ReleaseHolder<ICorProfilerCallback8> pCallback8;
     hr = m_pCallback2->QueryInterface(
-        IID_ICorProfilerCallback7,
-        (LPVOID *)&pCallback7);
-    if (SUCCEEDED(hr) && (pCallback7 != NULL))
+        IID_ICorProfilerCallback8,
+        (LPVOID *)&pCallback8);
+    if (SUCCEEDED(hr) && (pCallback8 != NULL))
     {
         // Nifty.  Transfer ownership to this class
-        _ASSERTE(m_pCallback7 == NULL);
-        m_pCallback7 = pCallback7.Extract();
-        pCallback7 = NULL;
+        _ASSERTE(m_pCallback8 == NULL);
+        m_pCallback8 = pCallback8.Extract();
+        pCallback8 = NULL;
 
-        // And while we're at it, we must now also have an ICorProfilerCallback3,4,5,6
+        // And while we're at it, we must now also have an ICorProfilerCallback3,4,5,6,7
         // due to inheritance relationship of the interfaces
+        _ASSERTE(m_pCallback7 == NULL);
+        m_pCallback7 = static_cast<ICorProfilerCallback7 *>(m_pCallback8);
+        m_pCallback7->AddRef();
+
         _ASSERTE(m_pCallback6 == NULL);
         m_pCallback6 = static_cast<ICorProfilerCallback6 *>(m_pCallback7);
         m_pCallback6->AddRef();
@@ -696,6 +701,40 @@ HRESULT EEToProfInterfaceImpl::CreateProfiler(
         m_pCallback3->AddRef();
     }
 
+    if (m_pCallback7 == NULL)
+    {
+        ReleaseHolder<ICorProfilerCallback7> pCallback7;
+        hr = m_pCallback2->QueryInterface(
+            IID_ICorProfilerCallback7,
+            (LPVOID *)&pCallback7);
+        if (SUCCEEDED(hr) && (pCallback7 != NULL))
+        {
+            // Nifty.  Transfer ownership to this class
+            _ASSERTE(m_pCallback7 == NULL);
+            m_pCallback7 = pCallback7.Extract();
+            pCallback7 = NULL;
+
+            // And while we're at it, we must now also have an ICorProfilerCallback3,4,5,6
+            // due to inheritance relationship of the interfaces
+
+            _ASSERTE(m_pCallback6 == NULL);
+            m_pCallback6 = static_cast<ICorProfilerCallback6 *>(m_pCallback7);
+            m_pCallback6->AddRef();
+
+            _ASSERTE(m_pCallback5 == NULL);
+            m_pCallback5 = static_cast<ICorProfilerCallback5 *>(m_pCallback6);
+            m_pCallback5->AddRef();
+
+            _ASSERTE(m_pCallback4 == NULL);
+            m_pCallback4 = static_cast<ICorProfilerCallback4 *>(m_pCallback5);
+            m_pCallback4->AddRef();
+
+            _ASSERTE(m_pCallback3 == NULL);
+            m_pCallback3 = static_cast<ICorProfilerCallback3 *>(m_pCallback4);
+            m_pCallback3->AddRef();
+        }
+    }
+
     if (m_pCallback6 == NULL)
     {
         ReleaseHolder<ICorProfilerCallback6> pCallback6;
@@ -873,6 +912,13 @@ EEToProfInterfaceImpl::~EEToProfInterfaceImpl()
             m_pCallback7 = NULL;
         }
 
+        if (m_pCallback8 != NULL)
+        {
+            REMOVE_STACK_GUARD_FOR_PROFILER_CALL;
+            m_pCallback8->Release();
+            m_pCallback8 = NULL;
+        }
+
         // Only unload the V4 profiler if this is not part of shutdown.  This protects
         // Whidbey profilers that aren't used to being FreeLibrary'd.
         if (fIsV4Profiler && !g_fEEShutDown)
@@ -3184,6 +3230,78 @@ HRESULT EEToProfInterfaceImpl::JITCompilationStarted(FunctionID functionId,
     }
 }
 
+HRESULT EEToProfInterfaceImpl::DynamicMethodJITCompilationFinished(FunctionID functionId)
+{
+    CONTRACTL
+    {
+        NOTHROW;
+        GC_TRIGGERS;
+        MODE_PREEMPTIVE;
+        CAN_TAKE_LOCK;
+
+        // The JIT / MethodDesc code likely hold locks while this callback is made
+
+        SO_NOT_MAINLINE;
+    }
+    CONTRACTL_END;
+    
+    CLR_TO_PROFILER_ENTRYPOINT((LF_CORPROF, 
+                                LL_INFO1000, 
+                                "**PROF: DynamicMethodJITCompilationFinished 0x%p.\n", 
+                                functionId));
+
+    _ASSERTE(functionId);
+
+    // Should only be called on profilers that support ICorProfilerCallback8
+    if (m_pCallback8 == NULL)
+    {
+        return E_FAIL;
+    }
+
+    {
+        // All callbacks are really NOTHROW, but that's enforced partially by the profiler,
+        // whose try/catch blocks aren't visible to the contract system        
+        PERMANENT_CONTRACT_VIOLATION(ThrowsViolation, ReasonProfilerCallout);
+        return m_pCallback8->DynamicMethodJITCompilationFinished(functionId);
+    }
+}
+
+HRESULT EEToProfInterfaceImpl::DynamicMethodJITCompilationStarted(FunctionID functionId, LPCBYTE ilHeader)
+{
+    CONTRACTL
+    {
+        NOTHROW;
+        GC_TRIGGERS;
+        MODE_PREEMPTIVE;
+        CAN_TAKE_LOCK;
+
+        // The JIT / MethodDesc code likely hold locks while this callback is made
+
+        SO_NOT_MAINLINE;
+    }
+    CONTRACTL_END;
+    
+    CLR_TO_PROFILER_ENTRYPOINT((LF_CORPROF, 
+                                LL_INFO1000, 
+                                "**PROF: DynamicMethodJITCompilationStarted 0x%p.\n", 
+                                functionId));
+
+    _ASSERTE(functionId);
+
+    // Should only be called on profilers that support ICorProfilerCallback8
+    if (m_pCallback8 == NULL)
+    {
+        return E_FAIL;
+    }
+
+    {
+        // All callbacks are really NOTHROW, but that's enforced partially by the profiler,
+        // whose try/catch blocks aren't visible to the contract system        
+        PERMANENT_CONTRACT_VIOLATION(ThrowsViolation, ReasonProfilerCallout);
+        return m_pCallback8->DynamicMethodJITCompilationStarted(functionId, ilHeader);
+    }
+}
+
 HRESULT EEToProfInterfaceImpl::JITCachedFunctionSearchStarted(
                                     /* [in] */  FunctionID functionId,
                                     /* [out] */ BOOL       *pbUseCachedFunction)
index 0390f94..e7ec34c 100644 (file)
@@ -55,6 +55,7 @@ public:
     BOOL IsCallback5Supported();
     BOOL IsCallback6Supported();
     BOOL IsCallback7Supported();
+    BOOL IsCallback8Supported();
 
     HRESULT SetEventMask(DWORD dwEventMask, DWORD dwEventMaskHigh);
 
@@ -169,6 +170,13 @@ public:
     HRESULT JITCompilationStarted(
         FunctionID  functionId,
         BOOL        fIsSafeToBlock);
+
+    HRESULT DynamicMethodJITCompilationStarted(
+        FunctionID  functionId,
+        LPCBYTE     ilHeader);
+
+    HRESULT DynamicMethodJITCompilationFinished(
+        FunctionID functionId);
     
     HRESULT JITCachedFunctionSearchStarted(
         /* [in] */  FunctionID functionId,
@@ -529,13 +537,14 @@ private:
 
     // Pointer to the profiler's implementation of the callback interface(s).
     // Profilers MUST support ICorProfilerCallback2.
-    // Profilers MAY optionally support ICorProfilerCallback3,4,5,6,7
+    // Profilers MAY optionally support ICorProfilerCallback3,4,5,6,7,8
     ICorProfilerCallback2 * m_pCallback2;
     ICorProfilerCallback3 * m_pCallback3;
     ICorProfilerCallback4 * m_pCallback4;
     ICorProfilerCallback5 * m_pCallback5;
     ICorProfilerCallback6 * m_pCallback6;
     ICorProfilerCallback7 * m_pCallback7;
+    ICorProfilerCallback8 * m_pCallback8;
     HMODULE                 m_hmodProfilerDLL;
 
     BOOL                    m_fLoadedViaAttach;
index 8a11118..feb81ed 100644 (file)
@@ -65,6 +65,12 @@ inline BOOL EEToProfInterfaceImpl::IsCallback7Supported()
     return (m_pCallback7 != NULL);
 }
 
+inline BOOL EEToProfInterfaceImpl::IsCallback8Supported()
+{
+    LIMITED_METHOD_CONTRACT;
+    return (m_pCallback8 != NULL);
+}
+
 inline FunctionIDMapper * EEToProfInterfaceImpl::GetFunctionIDMapper()
 {
     LIMITED_METHOD_CONTRACT;
index 77febfb..ff897fa 100644 (file)
@@ -441,6 +441,10 @@ PCODE MethodDesc::MakeJitWorker(COR_ILMETHOD_DECODER* ILHeader, DWORD flags, DWO
                     COR_ILMETHOD *pilHeader = GetILHeader(TRUE);
                     new (ILHeader) COR_ILMETHOD_DECODER(pilHeader, GetMDImport(), NULL);
                 }
+                else
+                {
+                    g_profControlBlock.pProfInterface->DynamicMethodJITCompilationStarted((FunctionID) this, (LPCBYTE)ILHeader);
+                }
                 END_PIN_PROFILER();
             }
 #endif // PROFILING_SUPPORTED
@@ -593,6 +597,10 @@ GotNewCode:
                                                 pEntry->m_hrResultCode, 
                                                 TRUE);
                 }
+                else
+                {
+                    g_profControlBlock.pProfInterface->DynamicMethodJITCompilationFinished((FunctionID) this);
+                }
                 END_PIN_PROFILER();
             }
 #endif // PROFILING_SUPPORTED
index 598cf4a..dbfe2e0 100644 (file)
@@ -585,6 +585,10 @@ COM_METHOD ProfToEEInterfaceImpl::QueryInterface(REFIID id, void ** pInterface)
     {
         *pInterface = static_cast<ICorProfilerInfo7 *>(this);
     }
+    else if (id == IID_ICorProfilerInfo8)
+    {
+        *pInterface = static_cast<ICorProfilerInfo8 *>(this);
+    }
     else if (id == IID_IUnknown)
     {
         *pInterface = static_cast<IUnknown *>(static_cast<ICorProfilerInfo *>(this));
@@ -1959,7 +1963,7 @@ HRESULT GetFunctionInfoInternal(LPCBYTE ip, EECodeInfo * pCodeInfo)
 }
 
 
-HRESULT GetFunctionFromIPInternal(LPCBYTE ip, EECodeInfo * pCodeInfo)
+HRESULT GetFunctionFromIPInternal(LPCBYTE ip, EECodeInfo * pCodeInfo, BOOL failOnNoMetadata)
 {
     CONTRACTL
     {
@@ -1979,11 +1983,14 @@ HRESULT GetFunctionFromIPInternal(LPCBYTE ip, EECodeInfo * pCodeInfo)
     {
         return hr;
     }
-    
-    // never return a method that the user of the profiler API cannot use
-    if (pCodeInfo->GetMethodDesc()->IsNoMetadata())
+
+    if (failOnNoMetadata)
     {
-        return E_FAIL;
+        // never return a method that the user of the profiler API cannot use
+        if (pCodeInfo->GetMethodDesc()->IsNoMetadata())
+        {
+            return E_FAIL;
+        }
     }
 
     return S_OK;
@@ -2043,7 +2050,7 @@ HRESULT ProfToEEInterfaceImpl::GetFunctionFromIP(LPCBYTE ip, FunctionID * pFunct
 
     EECodeInfo codeInfo;
 
-    hr = GetFunctionFromIPInternal(ip, &codeInfo);
+    hr = GetFunctionFromIPInternal(ip, &codeInfo, /* failOnNoMetadata */ TRUE);
     if (FAILED(hr))
     {
         return hr;
@@ -2096,7 +2103,7 @@ HRESULT ProfToEEInterfaceImpl::GetFunctionFromIP2(LPCBYTE ip, FunctionID * pFunc
 
     EECodeInfo codeInfo;
 
-    hr = GetFunctionFromIPInternal(ip, &codeInfo);
+    hr = GetFunctionFromIPInternal(ip, &codeInfo, /* failOnNoMetadata */ TRUE);
     if (FAILED(hr))
     {
         return hr;
@@ -6372,6 +6379,294 @@ HRESULT ProfToEEInterfaceImpl::GetFunctionInfo2(FunctionID funcId,
 }
 
 /*
+* IsFunctionDynamic
+*
+* This function takes a functionId that maybe of a metadata-less method like an IL Stub
+* or LCG method and returns true in the pHasNoMetadata if it is indeed a metadata-less
+* method.
+*
+* Parameters:
+*   functionId - The function that is being requested.
+*   isDynamic - An optional parameter for returning if the function has metadata or not.
+*
+* Returns:
+*   S_OK if successful.
+*/
+HRESULT ProfToEEInterfaceImpl::IsFunctionDynamic(FunctionID functionId, BOOL *isDynamic)
+{
+    CONTRACTL
+    {
+        NOTHROW;
+        GC_NOTRIGGER;
+        MODE_ANY;
+        EE_THREAD_NOT_REQUIRED;
+
+        // Generics::GetExactInstantiationsOfMethodAndItsClassFromCallInformation eventually
+        // reads metadata which causes us to take a reader lock.  However, see
+        // code:#DisableLockOnAsyncCalls
+        DISABLED(CAN_TAKE_LOCK);
+
+        // Asynchronous functions can be called at arbitrary times when runtime 
+        // is holding locks that cannot be reentered without causing deadlock.
+        // This contract detects any attempts to reenter locks held at the time 
+        // this function was called.  
+        CANNOT_RETAKE_LOCK;
+
+        SO_NOT_MAINLINE;
+
+        PRECONDITION(CheckPointer(isDynamic, NULL_OK));
+    }
+    CONTRACTL_END;
+
+    // See code:#DisableLockOnAsyncCalls
+    PERMANENT_CONTRACT_VIOLATION(TakesLockViolation, ReasonProfilerAsyncCannotRetakeLock);
+
+    PROFILER_TO_CLR_ENTRYPOINT_ASYNC_EX(kP2EEAllowableAfterAttach,
+        (LF_CORPROF,
+            LL_INFO1000,
+            "**PROF: IsFunctionDynamic 0x%p.\n",
+            functionId));
+
+    //
+    // Verify parameters.
+    //
+
+    if (functionId == NULL)
+    {
+        return E_INVALIDARG;
+    }
+
+    MethodDesc *pMethDesc = FunctionIdToMethodDesc(functionId);
+
+    if (pMethDesc == NULL)
+    {
+        return E_INVALIDARG;
+    }
+
+    // it's not safe to examine a methoddesc that has not been restored so do not do so
+    if (!pMethDesc->IsRestored())
+        return CORPROF_E_DATAINCOMPLETE;
+
+    //
+    // Fill in the pHasNoMetadata, if desired.
+    //
+    if (isDynamic != NULL)
+    {
+        *isDynamic = pMethDesc->IsNoMetadata();
+    }
+
+    return S_OK;
+}
+
+/*
+* GetFunctionFromIP3
+*
+* This function takes an IP and determines if it is a managed function returning its
+* FunctionID. This method is different from GetFunctionFromIP in that will return
+* FunctionIDs even if they have no associated metadata.
+*
+* Parameters:
+*   ip - The instruction pointer.
+*   pFunctionId - An optional parameter for returning the FunctionID.
+*   pReJitId - The ReJIT id.
+*
+* Returns:
+*   S_OK if successful.
+*/
+HRESULT ProfToEEInterfaceImpl::GetFunctionFromIP3(LPCBYTE ip, FunctionID * pFunctionId, ReJITID * pReJitId)
+{
+    CONTRACTL
+    {
+        NOTHROW;
+
+        // Grabbing the rejitid requires entering the rejit manager's hash table & lock,
+        // which can switch us to preemptive mode and trigger GCs
+        GC_TRIGGERS;
+        MODE_ANY;
+        EE_THREAD_NOT_REQUIRED;
+
+        // Grabbing the rejitid requires entering the rejit manager's hash table & lock,
+        CAN_TAKE_LOCK;
+
+        SO_NOT_MAINLINE;
+    }
+    CONTRACTL_END;
+
+    // See code:#DisableLockOnAsyncCalls
+    PERMANENT_CONTRACT_VIOLATION(TakesLockViolation, ReasonProfilerAsyncCannotRetakeLock);
+
+    PROFILER_TO_CLR_ENTRYPOINT_SYNC_EX(
+        kP2EEAllowableAfterAttach | kP2EETriggers,
+        (LF_CORPROF,
+            LL_INFO1000,
+            "**PROF: GetFunctionFromIP3 0x%p.\n",
+            ip));
+
+    HRESULT hr = S_OK;
+
+    EECodeInfo codeInfo;
+
+    hr = GetFunctionFromIPInternal(ip, &codeInfo, /* failOnNoMetadata */ FALSE);
+    if (FAILED(hr))
+    {
+        return hr;
+    }
+
+    if (pFunctionId)
+    {
+        *pFunctionId = MethodDescToFunctionID(codeInfo.GetMethodDesc());
+    }
+
+    if (pReJitId != NULL)
+    {
+        MethodDesc * pMD = codeInfo.GetMethodDesc();
+        *pReJitId = pMD->GetReJitManager()->GetReJitId(pMD, codeInfo.GetStartAddress());
+    }
+
+    return S_OK;
+}
+
+/*
+* GetDynamicFunctionInfo
+*
+* This function takes a functionId that maybe of a metadata-less method like an IL Stub
+* or LCG method and gives information about it without failing like GetFunctionInfo.
+*
+* Parameters:
+*   functionId - The function that is being requested.
+*   pModuleId - An optional parameter for returning the module of the function.
+*   ppvSig -  An optional parameter for returning the signature of the function.
+*   pbSig - An optional parameter for returning the size of the signature of the function.
+*   cchName - A parameter for indicating the size of buffer for the wszName parameter.
+*   pcchName - An optional parameter for returning the true size of the wszName parameter.
+*   wszName - A parameter to the caller allocated buffer of size cchName
+*
+* Returns:
+*   S_OK if successful.
+*/
+HRESULT ProfToEEInterfaceImpl::GetDynamicFunctionInfo(FunctionID functionId,
+                                                      ModuleID *pModuleId,
+                                                      PCCOR_SIGNATURE* ppvSig,
+                                                      ULONG* pbSig,
+                                                      ULONG cchName,
+                                                      ULONG *pcchName,
+            __out_ecount_part_opt(cchName, *pcchName) WCHAR wszName[])
+{
+    CONTRACTL
+    {
+        NOTHROW;
+        GC_NOTRIGGER;
+        MODE_ANY;
+        EE_THREAD_NOT_REQUIRED;
+
+        // Generics::GetExactInstantiationsOfMethodAndItsClassFromCallInformation eventually
+        // reads metadata which causes us to take a reader lock.  However, see
+        // code:#DisableLockOnAsyncCalls
+        DISABLED(CAN_TAKE_LOCK);
+
+        // Asynchronous functions can be called at arbitrary times when runtime 
+        // is holding locks that cannot be reentered without causing deadlock.
+        // This contract detects any attempts to reenter locks held at the time 
+        // this function was called.  
+        CANNOT_RETAKE_LOCK;
+
+        SO_NOT_MAINLINE;
+
+        PRECONDITION(CheckPointer(pModuleId, NULL_OK));
+        PRECONDITION(CheckPointer(ppvSig, NULL_OK));
+        PRECONDITION(CheckPointer(pbSig,  NULL_OK));
+        PRECONDITION(CheckPointer(pcchName, NULL_OK));
+    }
+    CONTRACTL_END;
+
+    // See code:#DisableLockOnAsyncCalls
+    PERMANENT_CONTRACT_VIOLATION(TakesLockViolation, ReasonProfilerAsyncCannotRetakeLock);
+
+    PROFILER_TO_CLR_ENTRYPOINT_ASYNC_EX(kP2EEAllowableAfterAttach,
+        (LF_CORPROF,
+            LL_INFO1000,
+            "**PROF: GetDynamicFunctionInfo 0x%p.\n",
+            functionId));
+
+    //
+    // Verify parameters.
+    //
+
+    if (functionId == NULL)
+    {
+        return E_INVALIDARG;
+    }
+
+    MethodDesc *pMethDesc = FunctionIdToMethodDesc(functionId);
+
+    if (pMethDesc == NULL)
+    {
+        return E_INVALIDARG;
+    }
+
+    // it's not safe to examine a methoddesc that has not been restored so do not do so
+    if (!pMethDesc->IsRestored())
+        return CORPROF_E_DATAINCOMPLETE;
+
+
+    if (!pMethDesc->IsNoMetadata())
+        return E_INVALIDARG;
+
+    //
+    // Fill in the ModuleId, if desired.
+    //
+    if (pModuleId != NULL)
+    {
+        *pModuleId = (ModuleID)pMethDesc->GetModule();
+    }
+
+    //
+    // Fill in the ppvSig and pbSig, if desired
+    //
+    if (ppvSig != NULL && pbSig != NULL)
+    {
+        pMethDesc->GetSig(ppvSig, pbSig);
+    }
+
+    HRESULT hr = S_OK;
+
+    EX_TRY
+    {
+        if (wszName != NULL)
+            *wszName = 0;
+        if (pcchName != NULL)
+            *pcchName = 0;
+
+        StackSString ss;
+        ss.SetUTF8(pMethDesc->GetName());
+        ss.Normalize();
+        LPCWSTR methodName = ss.GetUnicode();
+
+        ULONG trueLen = (ULONG)(wcslen(methodName) + 1);
+
+        // Return name of method as required.
+        if (wszName && cchName > 0)
+        {
+            if (cchName < trueLen)
+            {
+                hr = HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER);
+            }
+            else
+            {
+                wcsncpy_s(wszName, cchName, methodName, trueLen);
+            }
+        }
+
+        // If they request the actual length of the name
+        if (pcchName)
+            *pcchName = trueLen;
+    }
+    EX_CATCH_HRESULT(hr);
+
+    return (hr);
+}
+
+/*
  * GetStringLayout
  *
  * This function describes to a profiler the internal layout of a string.
index 7bbd0bc..ed53ae2 100644 (file)
@@ -133,7 +133,7 @@ typedef struct _PROFILER_STACK_WALK_DATA PROFILER_STACK_WALK_DATA;
 // from the profiler implementation.  The profiler will call back on the v-table
 // to get at EE internals as required.
 
-class ProfToEEInterfaceImpl : public ICorProfilerInfo7
+class ProfToEEInterfaceImpl : public ICorProfilerInfo8
 {
 public:
 
@@ -555,6 +555,28 @@ public:
 
     // end ICorProfilerInfo7
 
+    // begin ICorProfilerInfo8
+
+    COM_METHOD IsFunctionDynamic(
+        FunctionID functionId,
+        BOOL *isDynamic);
+
+    COM_METHOD GetFunctionFromIP3(
+        LPCBYTE      ip,          // in
+        FunctionID * pFunctionId, // out
+        ReJITID *    pReJitId);   // out
+
+    COM_METHOD GetDynamicFunctionInfo(
+        FunctionID functionId,
+        ModuleID* moduleId,
+        PCCOR_SIGNATURE* ppvSig,
+        ULONG* pbSig,
+        ULONG cchName,
+        ULONG *pcchName,
+        WCHAR wszName[]);
+
+    // end ICorProfilerInfo8
+
 protected:
 
     // Internal Helper Functions