/*** Autogenerated by WIDL 5.0 from cordebug.idl - Do not edit ***/

#ifdef _WIN32
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif
#include <rpc.h>
#include <rpcndr.h>
#endif

#ifndef COM_NO_WINDOWS_H
#include <windows.h>
#include <ole2.h>
#endif

#ifndef __cordebug_h__
#define __cordebug_h__

/* Forward declarations */

#ifndef __ICorDebugValue_FWD_DEFINED__
#define __ICorDebugValue_FWD_DEFINED__
typedef interface ICorDebugValue ICorDebugValue;
#ifdef __cplusplus
interface ICorDebugValue;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugThread_FWD_DEFINED__
#define __ICorDebugThread_FWD_DEFINED__
typedef interface ICorDebugThread ICorDebugThread;
#ifdef __cplusplus
interface ICorDebugThread;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugController_FWD_DEFINED__
#define __ICorDebugController_FWD_DEFINED__
typedef interface ICorDebugController ICorDebugController;
#ifdef __cplusplus
interface ICorDebugController;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugProcess_FWD_DEFINED__
#define __ICorDebugProcess_FWD_DEFINED__
typedef interface ICorDebugProcess ICorDebugProcess;
#ifdef __cplusplus
interface ICorDebugProcess;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugAppDomain_FWD_DEFINED__
#define __ICorDebugAppDomain_FWD_DEFINED__
typedef interface ICorDebugAppDomain ICorDebugAppDomain;
#ifdef __cplusplus
interface ICorDebugAppDomain;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugManagedCallback_FWD_DEFINED__
#define __ICorDebugManagedCallback_FWD_DEFINED__
typedef interface ICorDebugManagedCallback ICorDebugManagedCallback;
#ifdef __cplusplus
interface ICorDebugManagedCallback;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugManagedCallback2_FWD_DEFINED__
#define __ICorDebugManagedCallback2_FWD_DEFINED__
typedef interface ICorDebugManagedCallback2 ICorDebugManagedCallback2;
#ifdef __cplusplus
interface ICorDebugManagedCallback2;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebug_FWD_DEFINED__
#define __ICorDebug_FWD_DEFINED__
typedef interface ICorDebug ICorDebug;
#ifdef __cplusplus
interface ICorDebug;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugBreakpoint_FWD_DEFINED__
#define __ICorDebugBreakpoint_FWD_DEFINED__
typedef interface ICorDebugBreakpoint ICorDebugBreakpoint;
#ifdef __cplusplus
interface ICorDebugBreakpoint;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFunctionBreakpoint_FWD_DEFINED__
#define __ICorDebugFunctionBreakpoint_FWD_DEFINED__
typedef interface ICorDebugFunctionBreakpoint ICorDebugFunctionBreakpoint;
#ifdef __cplusplus
interface ICorDebugFunctionBreakpoint;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugModuleBreakpoint_FWD_DEFINED__
#define __ICorDebugModuleBreakpoint_FWD_DEFINED__
typedef interface ICorDebugModuleBreakpoint ICorDebugModuleBreakpoint;
#ifdef __cplusplus
interface ICorDebugModuleBreakpoint;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugValueBreakpoint_FWD_DEFINED__
#define __ICorDebugValueBreakpoint_FWD_DEFINED__
typedef interface ICorDebugValueBreakpoint ICorDebugValueBreakpoint;
#ifdef __cplusplus
interface ICorDebugValueBreakpoint;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugStepper_FWD_DEFINED__
#define __ICorDebugStepper_FWD_DEFINED__
typedef interface ICorDebugStepper ICorDebugStepper;
#ifdef __cplusplus
interface ICorDebugStepper;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEnum_FWD_DEFINED__
#define __ICorDebugEnum_FWD_DEFINED__
typedef interface ICorDebugEnum ICorDebugEnum;
#ifdef __cplusplus
interface ICorDebugEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugAppDomainEnum_FWD_DEFINED__
#define __ICorDebugAppDomainEnum_FWD_DEFINED__
typedef interface ICorDebugAppDomainEnum ICorDebugAppDomainEnum;
#ifdef __cplusplus
interface ICorDebugAppDomainEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugAssemblyEnum_FWD_DEFINED__
#define __ICorDebugAssemblyEnum_FWD_DEFINED__
typedef interface ICorDebugAssemblyEnum ICorDebugAssemblyEnum;
#ifdef __cplusplus
interface ICorDebugAssemblyEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugBreakpointEnum_FWD_DEFINED__
#define __ICorDebugBreakpointEnum_FWD_DEFINED__
typedef interface ICorDebugBreakpointEnum ICorDebugBreakpointEnum;
#ifdef __cplusplus
interface ICorDebugBreakpointEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugChainEnum_FWD_DEFINED__
#define __ICorDebugChainEnum_FWD_DEFINED__
typedef interface ICorDebugChainEnum ICorDebugChainEnum;
#ifdef __cplusplus
interface ICorDebugChainEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugErrorInfoEnum_FWD_DEFINED__
#define __ICorDebugErrorInfoEnum_FWD_DEFINED__
typedef interface ICorDebugErrorInfoEnum ICorDebugErrorInfoEnum;
#ifdef __cplusplus
interface ICorDebugErrorInfoEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFrameEnum_FWD_DEFINED__
#define __ICorDebugFrameEnum_FWD_DEFINED__
typedef interface ICorDebugFrameEnum ICorDebugFrameEnum;
#ifdef __cplusplus
interface ICorDebugFrameEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugModuleEnum_FWD_DEFINED__
#define __ICorDebugModuleEnum_FWD_DEFINED__
typedef interface ICorDebugModuleEnum ICorDebugModuleEnum;
#ifdef __cplusplus
interface ICorDebugModuleEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugObjectEnum_FWD_DEFINED__
#define __ICorDebugObjectEnum_FWD_DEFINED__
typedef interface ICorDebugObjectEnum ICorDebugObjectEnum;
#ifdef __cplusplus
interface ICorDebugObjectEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugProcessEnum_FWD_DEFINED__
#define __ICorDebugProcessEnum_FWD_DEFINED__
typedef interface ICorDebugProcessEnum ICorDebugProcessEnum;
#ifdef __cplusplus
interface ICorDebugProcessEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugStepperEnum_FWD_DEFINED__
#define __ICorDebugStepperEnum_FWD_DEFINED__
typedef interface ICorDebugStepperEnum ICorDebugStepperEnum;
#ifdef __cplusplus
interface ICorDebugStepperEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugThreadEnum_FWD_DEFINED__
#define __ICorDebugThreadEnum_FWD_DEFINED__
typedef interface ICorDebugThreadEnum ICorDebugThreadEnum;
#ifdef __cplusplus
interface ICorDebugThreadEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugChain_FWD_DEFINED__
#define __ICorDebugChain_FWD_DEFINED__
typedef interface ICorDebugChain ICorDebugChain;
#ifdef __cplusplus
interface ICorDebugChain;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFrame_FWD_DEFINED__
#define __ICorDebugFrame_FWD_DEFINED__
typedef interface ICorDebugFrame ICorDebugFrame;
#ifdef __cplusplus
interface ICorDebugFrame;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugRegisterSet_FWD_DEFINED__
#define __ICorDebugRegisterSet_FWD_DEFINED__
typedef interface ICorDebugRegisterSet ICorDebugRegisterSet;
#ifdef __cplusplus
interface ICorDebugRegisterSet;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEval_FWD_DEFINED__
#define __ICorDebugEval_FWD_DEFINED__
typedef interface ICorDebugEval ICorDebugEval;
#ifdef __cplusplus
interface ICorDebugEval;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEditAndContinueSnapshot_FWD_DEFINED__
#define __ICorDebugEditAndContinueSnapshot_FWD_DEFINED__
typedef interface ICorDebugEditAndContinueSnapshot ICorDebugEditAndContinueSnapshot;
#ifdef __cplusplus
interface ICorDebugEditAndContinueSnapshot;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugModule_FWD_DEFINED__
#define __ICorDebugModule_FWD_DEFINED__
typedef interface ICorDebugModule ICorDebugModule;
#ifdef __cplusplus
interface ICorDebugModule;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugClass_FWD_DEFINED__
#define __ICorDebugClass_FWD_DEFINED__
typedef interface ICorDebugClass ICorDebugClass;
#ifdef __cplusplus
interface ICorDebugClass;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugAssembly_FWD_DEFINED__
#define __ICorDebugAssembly_FWD_DEFINED__
typedef interface ICorDebugAssembly ICorDebugAssembly;
#ifdef __cplusplus
interface ICorDebugAssembly;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFunction_FWD_DEFINED__
#define __ICorDebugFunction_FWD_DEFINED__
typedef interface ICorDebugFunction ICorDebugFunction;
#ifdef __cplusplus
interface ICorDebugFunction;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugUnmanagedCallback_FWD_DEFINED__
#define __ICorDebugUnmanagedCallback_FWD_DEFINED__
typedef interface ICorDebugUnmanagedCallback ICorDebugUnmanagedCallback;
#ifdef __cplusplus
interface ICorDebugUnmanagedCallback;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEditAndContinueErrorInfo_FWD_DEFINED__
#define __ICorDebugEditAndContinueErrorInfo_FWD_DEFINED__
typedef interface ICorDebugEditAndContinueErrorInfo ICorDebugEditAndContinueErrorInfo;
#ifdef __cplusplus
interface ICorDebugEditAndContinueErrorInfo;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugObjectValue_FWD_DEFINED__
#define __ICorDebugObjectValue_FWD_DEFINED__
typedef interface ICorDebugObjectValue ICorDebugObjectValue;
#ifdef __cplusplus
interface ICorDebugObjectValue;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugContext_FWD_DEFINED__
#define __ICorDebugContext_FWD_DEFINED__
typedef interface ICorDebugContext ICorDebugContext;
#ifdef __cplusplus
interface ICorDebugContext;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugCode_FWD_DEFINED__
#define __ICorDebugCode_FWD_DEFINED__
typedef interface ICorDebugCode ICorDebugCode;
#ifdef __cplusplus
interface ICorDebugCode;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugMDA_FWD_DEFINED__
#define __ICorDebugMDA_FWD_DEFINED__
typedef interface ICorDebugMDA ICorDebugMDA;
#ifdef __cplusplus
interface ICorDebugMDA;
#endif /* __cplusplus */
#endif

/* Headers for imported files */

#include <unknwn.h>
#include <objidl.h>

#ifdef __cplusplus
extern "C" {
#endif

#ifdef WINE_NO_UNICODE_MACROS
#undef CreateProcess
#endif
#ifndef __ICorDebugAppDomain_FWD_DEFINED__
#define __ICorDebugAppDomain_FWD_DEFINED__
typedef interface ICorDebugAppDomain ICorDebugAppDomain;
#ifdef __cplusplus
interface ICorDebugAppDomain;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugAppDomainEnum_FWD_DEFINED__
#define __ICorDebugAppDomainEnum_FWD_DEFINED__
typedef interface ICorDebugAppDomainEnum ICorDebugAppDomainEnum;
#ifdef __cplusplus
interface ICorDebugAppDomainEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugAssembly_FWD_DEFINED__
#define __ICorDebugAssembly_FWD_DEFINED__
typedef interface ICorDebugAssembly ICorDebugAssembly;
#ifdef __cplusplus
interface ICorDebugAssembly;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugAssemblyEnum_FWD_DEFINED__
#define __ICorDebugAssemblyEnum_FWD_DEFINED__
typedef interface ICorDebugAssemblyEnum ICorDebugAssemblyEnum;
#ifdef __cplusplus
interface ICorDebugAssemblyEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugBreakpoint_FWD_DEFINED__
#define __ICorDebugBreakpoint_FWD_DEFINED__
typedef interface ICorDebugBreakpoint ICorDebugBreakpoint;
#ifdef __cplusplus
interface ICorDebugBreakpoint;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugBreakpointEnum_FWD_DEFINED__
#define __ICorDebugBreakpointEnum_FWD_DEFINED__
typedef interface ICorDebugBreakpointEnum ICorDebugBreakpointEnum;
#ifdef __cplusplus
interface ICorDebugBreakpointEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugChain_FWD_DEFINED__
#define __ICorDebugChain_FWD_DEFINED__
typedef interface ICorDebugChain ICorDebugChain;
#ifdef __cplusplus
interface ICorDebugChain;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugChainEnum_FWD_DEFINED__
#define __ICorDebugChainEnum_FWD_DEFINED__
typedef interface ICorDebugChainEnum ICorDebugChainEnum;
#ifdef __cplusplus
interface ICorDebugChainEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugClass_FWD_DEFINED__
#define __ICorDebugClass_FWD_DEFINED__
typedef interface ICorDebugClass ICorDebugClass;
#ifdef __cplusplus
interface ICorDebugClass;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugCode_FWD_DEFINED__
#define __ICorDebugCode_FWD_DEFINED__
typedef interface ICorDebugCode ICorDebugCode;
#ifdef __cplusplus
interface ICorDebugCode;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugContext_FWD_DEFINED__
#define __ICorDebugContext_FWD_DEFINED__
typedef interface ICorDebugContext ICorDebugContext;
#ifdef __cplusplus
interface ICorDebugContext;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEditAndContinueSnapshot_FWD_DEFINED__
#define __ICorDebugEditAndContinueSnapshot_FWD_DEFINED__
typedef interface ICorDebugEditAndContinueSnapshot ICorDebugEditAndContinueSnapshot;
#ifdef __cplusplus
interface ICorDebugEditAndContinueSnapshot;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEditAndContinueErrorInfo_FWD_DEFINED__
#define __ICorDebugEditAndContinueErrorInfo_FWD_DEFINED__
typedef interface ICorDebugEditAndContinueErrorInfo ICorDebugEditAndContinueErrorInfo;
#ifdef __cplusplus
interface ICorDebugEditAndContinueErrorInfo;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEnum_FWD_DEFINED__
#define __ICorDebugEnum_FWD_DEFINED__
typedef interface ICorDebugEnum ICorDebugEnum;
#ifdef __cplusplus
interface ICorDebugEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugErrorInfoEnum_FWD_DEFINED__
#define __ICorDebugErrorInfoEnum_FWD_DEFINED__
typedef interface ICorDebugErrorInfoEnum ICorDebugErrorInfoEnum;
#ifdef __cplusplus
interface ICorDebugErrorInfoEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugEval_FWD_DEFINED__
#define __ICorDebugEval_FWD_DEFINED__
typedef interface ICorDebugEval ICorDebugEval;
#ifdef __cplusplus
interface ICorDebugEval;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFrame_FWD_DEFINED__
#define __ICorDebugFrame_FWD_DEFINED__
typedef interface ICorDebugFrame ICorDebugFrame;
#ifdef __cplusplus
interface ICorDebugFrame;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFrameEnum_FWD_DEFINED__
#define __ICorDebugFrameEnum_FWD_DEFINED__
typedef interface ICorDebugFrameEnum ICorDebugFrameEnum;
#ifdef __cplusplus
interface ICorDebugFrameEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFunction_FWD_DEFINED__
#define __ICorDebugFunction_FWD_DEFINED__
typedef interface ICorDebugFunction ICorDebugFunction;
#ifdef __cplusplus
interface ICorDebugFunction;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugFunctionBreakpoint_FWD_DEFINED__
#define __ICorDebugFunctionBreakpoint_FWD_DEFINED__
typedef interface ICorDebugFunctionBreakpoint ICorDebugFunctionBreakpoint;
#ifdef __cplusplus
interface ICorDebugFunctionBreakpoint;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugManagedCallback_FWD_DEFINED__
#define __ICorDebugManagedCallback_FWD_DEFINED__
typedef interface ICorDebugManagedCallback ICorDebugManagedCallback;
#ifdef __cplusplus
interface ICorDebugManagedCallback;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugManagedCallback2_FWD_DEFINED__
#define __ICorDebugManagedCallback2_FWD_DEFINED__
typedef interface ICorDebugManagedCallback2 ICorDebugManagedCallback2;
#ifdef __cplusplus
interface ICorDebugManagedCallback2;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugMDA_FWD_DEFINED__
#define __ICorDebugMDA_FWD_DEFINED__
typedef interface ICorDebugMDA ICorDebugMDA;
#ifdef __cplusplus
interface ICorDebugMDA;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugModule_FWD_DEFINED__
#define __ICorDebugModule_FWD_DEFINED__
typedef interface ICorDebugModule ICorDebugModule;
#ifdef __cplusplus
interface ICorDebugModule;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugModuleBreakpoint_FWD_DEFINED__
#define __ICorDebugModuleBreakpoint_FWD_DEFINED__
typedef interface ICorDebugModuleBreakpoint ICorDebugModuleBreakpoint;
#ifdef __cplusplus
interface ICorDebugModuleBreakpoint;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugModuleEnum_FWD_DEFINED__
#define __ICorDebugModuleEnum_FWD_DEFINED__
typedef interface ICorDebugModuleEnum ICorDebugModuleEnum;
#ifdef __cplusplus
interface ICorDebugModuleEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugObjectEnum_FWD_DEFINED__
#define __ICorDebugObjectEnum_FWD_DEFINED__
typedef interface ICorDebugObjectEnum ICorDebugObjectEnum;
#ifdef __cplusplus
interface ICorDebugObjectEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugObjectValue_FWD_DEFINED__
#define __ICorDebugObjectValue_FWD_DEFINED__
typedef interface ICorDebugObjectValue ICorDebugObjectValue;
#ifdef __cplusplus
interface ICorDebugObjectValue;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugProcess_FWD_DEFINED__
#define __ICorDebugProcess_FWD_DEFINED__
typedef interface ICorDebugProcess ICorDebugProcess;
#ifdef __cplusplus
interface ICorDebugProcess;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugProcessEnum_FWD_DEFINED__
#define __ICorDebugProcessEnum_FWD_DEFINED__
typedef interface ICorDebugProcessEnum ICorDebugProcessEnum;
#ifdef __cplusplus
interface ICorDebugProcessEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugRegisterSet_FWD_DEFINED__
#define __ICorDebugRegisterSet_FWD_DEFINED__
typedef interface ICorDebugRegisterSet ICorDebugRegisterSet;
#ifdef __cplusplus
interface ICorDebugRegisterSet;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugStepper_FWD_DEFINED__
#define __ICorDebugStepper_FWD_DEFINED__
typedef interface ICorDebugStepper ICorDebugStepper;
#ifdef __cplusplus
interface ICorDebugStepper;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugStepperEnum_FWD_DEFINED__
#define __ICorDebugStepperEnum_FWD_DEFINED__
typedef interface ICorDebugStepperEnum ICorDebugStepperEnum;
#ifdef __cplusplus
interface ICorDebugStepperEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugThreadEnum_FWD_DEFINED__
#define __ICorDebugThreadEnum_FWD_DEFINED__
typedef interface ICorDebugThreadEnum ICorDebugThreadEnum;
#ifdef __cplusplus
interface ICorDebugThreadEnum;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugUnmanagedCallback_FWD_DEFINED__
#define __ICorDebugUnmanagedCallback_FWD_DEFINED__
typedef interface ICorDebugUnmanagedCallback ICorDebugUnmanagedCallback;
#ifdef __cplusplus
interface ICorDebugUnmanagedCallback;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugValue_FWD_DEFINED__
#define __ICorDebugValue_FWD_DEFINED__
typedef interface ICorDebugValue ICorDebugValue;
#ifdef __cplusplus
interface ICorDebugValue;
#endif /* __cplusplus */
#endif

#ifndef __ICorDebugValueBreakpoint_FWD_DEFINED__
#define __ICorDebugValueBreakpoint_FWD_DEFINED__
typedef interface ICorDebugValueBreakpoint ICorDebugValueBreakpoint;
#ifdef __cplusplus
interface ICorDebugValueBreakpoint;
#endif /* __cplusplus */
#endif

typedef void *HPROCESS;
typedef void *HTHREAD;
#if 0
typedef UINT32 mdToken;
typedef mdToken mdModule;
typedef SIZE_T mdScope;
typedef mdToken mdTypeDef;
typedef mdToken mdSourceFile;
typedef mdToken mdMemberRef;
typedef mdToken mdMethodDef;
typedef mdToken mdFieldDef;
typedef mdToken mdSignature;
typedef ULONG CorElementType;
typedef SIZE_T PCCOR_SIGNATURE;
typedef SIZE_T LPDEBUG_EVENT;
typedef SIZE_T LPSTARTUPINFOW;
typedef SIZE_T LPPROCESS_INFORMATION;
#endif
typedef ULONG64 CORDB_ADDRESS;
typedef ULONG64 CORDB_REGISTER;
typedef UINT64 TASKID;
typedef DWORD CONNID;
#ifndef _COR_IL_MAP
#define _COR_IL_MAP
typedef struct _COR_IL_MAP {
    ULONG32 oldOffset;
    ULONG32 newOffset;
    BOOL fAccurate;
} COR_IL_MAP;
#endif /* _COR_IL_MAP */
#ifndef _COR_DEBUG_IL_TO_NATIVE_MAP_
#define _COR_DEBUG_IL_TO_NATIVE_MAP_
typedef enum CorDebugIlToNativeMappingTypes {
    NO_MAPPING = -1,
    PROLOG = -2,
    EPILOG = -3
} CorDebugIlToNativeMappingTypes;
typedef struct COR_DEBUG_IL_TO_NATIVE_MAP {
    ULONG32 ilOffset;
    ULONG32 nativeStartOffset;
    ULONG32 nativeEndOffset;
} COR_DEBUG_IL_TO_NATIVE_MAP;
#endif /* _COR_DEBUG_IL_TO_NATIVE_MAP_ */
typedef enum CorDebugThreadState {
    THREAD_RUN = 0,
    THREAD_SUSPEND = 1
} CorDebugThreadState;
typedef enum CorDebugCreateProcessFlags {
    DEBUG_NO_SPECIAL_OPTIONS = 0x0
} CorDebugCreateProcessFlags;
/*****************************************************************************
 * ICorDebugValue interface
 */
#ifndef __ICorDebugValue_INTERFACE_DEFINED__
#define __ICorDebugValue_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugValue, 0xcc7bcaf7, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaf7-8a68-11d2-983c-0000f808342d")
ICorDebugValue : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetType(
        CorElementType *pType) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSize(
        ULONG32 *pSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAddress(
        CORDB_ADDRESS *pAddress) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
        ICorDebugValueBreakpoint **ppBreakpoint) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugValue, 0xcc7bcaf7, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugValueVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugValue *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugValue *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugValue *This);

    /*** ICorDebugValue methods ***/
    HRESULT (STDMETHODCALLTYPE *GetType)(
        ICorDebugValue *This,
        CorElementType *pType);

    HRESULT (STDMETHODCALLTYPE *GetSize)(
        ICorDebugValue *This,
        ULONG32 *pSize);

    HRESULT (STDMETHODCALLTYPE *GetAddress)(
        ICorDebugValue *This,
        CORDB_ADDRESS *pAddress);

    HRESULT (STDMETHODCALLTYPE *CreateBreakpoint)(
        ICorDebugValue *This,
        ICorDebugValueBreakpoint **ppBreakpoint);

    END_INTERFACE
} ICorDebugValueVtbl;

interface ICorDebugValue {
    CONST_VTBL ICorDebugValueVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugValue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugValue_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugValue_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugValue methods ***/
#define ICorDebugValue_GetType(This,pType) (This)->lpVtbl->GetType(This,pType)
#define ICorDebugValue_GetSize(This,pSize) (This)->lpVtbl->GetSize(This,pSize)
#define ICorDebugValue_GetAddress(This,pAddress) (This)->lpVtbl->GetAddress(This,pAddress)
#define ICorDebugValue_CreateBreakpoint(This,ppBreakpoint) (This)->lpVtbl->CreateBreakpoint(This,ppBreakpoint)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugValue_QueryInterface(ICorDebugValue* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugValue_AddRef(ICorDebugValue* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugValue_Release(ICorDebugValue* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugValue methods ***/
static FORCEINLINE HRESULT ICorDebugValue_GetType(ICorDebugValue* This,CorElementType *pType) {
    return This->lpVtbl->GetType(This,pType);
}
static FORCEINLINE HRESULT ICorDebugValue_GetSize(ICorDebugValue* This,ULONG32 *pSize) {
    return This->lpVtbl->GetSize(This,pSize);
}
static FORCEINLINE HRESULT ICorDebugValue_GetAddress(ICorDebugValue* This,CORDB_ADDRESS *pAddress) {
    return This->lpVtbl->GetAddress(This,pAddress);
}
static FORCEINLINE HRESULT ICorDebugValue_CreateBreakpoint(ICorDebugValue* This,ICorDebugValueBreakpoint **ppBreakpoint) {
    return This->lpVtbl->CreateBreakpoint(This,ppBreakpoint);
}
#endif
#endif

#endif


#endif  /* __ICorDebugValue_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugThread interface
 */
#ifndef __ICorDebugThread_INTERFACE_DEFINED__
#define __ICorDebugThread_INTERFACE_DEFINED__

typedef enum CorDebugUserState {
    USER_STOP_REQUESTED = 0x1,
    USER_SUSPEND_REQUESTED = 0x2,
    USER_BACKGROUND = 0x4,
    USER_UNSTARTED = 0x8,
    USER_STOPPED = 0x10,
    USER_WAIT_SLEEP_JOIN = 0x20,
    USER_SUSPENDED = 0x40,
    USER_UNSAFE_POINT = 0x80
} CorDebugUserState;
DEFINE_GUID(IID_ICorDebugThread, 0x938c6d66, 0x7fb6, 0x4f69, 0xb3,0x89, 0x42,0x5b,0x89,0x87,0x32,0x9b);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("938c6d66-7fb6-4f69-b389-425b8987329b")
ICorDebugThread : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProcess(
        ICorDebugProcess **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetID(
        DWORD *pdwThreadId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHandle(
        HTHREAD *phThreadHandle) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAppDomain(
        ICorDebugAppDomain **ppAppDomain) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetDebugState(
        CorDebugThreadState state) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDebugState(
        CorDebugThreadState *pState) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetUserState(
        CorDebugUserState *pState) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentException(
        ICorDebugValue **ppExceptionObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearCurrentException(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateStepper(
        ICorDebugStepper **ppStepper) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateChains(
        ICorDebugChainEnum **ppChains) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetActiveChain(
        ICorDebugChain **ppChain) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetActiveFrame(
        ICorDebugFrame **ppFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
        ICorDebugRegisterSet **ppRegisters) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateEval(
        ICorDebugEval **ppEval) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObject(
        ICorDebugValue **ppObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugThread, 0x938c6d66, 0x7fb6, 0x4f69, 0xb3,0x89, 0x42,0x5b,0x89,0x87,0x32,0x9b)
#endif
#else
typedef struct ICorDebugThreadVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugThread *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugThread *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugThread *This);

    /*** ICorDebugThread methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProcess)(
        ICorDebugThread *This,
        ICorDebugProcess **ppProcess);

    HRESULT (STDMETHODCALLTYPE *GetID)(
        ICorDebugThread *This,
        DWORD *pdwThreadId);

    HRESULT (STDMETHODCALLTYPE *GetHandle)(
        ICorDebugThread *This,
        HTHREAD *phThreadHandle);

    HRESULT (STDMETHODCALLTYPE *GetAppDomain)(
        ICorDebugThread *This,
        ICorDebugAppDomain **ppAppDomain);

    HRESULT (STDMETHODCALLTYPE *SetDebugState)(
        ICorDebugThread *This,
        CorDebugThreadState state);

    HRESULT (STDMETHODCALLTYPE *GetDebugState)(
        ICorDebugThread *This,
        CorDebugThreadState *pState);

    HRESULT (STDMETHODCALLTYPE *GetUserState)(
        ICorDebugThread *This,
        CorDebugUserState *pState);

    HRESULT (STDMETHODCALLTYPE *GetCurrentException)(
        ICorDebugThread *This,
        ICorDebugValue **ppExceptionObject);

    HRESULT (STDMETHODCALLTYPE *ClearCurrentException)(
        ICorDebugThread *This);

    HRESULT (STDMETHODCALLTYPE *CreateStepper)(
        ICorDebugThread *This,
        ICorDebugStepper **ppStepper);

    HRESULT (STDMETHODCALLTYPE *EnumerateChains)(
        ICorDebugThread *This,
        ICorDebugChainEnum **ppChains);

    HRESULT (STDMETHODCALLTYPE *GetActiveChain)(
        ICorDebugThread *This,
        ICorDebugChain **ppChain);

    HRESULT (STDMETHODCALLTYPE *GetActiveFrame)(
        ICorDebugThread *This,
        ICorDebugFrame **ppFrame);

    HRESULT (STDMETHODCALLTYPE *GetRegisterSet)(
        ICorDebugThread *This,
        ICorDebugRegisterSet **ppRegisters);

    HRESULT (STDMETHODCALLTYPE *CreateEval)(
        ICorDebugThread *This,
        ICorDebugEval **ppEval);

    HRESULT (STDMETHODCALLTYPE *GetObject)(
        ICorDebugThread *This,
        ICorDebugValue **ppObject);

    END_INTERFACE
} ICorDebugThreadVtbl;

interface ICorDebugThread {
    CONST_VTBL ICorDebugThreadVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugThread_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugThread_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugThread_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugThread methods ***/
#define ICorDebugThread_GetProcess(This,ppProcess) (This)->lpVtbl->GetProcess(This,ppProcess)
#define ICorDebugThread_GetID(This,pdwThreadId) (This)->lpVtbl->GetID(This,pdwThreadId)
#define ICorDebugThread_GetHandle(This,phThreadHandle) (This)->lpVtbl->GetHandle(This,phThreadHandle)
#define ICorDebugThread_GetAppDomain(This,ppAppDomain) (This)->lpVtbl->GetAppDomain(This,ppAppDomain)
#define ICorDebugThread_SetDebugState(This,state) (This)->lpVtbl->SetDebugState(This,state)
#define ICorDebugThread_GetDebugState(This,pState) (This)->lpVtbl->GetDebugState(This,pState)
#define ICorDebugThread_GetUserState(This,pState) (This)->lpVtbl->GetUserState(This,pState)
#define ICorDebugThread_GetCurrentException(This,ppExceptionObject) (This)->lpVtbl->GetCurrentException(This,ppExceptionObject)
#define ICorDebugThread_ClearCurrentException(This) (This)->lpVtbl->ClearCurrentException(This)
#define ICorDebugThread_CreateStepper(This,ppStepper) (This)->lpVtbl->CreateStepper(This,ppStepper)
#define ICorDebugThread_EnumerateChains(This,ppChains) (This)->lpVtbl->EnumerateChains(This,ppChains)
#define ICorDebugThread_GetActiveChain(This,ppChain) (This)->lpVtbl->GetActiveChain(This,ppChain)
#define ICorDebugThread_GetActiveFrame(This,ppFrame) (This)->lpVtbl->GetActiveFrame(This,ppFrame)
#define ICorDebugThread_GetRegisterSet(This,ppRegisters) (This)->lpVtbl->GetRegisterSet(This,ppRegisters)
#define ICorDebugThread_CreateEval(This,ppEval) (This)->lpVtbl->CreateEval(This,ppEval)
#define ICorDebugThread_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugThread_QueryInterface(ICorDebugThread* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugThread_AddRef(ICorDebugThread* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugThread_Release(ICorDebugThread* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugThread methods ***/
static FORCEINLINE HRESULT ICorDebugThread_GetProcess(ICorDebugThread* This,ICorDebugProcess **ppProcess) {
    return This->lpVtbl->GetProcess(This,ppProcess);
}
static FORCEINLINE HRESULT ICorDebugThread_GetID(ICorDebugThread* This,DWORD *pdwThreadId) {
    return This->lpVtbl->GetID(This,pdwThreadId);
}
static FORCEINLINE HRESULT ICorDebugThread_GetHandle(ICorDebugThread* This,HTHREAD *phThreadHandle) {
    return This->lpVtbl->GetHandle(This,phThreadHandle);
}
static FORCEINLINE HRESULT ICorDebugThread_GetAppDomain(ICorDebugThread* This,ICorDebugAppDomain **ppAppDomain) {
    return This->lpVtbl->GetAppDomain(This,ppAppDomain);
}
static FORCEINLINE HRESULT ICorDebugThread_SetDebugState(ICorDebugThread* This,CorDebugThreadState state) {
    return This->lpVtbl->SetDebugState(This,state);
}
static FORCEINLINE HRESULT ICorDebugThread_GetDebugState(ICorDebugThread* This,CorDebugThreadState *pState) {
    return This->lpVtbl->GetDebugState(This,pState);
}
static FORCEINLINE HRESULT ICorDebugThread_GetUserState(ICorDebugThread* This,CorDebugUserState *pState) {
    return This->lpVtbl->GetUserState(This,pState);
}
static FORCEINLINE HRESULT ICorDebugThread_GetCurrentException(ICorDebugThread* This,ICorDebugValue **ppExceptionObject) {
    return This->lpVtbl->GetCurrentException(This,ppExceptionObject);
}
static FORCEINLINE HRESULT ICorDebugThread_ClearCurrentException(ICorDebugThread* This) {
    return This->lpVtbl->ClearCurrentException(This);
}
static FORCEINLINE HRESULT ICorDebugThread_CreateStepper(ICorDebugThread* This,ICorDebugStepper **ppStepper) {
    return This->lpVtbl->CreateStepper(This,ppStepper);
}
static FORCEINLINE HRESULT ICorDebugThread_EnumerateChains(ICorDebugThread* This,ICorDebugChainEnum **ppChains) {
    return This->lpVtbl->EnumerateChains(This,ppChains);
}
static FORCEINLINE HRESULT ICorDebugThread_GetActiveChain(ICorDebugThread* This,ICorDebugChain **ppChain) {
    return This->lpVtbl->GetActiveChain(This,ppChain);
}
static FORCEINLINE HRESULT ICorDebugThread_GetActiveFrame(ICorDebugThread* This,ICorDebugFrame **ppFrame) {
    return This->lpVtbl->GetActiveFrame(This,ppFrame);
}
static FORCEINLINE HRESULT ICorDebugThread_GetRegisterSet(ICorDebugThread* This,ICorDebugRegisterSet **ppRegisters) {
    return This->lpVtbl->GetRegisterSet(This,ppRegisters);
}
static FORCEINLINE HRESULT ICorDebugThread_CreateEval(ICorDebugThread* This,ICorDebugEval **ppEval) {
    return This->lpVtbl->CreateEval(This,ppEval);
}
static FORCEINLINE HRESULT ICorDebugThread_GetObject(ICorDebugThread* This,ICorDebugValue **ppObject) {
    return This->lpVtbl->GetObject(This,ppObject);
}
#endif
#endif

#endif


#endif  /* __ICorDebugThread_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugController interface
 */
#ifndef __ICorDebugController_INTERFACE_DEFINED__
#define __ICorDebugController_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugController, 0x3d6f5f62, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d6f5f62-7538-11d3-8d5b-00104b35e7ef")
ICorDebugController : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Stop(
        DWORD dwTimeoutIgnored) = 0;

    virtual HRESULT STDMETHODCALLTYPE Continue(
        BOOL fIsOutOfBand) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsRunning(
        BOOL *pbRunning) = 0;

    virtual HRESULT STDMETHODCALLTYPE HasQueuedCallbacks(
        ICorDebugThread *pThread,
        BOOL *pbQueued) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateThreads(
        ICorDebugThreadEnum **ppThreads) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetAllThreadsDebugState(
        CorDebugThreadState state,
        ICorDebugThread *pExceptThisThread) = 0;

    virtual HRESULT STDMETHODCALLTYPE Detach(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Terminate(
        UINT exitCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanCommitChanges(
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError) = 0;

    virtual HRESULT STDMETHODCALLTYPE CommitChanges(
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugController, 0x3d6f5f62, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef)
#endif
#else
typedef struct ICorDebugControllerVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugController *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugController *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugController *This);

    /*** ICorDebugController methods ***/
    HRESULT (STDMETHODCALLTYPE *Stop)(
        ICorDebugController *This,
        DWORD dwTimeoutIgnored);

    HRESULT (STDMETHODCALLTYPE *Continue)(
        ICorDebugController *This,
        BOOL fIsOutOfBand);

    HRESULT (STDMETHODCALLTYPE *IsRunning)(
        ICorDebugController *This,
        BOOL *pbRunning);

    HRESULT (STDMETHODCALLTYPE *HasQueuedCallbacks)(
        ICorDebugController *This,
        ICorDebugThread *pThread,
        BOOL *pbQueued);

    HRESULT (STDMETHODCALLTYPE *EnumerateThreads)(
        ICorDebugController *This,
        ICorDebugThreadEnum **ppThreads);

    HRESULT (STDMETHODCALLTYPE *SetAllThreadsDebugState)(
        ICorDebugController *This,
        CorDebugThreadState state,
        ICorDebugThread *pExceptThisThread);

    HRESULT (STDMETHODCALLTYPE *Detach)(
        ICorDebugController *This);

    HRESULT (STDMETHODCALLTYPE *Terminate)(
        ICorDebugController *This,
        UINT exitCode);

    HRESULT (STDMETHODCALLTYPE *CanCommitChanges)(
        ICorDebugController *This,
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError);

    HRESULT (STDMETHODCALLTYPE *CommitChanges)(
        ICorDebugController *This,
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError);

    END_INTERFACE
} ICorDebugControllerVtbl;

interface ICorDebugController {
    CONST_VTBL ICorDebugControllerVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugController_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugController_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugController_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugController methods ***/
#define ICorDebugController_Stop(This,dwTimeoutIgnored) (This)->lpVtbl->Stop(This,dwTimeoutIgnored)
#define ICorDebugController_Continue(This,fIsOutOfBand) (This)->lpVtbl->Continue(This,fIsOutOfBand)
#define ICorDebugController_IsRunning(This,pbRunning) (This)->lpVtbl->IsRunning(This,pbRunning)
#define ICorDebugController_HasQueuedCallbacks(This,pThread,pbQueued) (This)->lpVtbl->HasQueuedCallbacks(This,pThread,pbQueued)
#define ICorDebugController_EnumerateThreads(This,ppThreads) (This)->lpVtbl->EnumerateThreads(This,ppThreads)
#define ICorDebugController_SetAllThreadsDebugState(This,state,pExceptThisThread) (This)->lpVtbl->SetAllThreadsDebugState(This,state,pExceptThisThread)
#define ICorDebugController_Detach(This) (This)->lpVtbl->Detach(This)
#define ICorDebugController_Terminate(This,exitCode) (This)->lpVtbl->Terminate(This,exitCode)
#define ICorDebugController_CanCommitChanges(This,cSnapshots,pSnapshots,pError) (This)->lpVtbl->CanCommitChanges(This,cSnapshots,pSnapshots,pError)
#define ICorDebugController_CommitChanges(This,cSnapshots,pSnapshots,pError) (This)->lpVtbl->CommitChanges(This,cSnapshots,pSnapshots,pError)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugController_QueryInterface(ICorDebugController* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugController_AddRef(ICorDebugController* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugController_Release(ICorDebugController* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugController methods ***/
static FORCEINLINE HRESULT ICorDebugController_Stop(ICorDebugController* This,DWORD dwTimeoutIgnored) {
    return This->lpVtbl->Stop(This,dwTimeoutIgnored);
}
static FORCEINLINE HRESULT ICorDebugController_Continue(ICorDebugController* This,BOOL fIsOutOfBand) {
    return This->lpVtbl->Continue(This,fIsOutOfBand);
}
static FORCEINLINE HRESULT ICorDebugController_IsRunning(ICorDebugController* This,BOOL *pbRunning) {
    return This->lpVtbl->IsRunning(This,pbRunning);
}
static FORCEINLINE HRESULT ICorDebugController_HasQueuedCallbacks(ICorDebugController* This,ICorDebugThread *pThread,BOOL *pbQueued) {
    return This->lpVtbl->HasQueuedCallbacks(This,pThread,pbQueued);
}
static FORCEINLINE HRESULT ICorDebugController_EnumerateThreads(ICorDebugController* This,ICorDebugThreadEnum **ppThreads) {
    return This->lpVtbl->EnumerateThreads(This,ppThreads);
}
static FORCEINLINE HRESULT ICorDebugController_SetAllThreadsDebugState(ICorDebugController* This,CorDebugThreadState state,ICorDebugThread *pExceptThisThread) {
    return This->lpVtbl->SetAllThreadsDebugState(This,state,pExceptThisThread);
}
static FORCEINLINE HRESULT ICorDebugController_Detach(ICorDebugController* This) {
    return This->lpVtbl->Detach(This);
}
static FORCEINLINE HRESULT ICorDebugController_Terminate(ICorDebugController* This,UINT exitCode) {
    return This->lpVtbl->Terminate(This,exitCode);
}
static FORCEINLINE HRESULT ICorDebugController_CanCommitChanges(ICorDebugController* This,ULONG cSnapshots,ICorDebugEditAndContinueSnapshot * pSnapshots[],ICorDebugErrorInfoEnum **pError) {
    return This->lpVtbl->CanCommitChanges(This,cSnapshots,pSnapshots,pError);
}
static FORCEINLINE HRESULT ICorDebugController_CommitChanges(ICorDebugController* This,ULONG cSnapshots,ICorDebugEditAndContinueSnapshot * pSnapshots[],ICorDebugErrorInfoEnum **pError) {
    return This->lpVtbl->CommitChanges(This,cSnapshots,pSnapshots,pError);
}
#endif
#endif

#endif


#endif  /* __ICorDebugController_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugProcess interface
 */
#ifndef __ICorDebugProcess_INTERFACE_DEFINED__
#define __ICorDebugProcess_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugProcess, 0x3d6f5f64, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d6f5f64-7538-11d3-8d5b-00104b35e7ef")
ICorDebugProcess : public ICorDebugController
{
    virtual HRESULT STDMETHODCALLTYPE GetID(
        DWORD *pdwProcessId) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHandle(
        HPROCESS *phProcessHandle) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetThread(
        DWORD dwThreadId,
        ICorDebugThread **ppThread) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateObjects(
        ICorDebugObjectEnum **ppObjects) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsTransitionStub(
        CORDB_ADDRESS address,
        BOOL *pbTransitionStub) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsOSSuspended(
        DWORD threadID,
        BOOL *pbSuspended) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
        DWORD threadID,
        ULONG32 contextSize,
        BYTE context[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
        DWORD threadID,
        ULONG32 contextSize,
        BYTE context[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE ReadMemory(
        CORDB_ADDRESS address,
        DWORD size,
        BYTE buffer[],
        SIZE_T *read) = 0;

    virtual HRESULT STDMETHODCALLTYPE WriteMemory(
        CORDB_ADDRESS address,
        DWORD size,
        BYTE buffer[],
        SIZE_T *written) = 0;

    virtual HRESULT STDMETHODCALLTYPE ClearCurrentException(
        DWORD threadID) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableLogMessages(
        BOOL fOnOff) = 0;

    virtual HRESULT STDMETHODCALLTYPE ModifyLogSwitch(
        WCHAR *pLogSwitchName,
        LONG lLevel) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateAppDomains(
        ICorDebugAppDomainEnum **ppAppDomains) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObject(
        ICorDebugValue **ppObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE ThreadForFiberCookie(
        DWORD fiberCookie,
        ICorDebugThread **ppThread) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetHelperThreadID(
        DWORD *pThreadID) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugProcess, 0x3d6f5f64, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef)
#endif
#else
typedef struct ICorDebugProcessVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugProcess *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugProcess *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugProcess *This);

    /*** ICorDebugController methods ***/
    HRESULT (STDMETHODCALLTYPE *Stop)(
        ICorDebugProcess *This,
        DWORD dwTimeoutIgnored);

    HRESULT (STDMETHODCALLTYPE *Continue)(
        ICorDebugProcess *This,
        BOOL fIsOutOfBand);

    HRESULT (STDMETHODCALLTYPE *IsRunning)(
        ICorDebugProcess *This,
        BOOL *pbRunning);

    HRESULT (STDMETHODCALLTYPE *HasQueuedCallbacks)(
        ICorDebugProcess *This,
        ICorDebugThread *pThread,
        BOOL *pbQueued);

    HRESULT (STDMETHODCALLTYPE *EnumerateThreads)(
        ICorDebugProcess *This,
        ICorDebugThreadEnum **ppThreads);

    HRESULT (STDMETHODCALLTYPE *SetAllThreadsDebugState)(
        ICorDebugProcess *This,
        CorDebugThreadState state,
        ICorDebugThread *pExceptThisThread);

    HRESULT (STDMETHODCALLTYPE *Detach)(
        ICorDebugProcess *This);

    HRESULT (STDMETHODCALLTYPE *Terminate)(
        ICorDebugProcess *This,
        UINT exitCode);

    HRESULT (STDMETHODCALLTYPE *CanCommitChanges)(
        ICorDebugProcess *This,
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError);

    HRESULT (STDMETHODCALLTYPE *CommitChanges)(
        ICorDebugProcess *This,
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError);

    /*** ICorDebugProcess methods ***/
    HRESULT (STDMETHODCALLTYPE *GetID)(
        ICorDebugProcess *This,
        DWORD *pdwProcessId);

    HRESULT (STDMETHODCALLTYPE *GetHandle)(
        ICorDebugProcess *This,
        HPROCESS *phProcessHandle);

    HRESULT (STDMETHODCALLTYPE *GetThread)(
        ICorDebugProcess *This,
        DWORD dwThreadId,
        ICorDebugThread **ppThread);

    HRESULT (STDMETHODCALLTYPE *EnumerateObjects)(
        ICorDebugProcess *This,
        ICorDebugObjectEnum **ppObjects);

    HRESULT (STDMETHODCALLTYPE *IsTransitionStub)(
        ICorDebugProcess *This,
        CORDB_ADDRESS address,
        BOOL *pbTransitionStub);

    HRESULT (STDMETHODCALLTYPE *IsOSSuspended)(
        ICorDebugProcess *This,
        DWORD threadID,
        BOOL *pbSuspended);

    HRESULT (STDMETHODCALLTYPE *GetThreadContext)(
        ICorDebugProcess *This,
        DWORD threadID,
        ULONG32 contextSize,
        BYTE context[]);

    HRESULT (STDMETHODCALLTYPE *SetThreadContext)(
        ICorDebugProcess *This,
        DWORD threadID,
        ULONG32 contextSize,
        BYTE context[]);

    HRESULT (STDMETHODCALLTYPE *ReadMemory)(
        ICorDebugProcess *This,
        CORDB_ADDRESS address,
        DWORD size,
        BYTE buffer[],
        SIZE_T *read);

    HRESULT (STDMETHODCALLTYPE *WriteMemory)(
        ICorDebugProcess *This,
        CORDB_ADDRESS address,
        DWORD size,
        BYTE buffer[],
        SIZE_T *written);

    HRESULT (STDMETHODCALLTYPE *ClearCurrentException)(
        ICorDebugProcess *This,
        DWORD threadID);

    HRESULT (STDMETHODCALLTYPE *EnableLogMessages)(
        ICorDebugProcess *This,
        BOOL fOnOff);

    HRESULT (STDMETHODCALLTYPE *ModifyLogSwitch)(
        ICorDebugProcess *This,
        WCHAR *pLogSwitchName,
        LONG lLevel);

    HRESULT (STDMETHODCALLTYPE *EnumerateAppDomains)(
        ICorDebugProcess *This,
        ICorDebugAppDomainEnum **ppAppDomains);

    HRESULT (STDMETHODCALLTYPE *GetObject)(
        ICorDebugProcess *This,
        ICorDebugValue **ppObject);

    HRESULT (STDMETHODCALLTYPE *ThreadForFiberCookie)(
        ICorDebugProcess *This,
        DWORD fiberCookie,
        ICorDebugThread **ppThread);

    HRESULT (STDMETHODCALLTYPE *GetHelperThreadID)(
        ICorDebugProcess *This,
        DWORD *pThreadID);

    END_INTERFACE
} ICorDebugProcessVtbl;

interface ICorDebugProcess {
    CONST_VTBL ICorDebugProcessVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugProcess_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugProcess_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugProcess_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugController methods ***/
#define ICorDebugProcess_Stop(This,dwTimeoutIgnored) (This)->lpVtbl->Stop(This,dwTimeoutIgnored)
#define ICorDebugProcess_Continue(This,fIsOutOfBand) (This)->lpVtbl->Continue(This,fIsOutOfBand)
#define ICorDebugProcess_IsRunning(This,pbRunning) (This)->lpVtbl->IsRunning(This,pbRunning)
#define ICorDebugProcess_HasQueuedCallbacks(This,pThread,pbQueued) (This)->lpVtbl->HasQueuedCallbacks(This,pThread,pbQueued)
#define ICorDebugProcess_EnumerateThreads(This,ppThreads) (This)->lpVtbl->EnumerateThreads(This,ppThreads)
#define ICorDebugProcess_SetAllThreadsDebugState(This,state,pExceptThisThread) (This)->lpVtbl->SetAllThreadsDebugState(This,state,pExceptThisThread)
#define ICorDebugProcess_Detach(This) (This)->lpVtbl->Detach(This)
#define ICorDebugProcess_Terminate(This,exitCode) (This)->lpVtbl->Terminate(This,exitCode)
#define ICorDebugProcess_CanCommitChanges(This,cSnapshots,pSnapshots,pError) (This)->lpVtbl->CanCommitChanges(This,cSnapshots,pSnapshots,pError)
#define ICorDebugProcess_CommitChanges(This,cSnapshots,pSnapshots,pError) (This)->lpVtbl->CommitChanges(This,cSnapshots,pSnapshots,pError)
/*** ICorDebugProcess methods ***/
#define ICorDebugProcess_GetID(This,pdwProcessId) (This)->lpVtbl->GetID(This,pdwProcessId)
#define ICorDebugProcess_GetHandle(This,phProcessHandle) (This)->lpVtbl->GetHandle(This,phProcessHandle)
#define ICorDebugProcess_GetThread(This,dwThreadId,ppThread) (This)->lpVtbl->GetThread(This,dwThreadId,ppThread)
#define ICorDebugProcess_EnumerateObjects(This,ppObjects) (This)->lpVtbl->EnumerateObjects(This,ppObjects)
#define ICorDebugProcess_IsTransitionStub(This,address,pbTransitionStub) (This)->lpVtbl->IsTransitionStub(This,address,pbTransitionStub)
#define ICorDebugProcess_IsOSSuspended(This,threadID,pbSuspended) (This)->lpVtbl->IsOSSuspended(This,threadID,pbSuspended)
#define ICorDebugProcess_GetThreadContext(This,threadID,contextSize,context) (This)->lpVtbl->GetThreadContext(This,threadID,contextSize,context)
#define ICorDebugProcess_SetThreadContext(This,threadID,contextSize,context) (This)->lpVtbl->SetThreadContext(This,threadID,contextSize,context)
#define ICorDebugProcess_ReadMemory(This,address,size,buffer,read) (This)->lpVtbl->ReadMemory(This,address,size,buffer,read)
#define ICorDebugProcess_WriteMemory(This,address,size,buffer,written) (This)->lpVtbl->WriteMemory(This,address,size,buffer,written)
#define ICorDebugProcess_ClearCurrentException(This,threadID) (This)->lpVtbl->ClearCurrentException(This,threadID)
#define ICorDebugProcess_EnableLogMessages(This,fOnOff) (This)->lpVtbl->EnableLogMessages(This,fOnOff)
#define ICorDebugProcess_ModifyLogSwitch(This,pLogSwitchName,lLevel) (This)->lpVtbl->ModifyLogSwitch(This,pLogSwitchName,lLevel)
#define ICorDebugProcess_EnumerateAppDomains(This,ppAppDomains) (This)->lpVtbl->EnumerateAppDomains(This,ppAppDomains)
#define ICorDebugProcess_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
#define ICorDebugProcess_ThreadForFiberCookie(This,fiberCookie,ppThread) (This)->lpVtbl->ThreadForFiberCookie(This,fiberCookie,ppThread)
#define ICorDebugProcess_GetHelperThreadID(This,pThreadID) (This)->lpVtbl->GetHelperThreadID(This,pThreadID)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugProcess_QueryInterface(ICorDebugProcess* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugProcess_AddRef(ICorDebugProcess* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugProcess_Release(ICorDebugProcess* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugController methods ***/
static FORCEINLINE HRESULT ICorDebugProcess_Stop(ICorDebugProcess* This,DWORD dwTimeoutIgnored) {
    return This->lpVtbl->Stop(This,dwTimeoutIgnored);
}
static FORCEINLINE HRESULT ICorDebugProcess_Continue(ICorDebugProcess* This,BOOL fIsOutOfBand) {
    return This->lpVtbl->Continue(This,fIsOutOfBand);
}
static FORCEINLINE HRESULT ICorDebugProcess_IsRunning(ICorDebugProcess* This,BOOL *pbRunning) {
    return This->lpVtbl->IsRunning(This,pbRunning);
}
static FORCEINLINE HRESULT ICorDebugProcess_HasQueuedCallbacks(ICorDebugProcess* This,ICorDebugThread *pThread,BOOL *pbQueued) {
    return This->lpVtbl->HasQueuedCallbacks(This,pThread,pbQueued);
}
static FORCEINLINE HRESULT ICorDebugProcess_EnumerateThreads(ICorDebugProcess* This,ICorDebugThreadEnum **ppThreads) {
    return This->lpVtbl->EnumerateThreads(This,ppThreads);
}
static FORCEINLINE HRESULT ICorDebugProcess_SetAllThreadsDebugState(ICorDebugProcess* This,CorDebugThreadState state,ICorDebugThread *pExceptThisThread) {
    return This->lpVtbl->SetAllThreadsDebugState(This,state,pExceptThisThread);
}
static FORCEINLINE HRESULT ICorDebugProcess_Detach(ICorDebugProcess* This) {
    return This->lpVtbl->Detach(This);
}
static FORCEINLINE HRESULT ICorDebugProcess_Terminate(ICorDebugProcess* This,UINT exitCode) {
    return This->lpVtbl->Terminate(This,exitCode);
}
static FORCEINLINE HRESULT ICorDebugProcess_CanCommitChanges(ICorDebugProcess* This,ULONG cSnapshots,ICorDebugEditAndContinueSnapshot * pSnapshots[],ICorDebugErrorInfoEnum **pError) {
    return This->lpVtbl->CanCommitChanges(This,cSnapshots,pSnapshots,pError);
}
static FORCEINLINE HRESULT ICorDebugProcess_CommitChanges(ICorDebugProcess* This,ULONG cSnapshots,ICorDebugEditAndContinueSnapshot * pSnapshots[],ICorDebugErrorInfoEnum **pError) {
    return This->lpVtbl->CommitChanges(This,cSnapshots,pSnapshots,pError);
}
/*** ICorDebugProcess methods ***/
static FORCEINLINE HRESULT ICorDebugProcess_GetID(ICorDebugProcess* This,DWORD *pdwProcessId) {
    return This->lpVtbl->GetID(This,pdwProcessId);
}
static FORCEINLINE HRESULT ICorDebugProcess_GetHandle(ICorDebugProcess* This,HPROCESS *phProcessHandle) {
    return This->lpVtbl->GetHandle(This,phProcessHandle);
}
static FORCEINLINE HRESULT ICorDebugProcess_GetThread(ICorDebugProcess* This,DWORD dwThreadId,ICorDebugThread **ppThread) {
    return This->lpVtbl->GetThread(This,dwThreadId,ppThread);
}
static FORCEINLINE HRESULT ICorDebugProcess_EnumerateObjects(ICorDebugProcess* This,ICorDebugObjectEnum **ppObjects) {
    return This->lpVtbl->EnumerateObjects(This,ppObjects);
}
static FORCEINLINE HRESULT ICorDebugProcess_IsTransitionStub(ICorDebugProcess* This,CORDB_ADDRESS address,BOOL *pbTransitionStub) {
    return This->lpVtbl->IsTransitionStub(This,address,pbTransitionStub);
}
static FORCEINLINE HRESULT ICorDebugProcess_IsOSSuspended(ICorDebugProcess* This,DWORD threadID,BOOL *pbSuspended) {
    return This->lpVtbl->IsOSSuspended(This,threadID,pbSuspended);
}
static FORCEINLINE HRESULT ICorDebugProcess_GetThreadContext(ICorDebugProcess* This,DWORD threadID,ULONG32 contextSize,BYTE context[]) {
    return This->lpVtbl->GetThreadContext(This,threadID,contextSize,context);
}
static FORCEINLINE HRESULT ICorDebugProcess_SetThreadContext(ICorDebugProcess* This,DWORD threadID,ULONG32 contextSize,BYTE context[]) {
    return This->lpVtbl->SetThreadContext(This,threadID,contextSize,context);
}
static FORCEINLINE HRESULT ICorDebugProcess_ReadMemory(ICorDebugProcess* This,CORDB_ADDRESS address,DWORD size,BYTE buffer[],SIZE_T *read) {
    return This->lpVtbl->ReadMemory(This,address,size,buffer,read);
}
static FORCEINLINE HRESULT ICorDebugProcess_WriteMemory(ICorDebugProcess* This,CORDB_ADDRESS address,DWORD size,BYTE buffer[],SIZE_T *written) {
    return This->lpVtbl->WriteMemory(This,address,size,buffer,written);
}
static FORCEINLINE HRESULT ICorDebugProcess_ClearCurrentException(ICorDebugProcess* This,DWORD threadID) {
    return This->lpVtbl->ClearCurrentException(This,threadID);
}
static FORCEINLINE HRESULT ICorDebugProcess_EnableLogMessages(ICorDebugProcess* This,BOOL fOnOff) {
    return This->lpVtbl->EnableLogMessages(This,fOnOff);
}
static FORCEINLINE HRESULT ICorDebugProcess_ModifyLogSwitch(ICorDebugProcess* This,WCHAR *pLogSwitchName,LONG lLevel) {
    return This->lpVtbl->ModifyLogSwitch(This,pLogSwitchName,lLevel);
}
static FORCEINLINE HRESULT ICorDebugProcess_EnumerateAppDomains(ICorDebugProcess* This,ICorDebugAppDomainEnum **ppAppDomains) {
    return This->lpVtbl->EnumerateAppDomains(This,ppAppDomains);
}
static FORCEINLINE HRESULT ICorDebugProcess_GetObject(ICorDebugProcess* This,ICorDebugValue **ppObject) {
    return This->lpVtbl->GetObject(This,ppObject);
}
static FORCEINLINE HRESULT ICorDebugProcess_ThreadForFiberCookie(ICorDebugProcess* This,DWORD fiberCookie,ICorDebugThread **ppThread) {
    return This->lpVtbl->ThreadForFiberCookie(This,fiberCookie,ppThread);
}
static FORCEINLINE HRESULT ICorDebugProcess_GetHelperThreadID(ICorDebugProcess* This,DWORD *pThreadID) {
    return This->lpVtbl->GetHelperThreadID(This,pThreadID);
}
#endif
#endif

#endif


#endif  /* __ICorDebugProcess_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugAppDomain interface
 */
#ifndef __ICorDebugAppDomain_INTERFACE_DEFINED__
#define __ICorDebugAppDomain_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugAppDomain, 0x3d6f5f63, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d6f5f63-7538-11d3-8d5b-00104b35e7ef")
ICorDebugAppDomain : public ICorDebugController
{
    virtual HRESULT STDMETHODCALLTYPE GetProcess(
        ICorDebugProcess **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateAssemblies(
        ICorDebugAssemblyEnum **ppAssemblies) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetModuleFromMetaDataInterface(
        IUnknown *pIMetaData,
        ICorDebugModule **ppModule) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateBreakpoints(
        ICorDebugBreakpointEnum **ppBreakpoints) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateSteppers(
        ICorDebugStepperEnum **ppSteppers) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsAttached(
        BOOL *pbAttached) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetName(
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetObject(
        ICorDebugValue **ppObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE Attach(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetID(
        ULONG32 *pId) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugAppDomain, 0x3d6f5f63, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef)
#endif
#else
typedef struct ICorDebugAppDomainVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugAppDomain *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugAppDomain *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugAppDomain *This);

    /*** ICorDebugController methods ***/
    HRESULT (STDMETHODCALLTYPE *Stop)(
        ICorDebugAppDomain *This,
        DWORD dwTimeoutIgnored);

    HRESULT (STDMETHODCALLTYPE *Continue)(
        ICorDebugAppDomain *This,
        BOOL fIsOutOfBand);

    HRESULT (STDMETHODCALLTYPE *IsRunning)(
        ICorDebugAppDomain *This,
        BOOL *pbRunning);

    HRESULT (STDMETHODCALLTYPE *HasQueuedCallbacks)(
        ICorDebugAppDomain *This,
        ICorDebugThread *pThread,
        BOOL *pbQueued);

    HRESULT (STDMETHODCALLTYPE *EnumerateThreads)(
        ICorDebugAppDomain *This,
        ICorDebugThreadEnum **ppThreads);

    HRESULT (STDMETHODCALLTYPE *SetAllThreadsDebugState)(
        ICorDebugAppDomain *This,
        CorDebugThreadState state,
        ICorDebugThread *pExceptThisThread);

    HRESULT (STDMETHODCALLTYPE *Detach)(
        ICorDebugAppDomain *This);

    HRESULT (STDMETHODCALLTYPE *Terminate)(
        ICorDebugAppDomain *This,
        UINT exitCode);

    HRESULT (STDMETHODCALLTYPE *CanCommitChanges)(
        ICorDebugAppDomain *This,
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError);

    HRESULT (STDMETHODCALLTYPE *CommitChanges)(
        ICorDebugAppDomain *This,
        ULONG cSnapshots,
        ICorDebugEditAndContinueSnapshot * pSnapshots[],
        ICorDebugErrorInfoEnum **pError);

    /*** ICorDebugAppDomain methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProcess)(
        ICorDebugAppDomain *This,
        ICorDebugProcess **ppProcess);

    HRESULT (STDMETHODCALLTYPE *EnumerateAssemblies)(
        ICorDebugAppDomain *This,
        ICorDebugAssemblyEnum **ppAssemblies);

    HRESULT (STDMETHODCALLTYPE *GetModuleFromMetaDataInterface)(
        ICorDebugAppDomain *This,
        IUnknown *pIMetaData,
        ICorDebugModule **ppModule);

    HRESULT (STDMETHODCALLTYPE *EnumerateBreakpoints)(
        ICorDebugAppDomain *This,
        ICorDebugBreakpointEnum **ppBreakpoints);

    HRESULT (STDMETHODCALLTYPE *EnumerateSteppers)(
        ICorDebugAppDomain *This,
        ICorDebugStepperEnum **ppSteppers);

    HRESULT (STDMETHODCALLTYPE *IsAttached)(
        ICorDebugAppDomain *This,
        BOOL *pbAttached);

    HRESULT (STDMETHODCALLTYPE *GetName)(
        ICorDebugAppDomain *This,
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]);

    HRESULT (STDMETHODCALLTYPE *GetObject)(
        ICorDebugAppDomain *This,
        ICorDebugValue **ppObject);

    HRESULT (STDMETHODCALLTYPE *Attach)(
        ICorDebugAppDomain *This);

    HRESULT (STDMETHODCALLTYPE *GetID)(
        ICorDebugAppDomain *This,
        ULONG32 *pId);

    END_INTERFACE
} ICorDebugAppDomainVtbl;

interface ICorDebugAppDomain {
    CONST_VTBL ICorDebugAppDomainVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugAppDomain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugAppDomain_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugAppDomain_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugController methods ***/
#define ICorDebugAppDomain_Stop(This,dwTimeoutIgnored) (This)->lpVtbl->Stop(This,dwTimeoutIgnored)
#define ICorDebugAppDomain_Continue(This,fIsOutOfBand) (This)->lpVtbl->Continue(This,fIsOutOfBand)
#define ICorDebugAppDomain_IsRunning(This,pbRunning) (This)->lpVtbl->IsRunning(This,pbRunning)
#define ICorDebugAppDomain_HasQueuedCallbacks(This,pThread,pbQueued) (This)->lpVtbl->HasQueuedCallbacks(This,pThread,pbQueued)
#define ICorDebugAppDomain_EnumerateThreads(This,ppThreads) (This)->lpVtbl->EnumerateThreads(This,ppThreads)
#define ICorDebugAppDomain_SetAllThreadsDebugState(This,state,pExceptThisThread) (This)->lpVtbl->SetAllThreadsDebugState(This,state,pExceptThisThread)
#define ICorDebugAppDomain_Detach(This) (This)->lpVtbl->Detach(This)
#define ICorDebugAppDomain_Terminate(This,exitCode) (This)->lpVtbl->Terminate(This,exitCode)
#define ICorDebugAppDomain_CanCommitChanges(This,cSnapshots,pSnapshots,pError) (This)->lpVtbl->CanCommitChanges(This,cSnapshots,pSnapshots,pError)
#define ICorDebugAppDomain_CommitChanges(This,cSnapshots,pSnapshots,pError) (This)->lpVtbl->CommitChanges(This,cSnapshots,pSnapshots,pError)
/*** ICorDebugAppDomain methods ***/
#define ICorDebugAppDomain_GetProcess(This,ppProcess) (This)->lpVtbl->GetProcess(This,ppProcess)
#define ICorDebugAppDomain_EnumerateAssemblies(This,ppAssemblies) (This)->lpVtbl->EnumerateAssemblies(This,ppAssemblies)
#define ICorDebugAppDomain_GetModuleFromMetaDataInterface(This,pIMetaData,ppModule) (This)->lpVtbl->GetModuleFromMetaDataInterface(This,pIMetaData,ppModule)
#define ICorDebugAppDomain_EnumerateBreakpoints(This,ppBreakpoints) (This)->lpVtbl->EnumerateBreakpoints(This,ppBreakpoints)
#define ICorDebugAppDomain_EnumerateSteppers(This,ppSteppers) (This)->lpVtbl->EnumerateSteppers(This,ppSteppers)
#define ICorDebugAppDomain_IsAttached(This,pbAttached) (This)->lpVtbl->IsAttached(This,pbAttached)
#define ICorDebugAppDomain_GetName(This,cchName,pcchName,szName) (This)->lpVtbl->GetName(This,cchName,pcchName,szName)
#define ICorDebugAppDomain_GetObject(This,ppObject) (This)->lpVtbl->GetObject(This,ppObject)
#define ICorDebugAppDomain_Attach(This) (This)->lpVtbl->Attach(This)
#define ICorDebugAppDomain_GetID(This,pId) (This)->lpVtbl->GetID(This,pId)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugAppDomain_QueryInterface(ICorDebugAppDomain* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugAppDomain_AddRef(ICorDebugAppDomain* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugAppDomain_Release(ICorDebugAppDomain* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugController methods ***/
static FORCEINLINE HRESULT ICorDebugAppDomain_Stop(ICorDebugAppDomain* This,DWORD dwTimeoutIgnored) {
    return This->lpVtbl->Stop(This,dwTimeoutIgnored);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_Continue(ICorDebugAppDomain* This,BOOL fIsOutOfBand) {
    return This->lpVtbl->Continue(This,fIsOutOfBand);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_IsRunning(ICorDebugAppDomain* This,BOOL *pbRunning) {
    return This->lpVtbl->IsRunning(This,pbRunning);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_HasQueuedCallbacks(ICorDebugAppDomain* This,ICorDebugThread *pThread,BOOL *pbQueued) {
    return This->lpVtbl->HasQueuedCallbacks(This,pThread,pbQueued);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_EnumerateThreads(ICorDebugAppDomain* This,ICorDebugThreadEnum **ppThreads) {
    return This->lpVtbl->EnumerateThreads(This,ppThreads);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_SetAllThreadsDebugState(ICorDebugAppDomain* This,CorDebugThreadState state,ICorDebugThread *pExceptThisThread) {
    return This->lpVtbl->SetAllThreadsDebugState(This,state,pExceptThisThread);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_Detach(ICorDebugAppDomain* This) {
    return This->lpVtbl->Detach(This);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_Terminate(ICorDebugAppDomain* This,UINT exitCode) {
    return This->lpVtbl->Terminate(This,exitCode);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_CanCommitChanges(ICorDebugAppDomain* This,ULONG cSnapshots,ICorDebugEditAndContinueSnapshot * pSnapshots[],ICorDebugErrorInfoEnum **pError) {
    return This->lpVtbl->CanCommitChanges(This,cSnapshots,pSnapshots,pError);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_CommitChanges(ICorDebugAppDomain* This,ULONG cSnapshots,ICorDebugEditAndContinueSnapshot * pSnapshots[],ICorDebugErrorInfoEnum **pError) {
    return This->lpVtbl->CommitChanges(This,cSnapshots,pSnapshots,pError);
}
/*** ICorDebugAppDomain methods ***/
static FORCEINLINE HRESULT ICorDebugAppDomain_GetProcess(ICorDebugAppDomain* This,ICorDebugProcess **ppProcess) {
    return This->lpVtbl->GetProcess(This,ppProcess);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_EnumerateAssemblies(ICorDebugAppDomain* This,ICorDebugAssemblyEnum **ppAssemblies) {
    return This->lpVtbl->EnumerateAssemblies(This,ppAssemblies);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_GetModuleFromMetaDataInterface(ICorDebugAppDomain* This,IUnknown *pIMetaData,ICorDebugModule **ppModule) {
    return This->lpVtbl->GetModuleFromMetaDataInterface(This,pIMetaData,ppModule);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_EnumerateBreakpoints(ICorDebugAppDomain* This,ICorDebugBreakpointEnum **ppBreakpoints) {
    return This->lpVtbl->EnumerateBreakpoints(This,ppBreakpoints);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_EnumerateSteppers(ICorDebugAppDomain* This,ICorDebugStepperEnum **ppSteppers) {
    return This->lpVtbl->EnumerateSteppers(This,ppSteppers);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_IsAttached(ICorDebugAppDomain* This,BOOL *pbAttached) {
    return This->lpVtbl->IsAttached(This,pbAttached);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_GetName(ICorDebugAppDomain* This,ULONG32 cchName,ULONG32 *pcchName,WCHAR szName[]) {
    return This->lpVtbl->GetName(This,cchName,pcchName,szName);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_GetObject(ICorDebugAppDomain* This,ICorDebugValue **ppObject) {
    return This->lpVtbl->GetObject(This,ppObject);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_Attach(ICorDebugAppDomain* This) {
    return This->lpVtbl->Attach(This);
}
static FORCEINLINE HRESULT ICorDebugAppDomain_GetID(ICorDebugAppDomain* This,ULONG32 *pId) {
    return This->lpVtbl->GetID(This,pId);
}
#endif
#endif

#endif


#endif  /* __ICorDebugAppDomain_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugManagedCallback interface
 */
#ifndef __ICorDebugManagedCallback_INTERFACE_DEFINED__
#define __ICorDebugManagedCallback_INTERFACE_DEFINED__

typedef enum CorDebugStepReason {
    STEP_NORMAL = 0,
    STEP_RETURN = 1,
    STEP_CALL = 2,
    STEP_EXCEPTION_FILTER = 3,
    STEP_EXCEPTION_HANDLER = 4,
    STEP_INTERCEPT = 5,
    STEP_EXIT = 6
} CorDebugStepReason;
typedef enum LoggingLevelEnum {
    LTraceLevel0 = 0,
    LTraceLevel1 = 1,
    LTraceLevel2 = 2,
    LTraceLevel3 = 3,
    LTraceLevel4 = 4,
    LStatusLevel0 = 20,
    LStatusLevel1 = 21,
    LStatusLevel2 = 22,
    LStatusLevel3 = 23,
    LStatusLevel4 = 24,
    LWarningLevel = 40,
    LErrorLevel = 50,
    LPanicLevel = 100
} LoggingLevelEnum;
typedef enum LogSwitchCallReason {
    SWITCH_CREATE = 0,
    SWITCH_MODIFY = 1,
    SWITCH_DELETE = 2
} LogSwitchCallReason;
DEFINE_GUID(IID_ICorDebugManagedCallback, 0x3d6f5f60, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d6f5f60-7538-11d3-8d5b-00104b35e7ef")
ICorDebugManagedCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Breakpoint(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugBreakpoint *pBreakpoint) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepComplete(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugStepper *pStepper,
        CorDebugStepReason reason) = 0;

    virtual HRESULT STDMETHODCALLTYPE Break(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *thread) = 0;

    virtual HRESULT STDMETHODCALLTYPE Exception(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        BOOL unhandled) = 0;

    virtual HRESULT STDMETHODCALLTYPE EvalComplete(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugEval *pEval) = 0;

    virtual HRESULT STDMETHODCALLTYPE EvalException(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugEval *pEval) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateProcess(
        ICorDebugProcess *pProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExitProcess(
        ICorDebugProcess *pProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateThread(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *thread) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExitThread(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *thread) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadModule(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugModule *pModule) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnloadModule(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugModule *pModule) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadClass(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugClass *c) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnloadClass(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugClass *c) = 0;

    virtual HRESULT STDMETHODCALLTYPE DebuggerError(
        ICorDebugProcess *pProcess,
        HRESULT errorHR,
        DWORD errorCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE LogMessage(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        LONG lLevel,
        WCHAR *pLogSwitchName,
        WCHAR *pMessage) = 0;

    virtual HRESULT STDMETHODCALLTYPE LogSwitch(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        LONG lLevel,
        ULONG ulReason,
        WCHAR *pLogSwitchName,
        WCHAR *pParentName) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateAppDomain(
        ICorDebugProcess *pProcess,
        ICorDebugAppDomain *pAppDomain) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExitAppDomain(
        ICorDebugProcess *pProcess,
        ICorDebugAppDomain *pAppDomain) = 0;

    virtual HRESULT STDMETHODCALLTYPE LoadAssembly(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugAssembly *pAssembly) = 0;

    virtual HRESULT STDMETHODCALLTYPE UnloadAssembly(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugAssembly *pAssembly) = 0;

    virtual HRESULT STDMETHODCALLTYPE ControlCTrap(
        ICorDebugProcess *pProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE NameChange(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread) = 0;

    virtual HRESULT STDMETHODCALLTYPE UpdateModuleSymbols(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugModule *pModule,
        IStream *pSymbolStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE EditAndContinueRemap(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFunction *pFunction,
        BOOL fAccurate) = 0;

    virtual HRESULT STDMETHODCALLTYPE BreakpointSetError(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugBreakpoint *pBreakpoint,
        DWORD dwError) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugManagedCallback, 0x3d6f5f60, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef)
#endif
#else
typedef struct ICorDebugManagedCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugManagedCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugManagedCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugManagedCallback *This);

    /*** ICorDebugManagedCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *Breakpoint)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugBreakpoint *pBreakpoint);

    HRESULT (STDMETHODCALLTYPE *StepComplete)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugStepper *pStepper,
        CorDebugStepReason reason);

    HRESULT (STDMETHODCALLTYPE *Break)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *thread);

    HRESULT (STDMETHODCALLTYPE *Exception)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        BOOL unhandled);

    HRESULT (STDMETHODCALLTYPE *EvalComplete)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugEval *pEval);

    HRESULT (STDMETHODCALLTYPE *EvalException)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugEval *pEval);

    HRESULT (STDMETHODCALLTYPE *CreateProcess)(
        ICorDebugManagedCallback *This,
        ICorDebugProcess *pProcess);

    HRESULT (STDMETHODCALLTYPE *ExitProcess)(
        ICorDebugManagedCallback *This,
        ICorDebugProcess *pProcess);

    HRESULT (STDMETHODCALLTYPE *CreateThread)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *thread);

    HRESULT (STDMETHODCALLTYPE *ExitThread)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *thread);

    HRESULT (STDMETHODCALLTYPE *LoadModule)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugModule *pModule);

    HRESULT (STDMETHODCALLTYPE *UnloadModule)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugModule *pModule);

    HRESULT (STDMETHODCALLTYPE *LoadClass)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugClass *c);

    HRESULT (STDMETHODCALLTYPE *UnloadClass)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugClass *c);

    HRESULT (STDMETHODCALLTYPE *DebuggerError)(
        ICorDebugManagedCallback *This,
        ICorDebugProcess *pProcess,
        HRESULT errorHR,
        DWORD errorCode);

    HRESULT (STDMETHODCALLTYPE *LogMessage)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        LONG lLevel,
        WCHAR *pLogSwitchName,
        WCHAR *pMessage);

    HRESULT (STDMETHODCALLTYPE *LogSwitch)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        LONG lLevel,
        ULONG ulReason,
        WCHAR *pLogSwitchName,
        WCHAR *pParentName);

    HRESULT (STDMETHODCALLTYPE *CreateAppDomain)(
        ICorDebugManagedCallback *This,
        ICorDebugProcess *pProcess,
        ICorDebugAppDomain *pAppDomain);

    HRESULT (STDMETHODCALLTYPE *ExitAppDomain)(
        ICorDebugManagedCallback *This,
        ICorDebugProcess *pProcess,
        ICorDebugAppDomain *pAppDomain);

    HRESULT (STDMETHODCALLTYPE *LoadAssembly)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugAssembly *pAssembly);

    HRESULT (STDMETHODCALLTYPE *UnloadAssembly)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugAssembly *pAssembly);

    HRESULT (STDMETHODCALLTYPE *ControlCTrap)(
        ICorDebugManagedCallback *This,
        ICorDebugProcess *pProcess);

    HRESULT (STDMETHODCALLTYPE *NameChange)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread);

    HRESULT (STDMETHODCALLTYPE *UpdateModuleSymbols)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugModule *pModule,
        IStream *pSymbolStream);

    HRESULT (STDMETHODCALLTYPE *EditAndContinueRemap)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFunction *pFunction,
        BOOL fAccurate);

    HRESULT (STDMETHODCALLTYPE *BreakpointSetError)(
        ICorDebugManagedCallback *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugBreakpoint *pBreakpoint,
        DWORD dwError);

    END_INTERFACE
} ICorDebugManagedCallbackVtbl;

interface ICorDebugManagedCallback {
    CONST_VTBL ICorDebugManagedCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugManagedCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugManagedCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugManagedCallback_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugManagedCallback methods ***/
#define ICorDebugManagedCallback_Breakpoint(This,pAppDomain,pThread,pBreakpoint) (This)->lpVtbl->Breakpoint(This,pAppDomain,pThread,pBreakpoint)
#define ICorDebugManagedCallback_StepComplete(This,pAppDomain,pThread,pStepper,reason) (This)->lpVtbl->StepComplete(This,pAppDomain,pThread,pStepper,reason)
#define ICorDebugManagedCallback_Break(This,pAppDomain,thread) (This)->lpVtbl->Break(This,pAppDomain,thread)
#define ICorDebugManagedCallback_Exception(This,pAppDomain,pThread,unhandled) (This)->lpVtbl->Exception(This,pAppDomain,pThread,unhandled)
#define ICorDebugManagedCallback_EvalComplete(This,pAppDomain,pThread,pEval) (This)->lpVtbl->EvalComplete(This,pAppDomain,pThread,pEval)
#define ICorDebugManagedCallback_EvalException(This,pAppDomain,pThread,pEval) (This)->lpVtbl->EvalException(This,pAppDomain,pThread,pEval)
#define ICorDebugManagedCallback_CreateProcess(This,pProcess) (This)->lpVtbl->CreateProcess(This,pProcess)
#define ICorDebugManagedCallback_ExitProcess(This,pProcess) (This)->lpVtbl->ExitProcess(This,pProcess)
#define ICorDebugManagedCallback_CreateThread(This,pAppDomain,thread) (This)->lpVtbl->CreateThread(This,pAppDomain,thread)
#define ICorDebugManagedCallback_ExitThread(This,pAppDomain,thread) (This)->lpVtbl->ExitThread(This,pAppDomain,thread)
#define ICorDebugManagedCallback_LoadModule(This,pAppDomain,pModule) (This)->lpVtbl->LoadModule(This,pAppDomain,pModule)
#define ICorDebugManagedCallback_UnloadModule(This,pAppDomain,pModule) (This)->lpVtbl->UnloadModule(This,pAppDomain,pModule)
#define ICorDebugManagedCallback_LoadClass(This,pAppDomain,c) (This)->lpVtbl->LoadClass(This,pAppDomain,c)
#define ICorDebugManagedCallback_UnloadClass(This,pAppDomain,c) (This)->lpVtbl->UnloadClass(This,pAppDomain,c)
#define ICorDebugManagedCallback_DebuggerError(This,pProcess,errorHR,errorCode) (This)->lpVtbl->DebuggerError(This,pProcess,errorHR,errorCode)
#define ICorDebugManagedCallback_LogMessage(This,pAppDomain,pThread,lLevel,pLogSwitchName,pMessage) (This)->lpVtbl->LogMessage(This,pAppDomain,pThread,lLevel,pLogSwitchName,pMessage)
#define ICorDebugManagedCallback_LogSwitch(This,pAppDomain,pThread,lLevel,ulReason,pLogSwitchName,pParentName) (This)->lpVtbl->LogSwitch(This,pAppDomain,pThread,lLevel,ulReason,pLogSwitchName,pParentName)
#define ICorDebugManagedCallback_CreateAppDomain(This,pProcess,pAppDomain) (This)->lpVtbl->CreateAppDomain(This,pProcess,pAppDomain)
#define ICorDebugManagedCallback_ExitAppDomain(This,pProcess,pAppDomain) (This)->lpVtbl->ExitAppDomain(This,pProcess,pAppDomain)
#define ICorDebugManagedCallback_LoadAssembly(This,pAppDomain,pAssembly) (This)->lpVtbl->LoadAssembly(This,pAppDomain,pAssembly)
#define ICorDebugManagedCallback_UnloadAssembly(This,pAppDomain,pAssembly) (This)->lpVtbl->UnloadAssembly(This,pAppDomain,pAssembly)
#define ICorDebugManagedCallback_ControlCTrap(This,pProcess) (This)->lpVtbl->ControlCTrap(This,pProcess)
#define ICorDebugManagedCallback_NameChange(This,pAppDomain,pThread) (This)->lpVtbl->NameChange(This,pAppDomain,pThread)
#define ICorDebugManagedCallback_UpdateModuleSymbols(This,pAppDomain,pModule,pSymbolStream) (This)->lpVtbl->UpdateModuleSymbols(This,pAppDomain,pModule,pSymbolStream)
#define ICorDebugManagedCallback_EditAndContinueRemap(This,pAppDomain,pThread,pFunction,fAccurate) (This)->lpVtbl->EditAndContinueRemap(This,pAppDomain,pThread,pFunction,fAccurate)
#define ICorDebugManagedCallback_BreakpointSetError(This,pAppDomain,pThread,pBreakpoint,dwError) (This)->lpVtbl->BreakpointSetError(This,pAppDomain,pThread,pBreakpoint,dwError)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugManagedCallback_QueryInterface(ICorDebugManagedCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugManagedCallback_AddRef(ICorDebugManagedCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugManagedCallback_Release(ICorDebugManagedCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugManagedCallback methods ***/
static FORCEINLINE HRESULT ICorDebugManagedCallback_Breakpoint(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugBreakpoint *pBreakpoint) {
    return This->lpVtbl->Breakpoint(This,pAppDomain,pThread,pBreakpoint);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_StepComplete(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugStepper *pStepper,CorDebugStepReason reason) {
    return This->lpVtbl->StepComplete(This,pAppDomain,pThread,pStepper,reason);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_Break(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *thread) {
    return This->lpVtbl->Break(This,pAppDomain,thread);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_Exception(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,BOOL unhandled) {
    return This->lpVtbl->Exception(This,pAppDomain,pThread,unhandled);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_EvalComplete(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugEval *pEval) {
    return This->lpVtbl->EvalComplete(This,pAppDomain,pThread,pEval);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_EvalException(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugEval *pEval) {
    return This->lpVtbl->EvalException(This,pAppDomain,pThread,pEval);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_CreateProcess(ICorDebugManagedCallback* This,ICorDebugProcess *pProcess) {
    return This->lpVtbl->CreateProcess(This,pProcess);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_ExitProcess(ICorDebugManagedCallback* This,ICorDebugProcess *pProcess) {
    return This->lpVtbl->ExitProcess(This,pProcess);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_CreateThread(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *thread) {
    return This->lpVtbl->CreateThread(This,pAppDomain,thread);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_ExitThread(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *thread) {
    return This->lpVtbl->ExitThread(This,pAppDomain,thread);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_LoadModule(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugModule *pModule) {
    return This->lpVtbl->LoadModule(This,pAppDomain,pModule);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_UnloadModule(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugModule *pModule) {
    return This->lpVtbl->UnloadModule(This,pAppDomain,pModule);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_LoadClass(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugClass *c) {
    return This->lpVtbl->LoadClass(This,pAppDomain,c);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_UnloadClass(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugClass *c) {
    return This->lpVtbl->UnloadClass(This,pAppDomain,c);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_DebuggerError(ICorDebugManagedCallback* This,ICorDebugProcess *pProcess,HRESULT errorHR,DWORD errorCode) {
    return This->lpVtbl->DebuggerError(This,pProcess,errorHR,errorCode);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_LogMessage(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,LONG lLevel,WCHAR *pLogSwitchName,WCHAR *pMessage) {
    return This->lpVtbl->LogMessage(This,pAppDomain,pThread,lLevel,pLogSwitchName,pMessage);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_LogSwitch(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,LONG lLevel,ULONG ulReason,WCHAR *pLogSwitchName,WCHAR *pParentName) {
    return This->lpVtbl->LogSwitch(This,pAppDomain,pThread,lLevel,ulReason,pLogSwitchName,pParentName);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_CreateAppDomain(ICorDebugManagedCallback* This,ICorDebugProcess *pProcess,ICorDebugAppDomain *pAppDomain) {
    return This->lpVtbl->CreateAppDomain(This,pProcess,pAppDomain);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_ExitAppDomain(ICorDebugManagedCallback* This,ICorDebugProcess *pProcess,ICorDebugAppDomain *pAppDomain) {
    return This->lpVtbl->ExitAppDomain(This,pProcess,pAppDomain);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_LoadAssembly(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugAssembly *pAssembly) {
    return This->lpVtbl->LoadAssembly(This,pAppDomain,pAssembly);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_UnloadAssembly(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugAssembly *pAssembly) {
    return This->lpVtbl->UnloadAssembly(This,pAppDomain,pAssembly);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_ControlCTrap(ICorDebugManagedCallback* This,ICorDebugProcess *pProcess) {
    return This->lpVtbl->ControlCTrap(This,pProcess);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_NameChange(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread) {
    return This->lpVtbl->NameChange(This,pAppDomain,pThread);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_UpdateModuleSymbols(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugModule *pModule,IStream *pSymbolStream) {
    return This->lpVtbl->UpdateModuleSymbols(This,pAppDomain,pModule,pSymbolStream);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_EditAndContinueRemap(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugFunction *pFunction,BOOL fAccurate) {
    return This->lpVtbl->EditAndContinueRemap(This,pAppDomain,pThread,pFunction,fAccurate);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback_BreakpointSetError(ICorDebugManagedCallback* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugBreakpoint *pBreakpoint,DWORD dwError) {
    return This->lpVtbl->BreakpointSetError(This,pAppDomain,pThread,pBreakpoint,dwError);
}
#endif
#endif

#endif


#endif  /* __ICorDebugManagedCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugManagedCallback2 interface
 */
#ifndef __ICorDebugManagedCallback2_INTERFACE_DEFINED__
#define __ICorDebugManagedCallback2_INTERFACE_DEFINED__

typedef enum CorDebugExceptionCallbackType {
    DEBUG_EXCEPTION_FIRST_CHANCE = 1,
    DEBUG_EXCEPTION_USER_FIRST_CHANCE = 2,
    DEBUG_EXCEPTION_CATCH_HANDLER_FOUND = 3,
    DEBUG_EXCEPTION_UNHANDLED = 4
} CorDebugExceptionCallbackType;
typedef enum CorDebugExceptionFlags {
    DEBUG_EXCEPTION_CAN_BE_INTERCEPTED = 0x1
} CorDebugExceptionFlags;
typedef enum CorDebugExceptionUnwindCallbackType {
    DEBUG_EXCEPTION_UNWIND_BEGIN = 1,
    DEBUG_EXCEPTION_INTERCEPTED = 2
} CorDebugExceptionUnwindCallbackType;
DEFINE_GUID(IID_ICorDebugManagedCallback2, 0x250e5eea, 0xdb5c, 0x4c76, 0xb6,0xf3, 0x8c,0x46,0xf1,0x2e,0x32,0x03);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("250e5eea-db5c-4c76-b6f3-8c46f12e3203")
ICorDebugManagedCallback2 : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE FunctionRemapOpportunity(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFunction *pOldFunction,
        ICorDebugFunction *pNewFunction,
        ULONG32 oldILOffset) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateConnection(
        ICorDebugProcess *pProcess,
        CONNID dwConnectionId,
        WCHAR *pConnName) = 0;

    virtual HRESULT STDMETHODCALLTYPE ChangeConnection(
        ICorDebugProcess *pProcess,
        CONNID dwConnectionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE DestroyConnection(
        ICorDebugProcess *pProcess,
        CONNID dwConnectionId) = 0;

    virtual HRESULT STDMETHODCALLTYPE Exception(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFrame *pFrame,
        ULONG32 nOffset,
        CorDebugExceptionCallbackType dwEventType,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE ExceptionUnwind(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        CorDebugExceptionUnwindCallbackType dwEventType,
        DWORD dwFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE FunctionRemapComplete(
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFunction *pFunction) = 0;

    virtual HRESULT STDMETHODCALLTYPE MDANotification(
        ICorDebugController *pController,
        ICorDebugThread *pThread,
        ICorDebugMDA *pMDA) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugManagedCallback2, 0x250e5eea, 0xdb5c, 0x4c76, 0xb6,0xf3, 0x8c,0x46,0xf1,0x2e,0x32,0x03)
#endif
#else
typedef struct ICorDebugManagedCallback2Vtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugManagedCallback2 *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugManagedCallback2 *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugManagedCallback2 *This);

    /*** ICorDebugManagedCallback2 methods ***/
    HRESULT (STDMETHODCALLTYPE *FunctionRemapOpportunity)(
        ICorDebugManagedCallback2 *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFunction *pOldFunction,
        ICorDebugFunction *pNewFunction,
        ULONG32 oldILOffset);

    HRESULT (STDMETHODCALLTYPE *CreateConnection)(
        ICorDebugManagedCallback2 *This,
        ICorDebugProcess *pProcess,
        CONNID dwConnectionId,
        WCHAR *pConnName);

    HRESULT (STDMETHODCALLTYPE *ChangeConnection)(
        ICorDebugManagedCallback2 *This,
        ICorDebugProcess *pProcess,
        CONNID dwConnectionId);

    HRESULT (STDMETHODCALLTYPE *DestroyConnection)(
        ICorDebugManagedCallback2 *This,
        ICorDebugProcess *pProcess,
        CONNID dwConnectionId);

    HRESULT (STDMETHODCALLTYPE *Exception)(
        ICorDebugManagedCallback2 *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFrame *pFrame,
        ULONG32 nOffset,
        CorDebugExceptionCallbackType dwEventType,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *ExceptionUnwind)(
        ICorDebugManagedCallback2 *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        CorDebugExceptionUnwindCallbackType dwEventType,
        DWORD dwFlags);

    HRESULT (STDMETHODCALLTYPE *FunctionRemapComplete)(
        ICorDebugManagedCallback2 *This,
        ICorDebugAppDomain *pAppDomain,
        ICorDebugThread *pThread,
        ICorDebugFunction *pFunction);

    HRESULT (STDMETHODCALLTYPE *MDANotification)(
        ICorDebugManagedCallback2 *This,
        ICorDebugController *pController,
        ICorDebugThread *pThread,
        ICorDebugMDA *pMDA);

    END_INTERFACE
} ICorDebugManagedCallback2Vtbl;

interface ICorDebugManagedCallback2 {
    CONST_VTBL ICorDebugManagedCallback2Vtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugManagedCallback2_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugManagedCallback2_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugManagedCallback2_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugManagedCallback2 methods ***/
#define ICorDebugManagedCallback2_FunctionRemapOpportunity(This,pAppDomain,pThread,pOldFunction,pNewFunction,oldILOffset) (This)->lpVtbl->FunctionRemapOpportunity(This,pAppDomain,pThread,pOldFunction,pNewFunction,oldILOffset)
#define ICorDebugManagedCallback2_CreateConnection(This,pProcess,dwConnectionId,pConnName) (This)->lpVtbl->CreateConnection(This,pProcess,dwConnectionId,pConnName)
#define ICorDebugManagedCallback2_ChangeConnection(This,pProcess,dwConnectionId) (This)->lpVtbl->ChangeConnection(This,pProcess,dwConnectionId)
#define ICorDebugManagedCallback2_DestroyConnection(This,pProcess,dwConnectionId) (This)->lpVtbl->DestroyConnection(This,pProcess,dwConnectionId)
#define ICorDebugManagedCallback2_Exception(This,pAppDomain,pThread,pFrame,nOffset,dwEventType,dwFlags) (This)->lpVtbl->Exception(This,pAppDomain,pThread,pFrame,nOffset,dwEventType,dwFlags)
#define ICorDebugManagedCallback2_ExceptionUnwind(This,pAppDomain,pThread,dwEventType,dwFlags) (This)->lpVtbl->ExceptionUnwind(This,pAppDomain,pThread,dwEventType,dwFlags)
#define ICorDebugManagedCallback2_FunctionRemapComplete(This,pAppDomain,pThread,pFunction) (This)->lpVtbl->FunctionRemapComplete(This,pAppDomain,pThread,pFunction)
#define ICorDebugManagedCallback2_MDANotification(This,pController,pThread,pMDA) (This)->lpVtbl->MDANotification(This,pController,pThread,pMDA)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugManagedCallback2_QueryInterface(ICorDebugManagedCallback2* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugManagedCallback2_AddRef(ICorDebugManagedCallback2* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugManagedCallback2_Release(ICorDebugManagedCallback2* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugManagedCallback2 methods ***/
static FORCEINLINE HRESULT ICorDebugManagedCallback2_FunctionRemapOpportunity(ICorDebugManagedCallback2* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugFunction *pOldFunction,ICorDebugFunction *pNewFunction,ULONG32 oldILOffset) {
    return This->lpVtbl->FunctionRemapOpportunity(This,pAppDomain,pThread,pOldFunction,pNewFunction,oldILOffset);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback2_CreateConnection(ICorDebugManagedCallback2* This,ICorDebugProcess *pProcess,CONNID dwConnectionId,WCHAR *pConnName) {
    return This->lpVtbl->CreateConnection(This,pProcess,dwConnectionId,pConnName);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback2_ChangeConnection(ICorDebugManagedCallback2* This,ICorDebugProcess *pProcess,CONNID dwConnectionId) {
    return This->lpVtbl->ChangeConnection(This,pProcess,dwConnectionId);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback2_DestroyConnection(ICorDebugManagedCallback2* This,ICorDebugProcess *pProcess,CONNID dwConnectionId) {
    return This->lpVtbl->DestroyConnection(This,pProcess,dwConnectionId);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback2_Exception(ICorDebugManagedCallback2* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugFrame *pFrame,ULONG32 nOffset,CorDebugExceptionCallbackType dwEventType,DWORD dwFlags) {
    return This->lpVtbl->Exception(This,pAppDomain,pThread,pFrame,nOffset,dwEventType,dwFlags);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback2_ExceptionUnwind(ICorDebugManagedCallback2* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,CorDebugExceptionUnwindCallbackType dwEventType,DWORD dwFlags) {
    return This->lpVtbl->ExceptionUnwind(This,pAppDomain,pThread,dwEventType,dwFlags);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback2_FunctionRemapComplete(ICorDebugManagedCallback2* This,ICorDebugAppDomain *pAppDomain,ICorDebugThread *pThread,ICorDebugFunction *pFunction) {
    return This->lpVtbl->FunctionRemapComplete(This,pAppDomain,pThread,pFunction);
}
static FORCEINLINE HRESULT ICorDebugManagedCallback2_MDANotification(ICorDebugManagedCallback2* This,ICorDebugController *pController,ICorDebugThread *pThread,ICorDebugMDA *pMDA) {
    return This->lpVtbl->MDANotification(This,pController,pThread,pMDA);
}
#endif
#endif

#endif


#endif  /* __ICorDebugManagedCallback2_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebug interface
 */
#ifndef __ICorDebug_INTERFACE_DEFINED__
#define __ICorDebug_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebug, 0x3d6f5f61, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("3d6f5f61-7538-11d3-8d5b-00104b35e7ef")
ICorDebug : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Initialize(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Terminate(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetManagedHandler(
        ICorDebugManagedCallback *pCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetUnmanagedHandler(
        ICorDebugUnmanagedCallback *pCallback) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateProcess(
        LPCWSTR lpApplicationName,
        LPWSTR lpCommandLine,
        LPSECURITY_ATTRIBUTES lpProcessAttributes,
        LPSECURITY_ATTRIBUTES lpThreadAttributes,
        BOOL bInheritHandles,
        DWORD dwCreationFlags,
        PVOID lpEnvironment,
        LPCWSTR lpCurrentDirectory,
        LPSTARTUPINFOW lpStartupInfo,
        LPPROCESS_INFORMATION lpProcessInformation,
        CorDebugCreateProcessFlags debuggingFlags,
        ICorDebugProcess **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE DebugActiveProcess(
        DWORD id,
        BOOL win32Attach,
        ICorDebugProcess **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateProcesses(
        ICorDebugProcessEnum **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetProcess(
        DWORD dwProcessId,
        ICorDebugProcess **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE CanLaunchOrAttach(
        DWORD dwProcessId,
        BOOL win32DebuggingEnabled) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebug, 0x3d6f5f61, 0x7538, 0x11d3, 0x8d,0x5b, 0x00,0x10,0x4b,0x35,0xe7,0xef)
#endif
#else
typedef struct ICorDebugVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebug *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebug *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebug *This);

    /*** ICorDebug methods ***/
    HRESULT (STDMETHODCALLTYPE *Initialize)(
        ICorDebug *This);

    HRESULT (STDMETHODCALLTYPE *Terminate)(
        ICorDebug *This);

    HRESULT (STDMETHODCALLTYPE *SetManagedHandler)(
        ICorDebug *This,
        ICorDebugManagedCallback *pCallback);

    HRESULT (STDMETHODCALLTYPE *SetUnmanagedHandler)(
        ICorDebug *This,
        ICorDebugUnmanagedCallback *pCallback);

    HRESULT (STDMETHODCALLTYPE *CreateProcess)(
        ICorDebug *This,
        LPCWSTR lpApplicationName,
        LPWSTR lpCommandLine,
        LPSECURITY_ATTRIBUTES lpProcessAttributes,
        LPSECURITY_ATTRIBUTES lpThreadAttributes,
        BOOL bInheritHandles,
        DWORD dwCreationFlags,
        PVOID lpEnvironment,
        LPCWSTR lpCurrentDirectory,
        LPSTARTUPINFOW lpStartupInfo,
        LPPROCESS_INFORMATION lpProcessInformation,
        CorDebugCreateProcessFlags debuggingFlags,
        ICorDebugProcess **ppProcess);

    HRESULT (STDMETHODCALLTYPE *DebugActiveProcess)(
        ICorDebug *This,
        DWORD id,
        BOOL win32Attach,
        ICorDebugProcess **ppProcess);

    HRESULT (STDMETHODCALLTYPE *EnumerateProcesses)(
        ICorDebug *This,
        ICorDebugProcessEnum **ppProcess);

    HRESULT (STDMETHODCALLTYPE *GetProcess)(
        ICorDebug *This,
        DWORD dwProcessId,
        ICorDebugProcess **ppProcess);

    HRESULT (STDMETHODCALLTYPE *CanLaunchOrAttach)(
        ICorDebug *This,
        DWORD dwProcessId,
        BOOL win32DebuggingEnabled);

    END_INTERFACE
} ICorDebugVtbl;

interface ICorDebug {
    CONST_VTBL ICorDebugVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebug_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebug_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebug_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebug methods ***/
#define ICorDebug_Initialize(This) (This)->lpVtbl->Initialize(This)
#define ICorDebug_Terminate(This) (This)->lpVtbl->Terminate(This)
#define ICorDebug_SetManagedHandler(This,pCallback) (This)->lpVtbl->SetManagedHandler(This,pCallback)
#define ICorDebug_SetUnmanagedHandler(This,pCallback) (This)->lpVtbl->SetUnmanagedHandler(This,pCallback)
#define ICorDebug_CreateProcess(This,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess) (This)->lpVtbl->CreateProcess(This,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess)
#define ICorDebug_DebugActiveProcess(This,id,win32Attach,ppProcess) (This)->lpVtbl->DebugActiveProcess(This,id,win32Attach,ppProcess)
#define ICorDebug_EnumerateProcesses(This,ppProcess) (This)->lpVtbl->EnumerateProcesses(This,ppProcess)
#define ICorDebug_GetProcess(This,dwProcessId,ppProcess) (This)->lpVtbl->GetProcess(This,dwProcessId,ppProcess)
#define ICorDebug_CanLaunchOrAttach(This,dwProcessId,win32DebuggingEnabled) (This)->lpVtbl->CanLaunchOrAttach(This,dwProcessId,win32DebuggingEnabled)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebug_QueryInterface(ICorDebug* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebug_AddRef(ICorDebug* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebug_Release(ICorDebug* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebug methods ***/
static FORCEINLINE HRESULT ICorDebug_Initialize(ICorDebug* This) {
    return This->lpVtbl->Initialize(This);
}
static FORCEINLINE HRESULT ICorDebug_Terminate(ICorDebug* This) {
    return This->lpVtbl->Terminate(This);
}
static FORCEINLINE HRESULT ICorDebug_SetManagedHandler(ICorDebug* This,ICorDebugManagedCallback *pCallback) {
    return This->lpVtbl->SetManagedHandler(This,pCallback);
}
static FORCEINLINE HRESULT ICorDebug_SetUnmanagedHandler(ICorDebug* This,ICorDebugUnmanagedCallback *pCallback) {
    return This->lpVtbl->SetUnmanagedHandler(This,pCallback);
}
static FORCEINLINE HRESULT ICorDebug_CreateProcess(ICorDebug* This,LPCWSTR lpApplicationName,LPWSTR lpCommandLine,LPSECURITY_ATTRIBUTES lpProcessAttributes,LPSECURITY_ATTRIBUTES lpThreadAttributes,BOOL bInheritHandles,DWORD dwCreationFlags,PVOID lpEnvironment,LPCWSTR lpCurrentDirectory,LPSTARTUPINFOW lpStartupInfo,LPPROCESS_INFORMATION lpProcessInformation,CorDebugCreateProcessFlags debuggingFlags,ICorDebugProcess **ppProcess) {
    return This->lpVtbl->CreateProcess(This,lpApplicationName,lpCommandLine,lpProcessAttributes,lpThreadAttributes,bInheritHandles,dwCreationFlags,lpEnvironment,lpCurrentDirectory,lpStartupInfo,lpProcessInformation,debuggingFlags,ppProcess);
}
static FORCEINLINE HRESULT ICorDebug_DebugActiveProcess(ICorDebug* This,DWORD id,BOOL win32Attach,ICorDebugProcess **ppProcess) {
    return This->lpVtbl->DebugActiveProcess(This,id,win32Attach,ppProcess);
}
static FORCEINLINE HRESULT ICorDebug_EnumerateProcesses(ICorDebug* This,ICorDebugProcessEnum **ppProcess) {
    return This->lpVtbl->EnumerateProcesses(This,ppProcess);
}
static FORCEINLINE HRESULT ICorDebug_GetProcess(ICorDebug* This,DWORD dwProcessId,ICorDebugProcess **ppProcess) {
    return This->lpVtbl->GetProcess(This,dwProcessId,ppProcess);
}
static FORCEINLINE HRESULT ICorDebug_CanLaunchOrAttach(ICorDebug* This,DWORD dwProcessId,BOOL win32DebuggingEnabled) {
    return This->lpVtbl->CanLaunchOrAttach(This,dwProcessId,win32DebuggingEnabled);
}
#endif
#endif

#endif


#endif  /* __ICorDebug_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugBreakpoint interface
 */
#ifndef __ICorDebugBreakpoint_INTERFACE_DEFINED__
#define __ICorDebugBreakpoint_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugBreakpoint, 0xcc7bcae8, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcae8-8a68-11d2-983c-0000f808342d")
ICorDebugBreakpoint : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Activate(
        BOOL bActive) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsActive(
        BOOL *pbActive) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugBreakpoint, 0xcc7bcae8, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugBreakpointVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugBreakpoint *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugBreakpoint *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugBreakpoint *This);

    /*** ICorDebugBreakpoint methods ***/
    HRESULT (STDMETHODCALLTYPE *Activate)(
        ICorDebugBreakpoint *This,
        BOOL bActive);

    HRESULT (STDMETHODCALLTYPE *IsActive)(
        ICorDebugBreakpoint *This,
        BOOL *pbActive);

    END_INTERFACE
} ICorDebugBreakpointVtbl;

interface ICorDebugBreakpoint {
    CONST_VTBL ICorDebugBreakpointVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugBreakpoint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugBreakpoint_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugBreakpoint_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugBreakpoint methods ***/
#define ICorDebugBreakpoint_Activate(This,bActive) (This)->lpVtbl->Activate(This,bActive)
#define ICorDebugBreakpoint_IsActive(This,pbActive) (This)->lpVtbl->IsActive(This,pbActive)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugBreakpoint_QueryInterface(ICorDebugBreakpoint* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugBreakpoint_AddRef(ICorDebugBreakpoint* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugBreakpoint_Release(ICorDebugBreakpoint* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugBreakpoint methods ***/
static FORCEINLINE HRESULT ICorDebugBreakpoint_Activate(ICorDebugBreakpoint* This,BOOL bActive) {
    return This->lpVtbl->Activate(This,bActive);
}
static FORCEINLINE HRESULT ICorDebugBreakpoint_IsActive(ICorDebugBreakpoint* This,BOOL *pbActive) {
    return This->lpVtbl->IsActive(This,pbActive);
}
#endif
#endif

#endif


#endif  /* __ICorDebugBreakpoint_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugFunctionBreakpoint interface
 */
#ifndef __ICorDebugFunctionBreakpoint_INTERFACE_DEFINED__
#define __ICorDebugFunctionBreakpoint_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugFunctionBreakpoint, 0xcc7bcae9, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcae9-8a68-11d2-983c-0000f808342d")
ICorDebugFunctionBreakpoint : public ICorDebugBreakpoint
{
    virtual HRESULT STDMETHODCALLTYPE GetFunction(
        ICorDebugFunction **ppFunction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOffset(
        ULONG32 *pnOffset) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugFunctionBreakpoint, 0xcc7bcae9, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugFunctionBreakpointVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugFunctionBreakpoint *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugFunctionBreakpoint *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugFunctionBreakpoint *This);

    /*** ICorDebugBreakpoint methods ***/
    HRESULT (STDMETHODCALLTYPE *Activate)(
        ICorDebugFunctionBreakpoint *This,
        BOOL bActive);

    HRESULT (STDMETHODCALLTYPE *IsActive)(
        ICorDebugFunctionBreakpoint *This,
        BOOL *pbActive);

    /*** ICorDebugFunctionBreakpoint methods ***/
    HRESULT (STDMETHODCALLTYPE *GetFunction)(
        ICorDebugFunctionBreakpoint *This,
        ICorDebugFunction **ppFunction);

    HRESULT (STDMETHODCALLTYPE *GetOffset)(
        ICorDebugFunctionBreakpoint *This,
        ULONG32 *pnOffset);

    END_INTERFACE
} ICorDebugFunctionBreakpointVtbl;

interface ICorDebugFunctionBreakpoint {
    CONST_VTBL ICorDebugFunctionBreakpointVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugFunctionBreakpoint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugFunctionBreakpoint_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugFunctionBreakpoint_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugBreakpoint methods ***/
#define ICorDebugFunctionBreakpoint_Activate(This,bActive) (This)->lpVtbl->Activate(This,bActive)
#define ICorDebugFunctionBreakpoint_IsActive(This,pbActive) (This)->lpVtbl->IsActive(This,pbActive)
/*** ICorDebugFunctionBreakpoint methods ***/
#define ICorDebugFunctionBreakpoint_GetFunction(This,ppFunction) (This)->lpVtbl->GetFunction(This,ppFunction)
#define ICorDebugFunctionBreakpoint_GetOffset(This,pnOffset) (This)->lpVtbl->GetOffset(This,pnOffset)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugFunctionBreakpoint_QueryInterface(ICorDebugFunctionBreakpoint* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugFunctionBreakpoint_AddRef(ICorDebugFunctionBreakpoint* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugFunctionBreakpoint_Release(ICorDebugFunctionBreakpoint* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugBreakpoint methods ***/
static FORCEINLINE HRESULT ICorDebugFunctionBreakpoint_Activate(ICorDebugFunctionBreakpoint* This,BOOL bActive) {
    return This->lpVtbl->Activate(This,bActive);
}
static FORCEINLINE HRESULT ICorDebugFunctionBreakpoint_IsActive(ICorDebugFunctionBreakpoint* This,BOOL *pbActive) {
    return This->lpVtbl->IsActive(This,pbActive);
}
/*** ICorDebugFunctionBreakpoint methods ***/
static FORCEINLINE HRESULT ICorDebugFunctionBreakpoint_GetFunction(ICorDebugFunctionBreakpoint* This,ICorDebugFunction **ppFunction) {
    return This->lpVtbl->GetFunction(This,ppFunction);
}
static FORCEINLINE HRESULT ICorDebugFunctionBreakpoint_GetOffset(ICorDebugFunctionBreakpoint* This,ULONG32 *pnOffset) {
    return This->lpVtbl->GetOffset(This,pnOffset);
}
#endif
#endif

#endif


#endif  /* __ICorDebugFunctionBreakpoint_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugModuleBreakpoint interface
 */
#ifndef __ICorDebugModuleBreakpoint_INTERFACE_DEFINED__
#define __ICorDebugModuleBreakpoint_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugModuleBreakpoint, 0xcc7bcaea, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaea-8a68-11d2-983c-0000f808342d")
ICorDebugModuleBreakpoint : public ICorDebugBreakpoint
{
    virtual HRESULT STDMETHODCALLTYPE GetModule(
        ICorDebugModule **ppModule) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugModuleBreakpoint, 0xcc7bcaea, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugModuleBreakpointVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugModuleBreakpoint *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugModuleBreakpoint *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugModuleBreakpoint *This);

    /*** ICorDebugBreakpoint methods ***/
    HRESULT (STDMETHODCALLTYPE *Activate)(
        ICorDebugModuleBreakpoint *This,
        BOOL bActive);

    HRESULT (STDMETHODCALLTYPE *IsActive)(
        ICorDebugModuleBreakpoint *This,
        BOOL *pbActive);

    /*** ICorDebugModuleBreakpoint methods ***/
    HRESULT (STDMETHODCALLTYPE *GetModule)(
        ICorDebugModuleBreakpoint *This,
        ICorDebugModule **ppModule);

    END_INTERFACE
} ICorDebugModuleBreakpointVtbl;

interface ICorDebugModuleBreakpoint {
    CONST_VTBL ICorDebugModuleBreakpointVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugModuleBreakpoint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugModuleBreakpoint_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugModuleBreakpoint_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugBreakpoint methods ***/
#define ICorDebugModuleBreakpoint_Activate(This,bActive) (This)->lpVtbl->Activate(This,bActive)
#define ICorDebugModuleBreakpoint_IsActive(This,pbActive) (This)->lpVtbl->IsActive(This,pbActive)
/*** ICorDebugModuleBreakpoint methods ***/
#define ICorDebugModuleBreakpoint_GetModule(This,ppModule) (This)->lpVtbl->GetModule(This,ppModule)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugModuleBreakpoint_QueryInterface(ICorDebugModuleBreakpoint* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugModuleBreakpoint_AddRef(ICorDebugModuleBreakpoint* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugModuleBreakpoint_Release(ICorDebugModuleBreakpoint* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugBreakpoint methods ***/
static FORCEINLINE HRESULT ICorDebugModuleBreakpoint_Activate(ICorDebugModuleBreakpoint* This,BOOL bActive) {
    return This->lpVtbl->Activate(This,bActive);
}
static FORCEINLINE HRESULT ICorDebugModuleBreakpoint_IsActive(ICorDebugModuleBreakpoint* This,BOOL *pbActive) {
    return This->lpVtbl->IsActive(This,pbActive);
}
/*** ICorDebugModuleBreakpoint methods ***/
static FORCEINLINE HRESULT ICorDebugModuleBreakpoint_GetModule(ICorDebugModuleBreakpoint* This,ICorDebugModule **ppModule) {
    return This->lpVtbl->GetModule(This,ppModule);
}
#endif
#endif

#endif


#endif  /* __ICorDebugModuleBreakpoint_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugValueBreakpoint interface
 */
#ifndef __ICorDebugValueBreakpoint_INTERFACE_DEFINED__
#define __ICorDebugValueBreakpoint_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugValueBreakpoint, 0xcc7bcaeb, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaeb-8a68-11d2-983c-0000f808342d")
ICorDebugValueBreakpoint : public ICorDebugBreakpoint
{
    virtual HRESULT STDMETHODCALLTYPE GetValue(
        ICorDebugValue **ppValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugValueBreakpoint, 0xcc7bcaeb, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugValueBreakpointVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugValueBreakpoint *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugValueBreakpoint *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugValueBreakpoint *This);

    /*** ICorDebugBreakpoint methods ***/
    HRESULT (STDMETHODCALLTYPE *Activate)(
        ICorDebugValueBreakpoint *This,
        BOOL bActive);

    HRESULT (STDMETHODCALLTYPE *IsActive)(
        ICorDebugValueBreakpoint *This,
        BOOL *pbActive);

    /*** ICorDebugValueBreakpoint methods ***/
    HRESULT (STDMETHODCALLTYPE *GetValue)(
        ICorDebugValueBreakpoint *This,
        ICorDebugValue **ppValue);

    END_INTERFACE
} ICorDebugValueBreakpointVtbl;

interface ICorDebugValueBreakpoint {
    CONST_VTBL ICorDebugValueBreakpointVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugValueBreakpoint_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugValueBreakpoint_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugValueBreakpoint_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugBreakpoint methods ***/
#define ICorDebugValueBreakpoint_Activate(This,bActive) (This)->lpVtbl->Activate(This,bActive)
#define ICorDebugValueBreakpoint_IsActive(This,pbActive) (This)->lpVtbl->IsActive(This,pbActive)
/*** ICorDebugValueBreakpoint methods ***/
#define ICorDebugValueBreakpoint_GetValue(This,ppValue) (This)->lpVtbl->GetValue(This,ppValue)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugValueBreakpoint_QueryInterface(ICorDebugValueBreakpoint* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugValueBreakpoint_AddRef(ICorDebugValueBreakpoint* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugValueBreakpoint_Release(ICorDebugValueBreakpoint* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugBreakpoint methods ***/
static FORCEINLINE HRESULT ICorDebugValueBreakpoint_Activate(ICorDebugValueBreakpoint* This,BOOL bActive) {
    return This->lpVtbl->Activate(This,bActive);
}
static FORCEINLINE HRESULT ICorDebugValueBreakpoint_IsActive(ICorDebugValueBreakpoint* This,BOOL *pbActive) {
    return This->lpVtbl->IsActive(This,pbActive);
}
/*** ICorDebugValueBreakpoint methods ***/
static FORCEINLINE HRESULT ICorDebugValueBreakpoint_GetValue(ICorDebugValueBreakpoint* This,ICorDebugValue **ppValue) {
    return This->lpVtbl->GetValue(This,ppValue);
}
#endif
#endif

#endif


#endif  /* __ICorDebugValueBreakpoint_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugStepper interface
 */
#ifndef __ICorDebugStepper_INTERFACE_DEFINED__
#define __ICorDebugStepper_INTERFACE_DEFINED__

typedef enum CorDebugIntercept {
    INTERCEPT_NONE = 0x0,
    INTERCEPT_CLASS_INIT = 0x1,
    INTERCEPT_EXCEPTION_FILTER = 0x2,
    INTERCEPT_SECURITY = 0x4,
    INTERCEPT_CONTEXT_POLICY = 0x8,
    INTERCEPT_INTERCEPTION = 0x10,
    INTERCEPT_ALL = 0xffff
} CorDebugIntercept;
typedef enum CorDebugUnmappedStop {
    STOP_NONE = 0x0,
    STOP_PROLOG = 0x1,
    STOP_EPILOG = 0x2,
    STOP_NO_MAPPING_INFO = 0x4,
    STOP_OTHER_UNMAPPED = 0x8,
    STOP_UNMANAGED = 0x10,
    STOP_ALL = 0xffff
} CorDebugUnmappedStop;
typedef struct COR_DEBUG_STEP_RANGE {
    ULONG32 startOffset;
    ULONG32 endOffset;
} COR_DEBUG_STEP_RANGE;
DEFINE_GUID(IID_ICorDebugStepper, 0xcc7bcaec, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaec-8a68-11d2-983c-0000f808342d")
ICorDebugStepper : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IsActive(
        BOOL *pbActive) = 0;

    virtual HRESULT STDMETHODCALLTYPE Deactivate(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetInterceptMask(
        CorDebugIntercept mask) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetUnmappedStopMask(
        CorDebugUnmappedStop mask) = 0;

    virtual HRESULT STDMETHODCALLTYPE Step(
        BOOL bStepIn) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepRange(
        BOOL bStepIn,
        COR_DEBUG_STEP_RANGE ranges[],
        ULONG32 cRangeCount) = 0;

    virtual HRESULT STDMETHODCALLTYPE StepOut(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRangeIL(
        BOOL bIL) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugStepper, 0xcc7bcaec, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugStepperVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugStepper *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugStepper *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugStepper *This);

    /*** ICorDebugStepper methods ***/
    HRESULT (STDMETHODCALLTYPE *IsActive)(
        ICorDebugStepper *This,
        BOOL *pbActive);

    HRESULT (STDMETHODCALLTYPE *Deactivate)(
        ICorDebugStepper *This);

    HRESULT (STDMETHODCALLTYPE *SetInterceptMask)(
        ICorDebugStepper *This,
        CorDebugIntercept mask);

    HRESULT (STDMETHODCALLTYPE *SetUnmappedStopMask)(
        ICorDebugStepper *This,
        CorDebugUnmappedStop mask);

    HRESULT (STDMETHODCALLTYPE *Step)(
        ICorDebugStepper *This,
        BOOL bStepIn);

    HRESULT (STDMETHODCALLTYPE *StepRange)(
        ICorDebugStepper *This,
        BOOL bStepIn,
        COR_DEBUG_STEP_RANGE ranges[],
        ULONG32 cRangeCount);

    HRESULT (STDMETHODCALLTYPE *StepOut)(
        ICorDebugStepper *This);

    HRESULT (STDMETHODCALLTYPE *SetRangeIL)(
        ICorDebugStepper *This,
        BOOL bIL);

    END_INTERFACE
} ICorDebugStepperVtbl;

interface ICorDebugStepper {
    CONST_VTBL ICorDebugStepperVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugStepper_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugStepper_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugStepper_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugStepper methods ***/
#define ICorDebugStepper_IsActive(This,pbActive) (This)->lpVtbl->IsActive(This,pbActive)
#define ICorDebugStepper_Deactivate(This) (This)->lpVtbl->Deactivate(This)
#define ICorDebugStepper_SetInterceptMask(This,mask) (This)->lpVtbl->SetInterceptMask(This,mask)
#define ICorDebugStepper_SetUnmappedStopMask(This,mask) (This)->lpVtbl->SetUnmappedStopMask(This,mask)
#define ICorDebugStepper_Step(This,bStepIn) (This)->lpVtbl->Step(This,bStepIn)
#define ICorDebugStepper_StepRange(This,bStepIn,ranges,cRangeCount) (This)->lpVtbl->StepRange(This,bStepIn,ranges,cRangeCount)
#define ICorDebugStepper_StepOut(This) (This)->lpVtbl->StepOut(This)
#define ICorDebugStepper_SetRangeIL(This,bIL) (This)->lpVtbl->SetRangeIL(This,bIL)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugStepper_QueryInterface(ICorDebugStepper* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugStepper_AddRef(ICorDebugStepper* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugStepper_Release(ICorDebugStepper* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugStepper methods ***/
static FORCEINLINE HRESULT ICorDebugStepper_IsActive(ICorDebugStepper* This,BOOL *pbActive) {
    return This->lpVtbl->IsActive(This,pbActive);
}
static FORCEINLINE HRESULT ICorDebugStepper_Deactivate(ICorDebugStepper* This) {
    return This->lpVtbl->Deactivate(This);
}
static FORCEINLINE HRESULT ICorDebugStepper_SetInterceptMask(ICorDebugStepper* This,CorDebugIntercept mask) {
    return This->lpVtbl->SetInterceptMask(This,mask);
}
static FORCEINLINE HRESULT ICorDebugStepper_SetUnmappedStopMask(ICorDebugStepper* This,CorDebugUnmappedStop mask) {
    return This->lpVtbl->SetUnmappedStopMask(This,mask);
}
static FORCEINLINE HRESULT ICorDebugStepper_Step(ICorDebugStepper* This,BOOL bStepIn) {
    return This->lpVtbl->Step(This,bStepIn);
}
static FORCEINLINE HRESULT ICorDebugStepper_StepRange(ICorDebugStepper* This,BOOL bStepIn,COR_DEBUG_STEP_RANGE ranges[],ULONG32 cRangeCount) {
    return This->lpVtbl->StepRange(This,bStepIn,ranges,cRangeCount);
}
static FORCEINLINE HRESULT ICorDebugStepper_StepOut(ICorDebugStepper* This) {
    return This->lpVtbl->StepOut(This);
}
static FORCEINLINE HRESULT ICorDebugStepper_SetRangeIL(ICorDebugStepper* This,BOOL bIL) {
    return This->lpVtbl->SetRangeIL(This,bIL);
}
#endif
#endif

#endif


#endif  /* __ICorDebugStepper_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugEnum interface
 */
#ifndef __ICorDebugEnum_INTERFACE_DEFINED__
#define __ICorDebugEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugEnum, 0xcc7bcb01, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb01-8a68-11d2-983c-0000f808342d")
ICorDebugEnum : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE Skip(
        ULONG celt) = 0;

    virtual HRESULT STDMETHODCALLTYPE Reset(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE Clone(
        ICorDebugEnum **ppEnum) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCount(
        ULONG *pcelt) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugEnum, 0xcc7bcb01, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugEnum *This,
        ULONG *pcelt);

    END_INTERFACE
} ICorDebugEnumVtbl;

interface ICorDebugEnum {
    CONST_VTBL ICorDebugEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugEnum_QueryInterface(ICorDebugEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugEnum_AddRef(ICorDebugEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugEnum_Release(ICorDebugEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugEnum_Skip(ICorDebugEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugEnum_Reset(ICorDebugEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugEnum_Clone(ICorDebugEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugEnum_GetCount(ICorDebugEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
#endif
#endif

#endif


#endif  /* __ICorDebugEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugAppDomainEnum interface
 */
#ifndef __ICorDebugAppDomainEnum_INTERFACE_DEFINED__
#define __ICorDebugAppDomainEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugAppDomainEnum, 0x63ca1b24, 0x4359, 0x4883, 0xbd,0x57, 0x13,0xf8,0x15,0xf5,0x87,0x44);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("63ca1b24-4359-4883-bd57-13f815f58744")
ICorDebugAppDomainEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugAppDomain * values[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugAppDomainEnum, 0x63ca1b24, 0x4359, 0x4883, 0xbd,0x57, 0x13,0xf8,0x15,0xf5,0x87,0x44)
#endif
#else
typedef struct ICorDebugAppDomainEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugAppDomainEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugAppDomainEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugAppDomainEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugAppDomainEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugAppDomainEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugAppDomainEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugAppDomainEnum *This,
        ULONG *pcelt);

    /*** ICorDebugAppDomainEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugAppDomainEnum *This,
        ULONG celt,
        ICorDebugAppDomain * values[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugAppDomainEnumVtbl;

interface ICorDebugAppDomainEnum {
    CONST_VTBL ICorDebugAppDomainEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugAppDomainEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugAppDomainEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugAppDomainEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugAppDomainEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugAppDomainEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugAppDomainEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugAppDomainEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugAppDomainEnum methods ***/
#define ICorDebugAppDomainEnum_Next(This,celt,values,pceltFetched) (This)->lpVtbl->Next(This,celt,values,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugAppDomainEnum_QueryInterface(ICorDebugAppDomainEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugAppDomainEnum_AddRef(ICorDebugAppDomainEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugAppDomainEnum_Release(ICorDebugAppDomainEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugAppDomainEnum_Skip(ICorDebugAppDomainEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugAppDomainEnum_Reset(ICorDebugAppDomainEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugAppDomainEnum_Clone(ICorDebugAppDomainEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugAppDomainEnum_GetCount(ICorDebugAppDomainEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugAppDomainEnum methods ***/
static FORCEINLINE HRESULT ICorDebugAppDomainEnum_Next(ICorDebugAppDomainEnum* This,ULONG celt,ICorDebugAppDomain * values[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,values,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugAppDomainEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugAssemblyEnum interface
 */
#ifndef __ICorDebugAssemblyEnum_INTERFACE_DEFINED__
#define __ICorDebugAssemblyEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugAssemblyEnum, 0x4a2a1ec9, 0x85ec, 0x4bfb, 0x9f,0x15, 0xa8,0x9f,0xdf,0xe0,0xfe,0x83);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("4a2a1ec9-85ec-4bfb-9f15-a89fdfe0fe83")
ICorDebugAssemblyEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugAssembly * values[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugAssemblyEnum, 0x4a2a1ec9, 0x85ec, 0x4bfb, 0x9f,0x15, 0xa8,0x9f,0xdf,0xe0,0xfe,0x83)
#endif
#else
typedef struct ICorDebugAssemblyEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugAssemblyEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugAssemblyEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugAssemblyEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugAssemblyEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugAssemblyEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugAssemblyEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugAssemblyEnum *This,
        ULONG *pcelt);

    /*** ICorDebugAssemblyEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugAssemblyEnum *This,
        ULONG celt,
        ICorDebugAssembly * values[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugAssemblyEnumVtbl;

interface ICorDebugAssemblyEnum {
    CONST_VTBL ICorDebugAssemblyEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugAssemblyEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugAssemblyEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugAssemblyEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugAssemblyEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugAssemblyEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugAssemblyEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugAssemblyEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugAssemblyEnum methods ***/
#define ICorDebugAssemblyEnum_Next(This,celt,values,pceltFetched) (This)->lpVtbl->Next(This,celt,values,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugAssemblyEnum_QueryInterface(ICorDebugAssemblyEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugAssemblyEnum_AddRef(ICorDebugAssemblyEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugAssemblyEnum_Release(ICorDebugAssemblyEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugAssemblyEnum_Skip(ICorDebugAssemblyEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugAssemblyEnum_Reset(ICorDebugAssemblyEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugAssemblyEnum_Clone(ICorDebugAssemblyEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugAssemblyEnum_GetCount(ICorDebugAssemblyEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugAssemblyEnum methods ***/
static FORCEINLINE HRESULT ICorDebugAssemblyEnum_Next(ICorDebugAssemblyEnum* This,ULONG celt,ICorDebugAssembly * values[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,values,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugAssemblyEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugBreakpointEnum interface
 */
#ifndef __ICorDebugBreakpointEnum_INTERFACE_DEFINED__
#define __ICorDebugBreakpointEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugBreakpointEnum, 0xcc7bcb03, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb03-8a68-11d2-983c-0000f808342d")
ICorDebugBreakpointEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugBreakpoint * breakpoints[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugBreakpointEnum, 0xcc7bcb03, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugBreakpointEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugBreakpointEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugBreakpointEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugBreakpointEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugBreakpointEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugBreakpointEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugBreakpointEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugBreakpointEnum *This,
        ULONG *pcelt);

    /*** ICorDebugBreakpointEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugBreakpointEnum *This,
        ULONG celt,
        ICorDebugBreakpoint * breakpoints[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugBreakpointEnumVtbl;

interface ICorDebugBreakpointEnum {
    CONST_VTBL ICorDebugBreakpointEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugBreakpointEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugBreakpointEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugBreakpointEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugBreakpointEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugBreakpointEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugBreakpointEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugBreakpointEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugBreakpointEnum methods ***/
#define ICorDebugBreakpointEnum_Next(This,celt,breakpoints,pceltFetched) (This)->lpVtbl->Next(This,celt,breakpoints,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugBreakpointEnum_QueryInterface(ICorDebugBreakpointEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugBreakpointEnum_AddRef(ICorDebugBreakpointEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugBreakpointEnum_Release(ICorDebugBreakpointEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugBreakpointEnum_Skip(ICorDebugBreakpointEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugBreakpointEnum_Reset(ICorDebugBreakpointEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugBreakpointEnum_Clone(ICorDebugBreakpointEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugBreakpointEnum_GetCount(ICorDebugBreakpointEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugBreakpointEnum methods ***/
static FORCEINLINE HRESULT ICorDebugBreakpointEnum_Next(ICorDebugBreakpointEnum* This,ULONG celt,ICorDebugBreakpoint * breakpoints[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,breakpoints,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugBreakpointEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugChainEnum interface
 */
#ifndef __ICorDebugChainEnum_INTERFACE_DEFINED__
#define __ICorDebugChainEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugChainEnum, 0xcc7bcb08, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb08-8a68-11d2-983c-0000f808342d")
ICorDebugChainEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugChain * chains[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugChainEnum, 0xcc7bcb08, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugChainEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugChainEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugChainEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugChainEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugChainEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugChainEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugChainEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugChainEnum *This,
        ULONG *pcelt);

    /*** ICorDebugChainEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugChainEnum *This,
        ULONG celt,
        ICorDebugChain * chains[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugChainEnumVtbl;

interface ICorDebugChainEnum {
    CONST_VTBL ICorDebugChainEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugChainEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugChainEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugChainEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugChainEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugChainEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugChainEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugChainEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugChainEnum methods ***/
#define ICorDebugChainEnum_Next(This,celt,chains,pceltFetched) (This)->lpVtbl->Next(This,celt,chains,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugChainEnum_QueryInterface(ICorDebugChainEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugChainEnum_AddRef(ICorDebugChainEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugChainEnum_Release(ICorDebugChainEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugChainEnum_Skip(ICorDebugChainEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugChainEnum_Reset(ICorDebugChainEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugChainEnum_Clone(ICorDebugChainEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugChainEnum_GetCount(ICorDebugChainEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugChainEnum methods ***/
static FORCEINLINE HRESULT ICorDebugChainEnum_Next(ICorDebugChainEnum* This,ULONG celt,ICorDebugChain * chains[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,chains,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugChainEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugErrorInfoEnum interface
 */
#ifndef __ICorDebugErrorInfoEnum_INTERFACE_DEFINED__
#define __ICorDebugErrorInfoEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugErrorInfoEnum, 0xf0e18809, 0x72b5, 0x11d2, 0x97,0x6f, 0x00,0xa0,0xc9,0xb4,0xd5,0x0c);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("f0e18809-72b5-11d2-976f-00a0c9b4d50c")
ICorDebugErrorInfoEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugEditAndContinueErrorInfo * errors[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugErrorInfoEnum, 0xf0e18809, 0x72b5, 0x11d2, 0x97,0x6f, 0x00,0xa0,0xc9,0xb4,0xd5,0x0c)
#endif
#else
typedef struct ICorDebugErrorInfoEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugErrorInfoEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugErrorInfoEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugErrorInfoEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugErrorInfoEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugErrorInfoEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugErrorInfoEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugErrorInfoEnum *This,
        ULONG *pcelt);

    /*** ICorDebugErrorInfoEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugErrorInfoEnum *This,
        ULONG celt,
        ICorDebugEditAndContinueErrorInfo * errors[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugErrorInfoEnumVtbl;

interface ICorDebugErrorInfoEnum {
    CONST_VTBL ICorDebugErrorInfoEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugErrorInfoEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugErrorInfoEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugErrorInfoEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugErrorInfoEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugErrorInfoEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugErrorInfoEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugErrorInfoEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugErrorInfoEnum methods ***/
#define ICorDebugErrorInfoEnum_Next(This,celt,errors,pceltFetched) (This)->lpVtbl->Next(This,celt,errors,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugErrorInfoEnum_QueryInterface(ICorDebugErrorInfoEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugErrorInfoEnum_AddRef(ICorDebugErrorInfoEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugErrorInfoEnum_Release(ICorDebugErrorInfoEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugErrorInfoEnum_Skip(ICorDebugErrorInfoEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugErrorInfoEnum_Reset(ICorDebugErrorInfoEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugErrorInfoEnum_Clone(ICorDebugErrorInfoEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugErrorInfoEnum_GetCount(ICorDebugErrorInfoEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugErrorInfoEnum methods ***/
static FORCEINLINE HRESULT ICorDebugErrorInfoEnum_Next(ICorDebugErrorInfoEnum* This,ULONG celt,ICorDebugEditAndContinueErrorInfo * errors[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,errors,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugErrorInfoEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugFrameEnum interface
 */
#ifndef __ICorDebugFrameEnum_INTERFACE_DEFINED__
#define __ICorDebugFrameEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugFrameEnum, 0xcc7bcb07, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb07-8a68-11d2-983c-0000f808342d")
ICorDebugFrameEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugFrame * frames[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugFrameEnum, 0xcc7bcb07, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugFrameEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugFrameEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugFrameEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugFrameEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugFrameEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugFrameEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugFrameEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugFrameEnum *This,
        ULONG *pcelt);

    /*** ICorDebugFrameEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugFrameEnum *This,
        ULONG celt,
        ICorDebugFrame * frames[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugFrameEnumVtbl;

interface ICorDebugFrameEnum {
    CONST_VTBL ICorDebugFrameEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugFrameEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugFrameEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugFrameEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugFrameEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugFrameEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugFrameEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugFrameEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugFrameEnum methods ***/
#define ICorDebugFrameEnum_Next(This,celt,frames,pceltFetched) (This)->lpVtbl->Next(This,celt,frames,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugFrameEnum_QueryInterface(ICorDebugFrameEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugFrameEnum_AddRef(ICorDebugFrameEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugFrameEnum_Release(ICorDebugFrameEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugFrameEnum_Skip(ICorDebugFrameEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugFrameEnum_Reset(ICorDebugFrameEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugFrameEnum_Clone(ICorDebugFrameEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugFrameEnum_GetCount(ICorDebugFrameEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugFrameEnum methods ***/
static FORCEINLINE HRESULT ICorDebugFrameEnum_Next(ICorDebugFrameEnum* This,ULONG celt,ICorDebugFrame * frames[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,frames,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugFrameEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugModuleEnum interface
 */
#ifndef __ICorDebugModuleEnum_INTERFACE_DEFINED__
#define __ICorDebugModuleEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugModuleEnum, 0xcc7bcb09, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb09-8a68-11d2-983c-0000f808342d")
ICorDebugModuleEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugModule * modules[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugModuleEnum, 0xcc7bcb09, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugModuleEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugModuleEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugModuleEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugModuleEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugModuleEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugModuleEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugModuleEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugModuleEnum *This,
        ULONG *pcelt);

    /*** ICorDebugModuleEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugModuleEnum *This,
        ULONG celt,
        ICorDebugModule * modules[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugModuleEnumVtbl;

interface ICorDebugModuleEnum {
    CONST_VTBL ICorDebugModuleEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugModuleEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugModuleEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugModuleEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugModuleEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugModuleEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugModuleEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugModuleEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugModuleEnum methods ***/
#define ICorDebugModuleEnum_Next(This,celt,modules,pceltFetched) (This)->lpVtbl->Next(This,celt,modules,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugModuleEnum_QueryInterface(ICorDebugModuleEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugModuleEnum_AddRef(ICorDebugModuleEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugModuleEnum_Release(ICorDebugModuleEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugModuleEnum_Skip(ICorDebugModuleEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugModuleEnum_Reset(ICorDebugModuleEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugModuleEnum_Clone(ICorDebugModuleEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugModuleEnum_GetCount(ICorDebugModuleEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugModuleEnum methods ***/
static FORCEINLINE HRESULT ICorDebugModuleEnum_Next(ICorDebugModuleEnum* This,ULONG celt,ICorDebugModule * modules[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,modules,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugModuleEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugObjectEnum interface
 */
#ifndef __ICorDebugObjectEnum_INTERFACE_DEFINED__
#define __ICorDebugObjectEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugObjectEnum, 0xcc7bcb02, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb02-8a68-11d2-983c-0000f808342d")
ICorDebugObjectEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        CORDB_ADDRESS objects[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugObjectEnum, 0xcc7bcb02, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugObjectEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugObjectEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugObjectEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugObjectEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugObjectEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugObjectEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugObjectEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugObjectEnum *This,
        ULONG *pcelt);

    /*** ICorDebugObjectEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugObjectEnum *This,
        ULONG celt,
        CORDB_ADDRESS objects[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugObjectEnumVtbl;

interface ICorDebugObjectEnum {
    CONST_VTBL ICorDebugObjectEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugObjectEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugObjectEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugObjectEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugObjectEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugObjectEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugObjectEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugObjectEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugObjectEnum methods ***/
#define ICorDebugObjectEnum_Next(This,celt,objects,pceltFetched) (This)->lpVtbl->Next(This,celt,objects,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugObjectEnum_QueryInterface(ICorDebugObjectEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugObjectEnum_AddRef(ICorDebugObjectEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugObjectEnum_Release(ICorDebugObjectEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugObjectEnum_Skip(ICorDebugObjectEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugObjectEnum_Reset(ICorDebugObjectEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugObjectEnum_Clone(ICorDebugObjectEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugObjectEnum_GetCount(ICorDebugObjectEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugObjectEnum methods ***/
static FORCEINLINE HRESULT ICorDebugObjectEnum_Next(ICorDebugObjectEnum* This,ULONG celt,CORDB_ADDRESS objects[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,objects,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugObjectEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugProcessEnum interface
 */
#ifndef __ICorDebugProcessEnum_INTERFACE_DEFINED__
#define __ICorDebugProcessEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugProcessEnum, 0xcc7bcb05, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb05-8a68-11d2-983c-0000f808342d")
ICorDebugProcessEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugProcess * processes[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugProcessEnum, 0xcc7bcb05, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugProcessEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugProcessEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugProcessEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugProcessEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugProcessEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugProcessEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugProcessEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugProcessEnum *This,
        ULONG *pcelt);

    /*** ICorDebugProcessEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugProcessEnum *This,
        ULONG celt,
        ICorDebugProcess * processes[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugProcessEnumVtbl;

interface ICorDebugProcessEnum {
    CONST_VTBL ICorDebugProcessEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugProcessEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugProcessEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugProcessEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugProcessEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugProcessEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugProcessEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugProcessEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugProcessEnum methods ***/
#define ICorDebugProcessEnum_Next(This,celt,processes,pceltFetched) (This)->lpVtbl->Next(This,celt,processes,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugProcessEnum_QueryInterface(ICorDebugProcessEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugProcessEnum_AddRef(ICorDebugProcessEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugProcessEnum_Release(ICorDebugProcessEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugProcessEnum_Skip(ICorDebugProcessEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugProcessEnum_Reset(ICorDebugProcessEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugProcessEnum_Clone(ICorDebugProcessEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugProcessEnum_GetCount(ICorDebugProcessEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugProcessEnum methods ***/
static FORCEINLINE HRESULT ICorDebugProcessEnum_Next(ICorDebugProcessEnum* This,ULONG celt,ICorDebugProcess * processes[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,processes,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugProcessEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugStepperEnum interface
 */
#ifndef __ICorDebugStepperEnum_INTERFACE_DEFINED__
#define __ICorDebugStepperEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugStepperEnum, 0xcc7bcb04, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb04-8a68-11d2-983c-0000f808342d")
ICorDebugStepperEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugStepper * steppers[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugStepperEnum, 0xcc7bcb04, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugStepperEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugStepperEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugStepperEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugStepperEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugStepperEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugStepperEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugStepperEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugStepperEnum *This,
        ULONG *pcelt);

    /*** ICorDebugStepperEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugStepperEnum *This,
        ULONG celt,
        ICorDebugStepper * steppers[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugStepperEnumVtbl;

interface ICorDebugStepperEnum {
    CONST_VTBL ICorDebugStepperEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugStepperEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugStepperEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugStepperEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugStepperEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugStepperEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugStepperEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugStepperEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugStepperEnum methods ***/
#define ICorDebugStepperEnum_Next(This,celt,steppers,pceltFetched) (This)->lpVtbl->Next(This,celt,steppers,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugStepperEnum_QueryInterface(ICorDebugStepperEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugStepperEnum_AddRef(ICorDebugStepperEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugStepperEnum_Release(ICorDebugStepperEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugStepperEnum_Skip(ICorDebugStepperEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugStepperEnum_Reset(ICorDebugStepperEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugStepperEnum_Clone(ICorDebugStepperEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugStepperEnum_GetCount(ICorDebugStepperEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugStepperEnum methods ***/
static FORCEINLINE HRESULT ICorDebugStepperEnum_Next(ICorDebugStepperEnum* This,ULONG celt,ICorDebugStepper * steppers[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,steppers,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugStepperEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugThreadEnum interface
 */
#ifndef __ICorDebugThreadEnum_INTERFACE_DEFINED__
#define __ICorDebugThreadEnum_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugThreadEnum, 0xcc7bcb06, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb06-8a68-11d2-983c-0000f808342d")
ICorDebugThreadEnum : public ICorDebugEnum
{
    virtual HRESULT STDMETHODCALLTYPE Next(
        ULONG celt,
        ICorDebugThread * threads[],
        ULONG *pceltFetched) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugThreadEnum, 0xcc7bcb06, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugThreadEnumVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugThreadEnum *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugThreadEnum *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugThreadEnum *This);

    /*** ICorDebugEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Skip)(
        ICorDebugThreadEnum *This,
        ULONG celt);

    HRESULT (STDMETHODCALLTYPE *Reset)(
        ICorDebugThreadEnum *This);

    HRESULT (STDMETHODCALLTYPE *Clone)(
        ICorDebugThreadEnum *This,
        ICorDebugEnum **ppEnum);

    HRESULT (STDMETHODCALLTYPE *GetCount)(
        ICorDebugThreadEnum *This,
        ULONG *pcelt);

    /*** ICorDebugThreadEnum methods ***/
    HRESULT (STDMETHODCALLTYPE *Next)(
        ICorDebugThreadEnum *This,
        ULONG celt,
        ICorDebugThread * threads[],
        ULONG *pceltFetched);

    END_INTERFACE
} ICorDebugThreadEnumVtbl;

interface ICorDebugThreadEnum {
    CONST_VTBL ICorDebugThreadEnumVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugThreadEnum_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugThreadEnum_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugThreadEnum_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEnum methods ***/
#define ICorDebugThreadEnum_Skip(This,celt) (This)->lpVtbl->Skip(This,celt)
#define ICorDebugThreadEnum_Reset(This) (This)->lpVtbl->Reset(This)
#define ICorDebugThreadEnum_Clone(This,ppEnum) (This)->lpVtbl->Clone(This,ppEnum)
#define ICorDebugThreadEnum_GetCount(This,pcelt) (This)->lpVtbl->GetCount(This,pcelt)
/*** ICorDebugThreadEnum methods ***/
#define ICorDebugThreadEnum_Next(This,celt,threads,pceltFetched) (This)->lpVtbl->Next(This,celt,threads,pceltFetched)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugThreadEnum_QueryInterface(ICorDebugThreadEnum* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugThreadEnum_AddRef(ICorDebugThreadEnum* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugThreadEnum_Release(ICorDebugThreadEnum* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEnum methods ***/
static FORCEINLINE HRESULT ICorDebugThreadEnum_Skip(ICorDebugThreadEnum* This,ULONG celt) {
    return This->lpVtbl->Skip(This,celt);
}
static FORCEINLINE HRESULT ICorDebugThreadEnum_Reset(ICorDebugThreadEnum* This) {
    return This->lpVtbl->Reset(This);
}
static FORCEINLINE HRESULT ICorDebugThreadEnum_Clone(ICorDebugThreadEnum* This,ICorDebugEnum **ppEnum) {
    return This->lpVtbl->Clone(This,ppEnum);
}
static FORCEINLINE HRESULT ICorDebugThreadEnum_GetCount(ICorDebugThreadEnum* This,ULONG *pcelt) {
    return This->lpVtbl->GetCount(This,pcelt);
}
/*** ICorDebugThreadEnum methods ***/
static FORCEINLINE HRESULT ICorDebugThreadEnum_Next(ICorDebugThreadEnum* This,ULONG celt,ICorDebugThread * threads[],ULONG *pceltFetched) {
    return This->lpVtbl->Next(This,celt,threads,pceltFetched);
}
#endif
#endif

#endif


#endif  /* __ICorDebugThreadEnum_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugChain interface
 */
#ifndef __ICorDebugChain_INTERFACE_DEFINED__
#define __ICorDebugChain_INTERFACE_DEFINED__

typedef enum CorDebugChainReason {
    CHAIN_NONE = 0x0,
    CHAIN_CLASS_INIT = 0x1,
    CHAIN_EXCEPTION_FILTER = 0x2,
    CHAIN_SECURITY = 0x4,
    CHAIN_CONTEXT_POLICY = 0x8,
    CHAIN_INTERCEPTION = 0x10,
    CHAIN_PROCESS_START = 0x20,
    CHAIN_THREAD_START = 0x40,
    CHAIN_ENTER_MANAGED = 0x80,
    CHAIN_ENTER_UNMANAGED = 0x100,
    CHAIN_DEBUGGER_EVAL = 0x200,
    CHAIN_CONTEXT_SWITCH = 0x400,
    CHAIN_FUNC_EVAL = 0x800
} CorDebugChainReason;
DEFINE_GUID(IID_ICorDebugChain, 0xcc7bcaee, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaee-8a68-11d2-983c-0000f808342d")
ICorDebugChain : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetThread(
        ICorDebugThread **ppThread) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStackRange(
        CORDB_ADDRESS *pStart,
        CORDB_ADDRESS *pEnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetContext(
        ICorDebugContext **ppContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCaller(
        ICorDebugChain **ppChain) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCallee(
        ICorDebugChain **ppChain) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetPrevious(
        ICorDebugChain **ppChain) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNext(
        ICorDebugChain **ppChain) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsManaged(
        BOOL *pManaged) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateFrames(
        ICorDebugFrameEnum **ppFrames) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetActiveFrame(
        ICorDebugFrame **ppFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRegisterSet(
        ICorDebugRegisterSet **ppRegisters) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetReason(
        CorDebugChainReason *pReason) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugChain, 0xcc7bcaee, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugChainVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugChain *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugChain *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugChain *This);

    /*** ICorDebugChain methods ***/
    HRESULT (STDMETHODCALLTYPE *GetThread)(
        ICorDebugChain *This,
        ICorDebugThread **ppThread);

    HRESULT (STDMETHODCALLTYPE *GetStackRange)(
        ICorDebugChain *This,
        CORDB_ADDRESS *pStart,
        CORDB_ADDRESS *pEnd);

    HRESULT (STDMETHODCALLTYPE *GetContext)(
        ICorDebugChain *This,
        ICorDebugContext **ppContext);

    HRESULT (STDMETHODCALLTYPE *GetCaller)(
        ICorDebugChain *This,
        ICorDebugChain **ppChain);

    HRESULT (STDMETHODCALLTYPE *GetCallee)(
        ICorDebugChain *This,
        ICorDebugChain **ppChain);

    HRESULT (STDMETHODCALLTYPE *GetPrevious)(
        ICorDebugChain *This,
        ICorDebugChain **ppChain);

    HRESULT (STDMETHODCALLTYPE *GetNext)(
        ICorDebugChain *This,
        ICorDebugChain **ppChain);

    HRESULT (STDMETHODCALLTYPE *IsManaged)(
        ICorDebugChain *This,
        BOOL *pManaged);

    HRESULT (STDMETHODCALLTYPE *EnumerateFrames)(
        ICorDebugChain *This,
        ICorDebugFrameEnum **ppFrames);

    HRESULT (STDMETHODCALLTYPE *GetActiveFrame)(
        ICorDebugChain *This,
        ICorDebugFrame **ppFrame);

    HRESULT (STDMETHODCALLTYPE *GetRegisterSet)(
        ICorDebugChain *This,
        ICorDebugRegisterSet **ppRegisters);

    HRESULT (STDMETHODCALLTYPE *GetReason)(
        ICorDebugChain *This,
        CorDebugChainReason *pReason);

    END_INTERFACE
} ICorDebugChainVtbl;

interface ICorDebugChain {
    CONST_VTBL ICorDebugChainVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugChain_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugChain_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugChain_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugChain methods ***/
#define ICorDebugChain_GetThread(This,ppThread) (This)->lpVtbl->GetThread(This,ppThread)
#define ICorDebugChain_GetStackRange(This,pStart,pEnd) (This)->lpVtbl->GetStackRange(This,pStart,pEnd)
#define ICorDebugChain_GetContext(This,ppContext) (This)->lpVtbl->GetContext(This,ppContext)
#define ICorDebugChain_GetCaller(This,ppChain) (This)->lpVtbl->GetCaller(This,ppChain)
#define ICorDebugChain_GetCallee(This,ppChain) (This)->lpVtbl->GetCallee(This,ppChain)
#define ICorDebugChain_GetPrevious(This,ppChain) (This)->lpVtbl->GetPrevious(This,ppChain)
#define ICorDebugChain_GetNext(This,ppChain) (This)->lpVtbl->GetNext(This,ppChain)
#define ICorDebugChain_IsManaged(This,pManaged) (This)->lpVtbl->IsManaged(This,pManaged)
#define ICorDebugChain_EnumerateFrames(This,ppFrames) (This)->lpVtbl->EnumerateFrames(This,ppFrames)
#define ICorDebugChain_GetActiveFrame(This,ppFrame) (This)->lpVtbl->GetActiveFrame(This,ppFrame)
#define ICorDebugChain_GetRegisterSet(This,ppRegisters) (This)->lpVtbl->GetRegisterSet(This,ppRegisters)
#define ICorDebugChain_GetReason(This,pReason) (This)->lpVtbl->GetReason(This,pReason)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugChain_QueryInterface(ICorDebugChain* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugChain_AddRef(ICorDebugChain* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugChain_Release(ICorDebugChain* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugChain methods ***/
static FORCEINLINE HRESULT ICorDebugChain_GetThread(ICorDebugChain* This,ICorDebugThread **ppThread) {
    return This->lpVtbl->GetThread(This,ppThread);
}
static FORCEINLINE HRESULT ICorDebugChain_GetStackRange(ICorDebugChain* This,CORDB_ADDRESS *pStart,CORDB_ADDRESS *pEnd) {
    return This->lpVtbl->GetStackRange(This,pStart,pEnd);
}
static FORCEINLINE HRESULT ICorDebugChain_GetContext(ICorDebugChain* This,ICorDebugContext **ppContext) {
    return This->lpVtbl->GetContext(This,ppContext);
}
static FORCEINLINE HRESULT ICorDebugChain_GetCaller(ICorDebugChain* This,ICorDebugChain **ppChain) {
    return This->lpVtbl->GetCaller(This,ppChain);
}
static FORCEINLINE HRESULT ICorDebugChain_GetCallee(ICorDebugChain* This,ICorDebugChain **ppChain) {
    return This->lpVtbl->GetCallee(This,ppChain);
}
static FORCEINLINE HRESULT ICorDebugChain_GetPrevious(ICorDebugChain* This,ICorDebugChain **ppChain) {
    return This->lpVtbl->GetPrevious(This,ppChain);
}
static FORCEINLINE HRESULT ICorDebugChain_GetNext(ICorDebugChain* This,ICorDebugChain **ppChain) {
    return This->lpVtbl->GetNext(This,ppChain);
}
static FORCEINLINE HRESULT ICorDebugChain_IsManaged(ICorDebugChain* This,BOOL *pManaged) {
    return This->lpVtbl->IsManaged(This,pManaged);
}
static FORCEINLINE HRESULT ICorDebugChain_EnumerateFrames(ICorDebugChain* This,ICorDebugFrameEnum **ppFrames) {
    return This->lpVtbl->EnumerateFrames(This,ppFrames);
}
static FORCEINLINE HRESULT ICorDebugChain_GetActiveFrame(ICorDebugChain* This,ICorDebugFrame **ppFrame) {
    return This->lpVtbl->GetActiveFrame(This,ppFrame);
}
static FORCEINLINE HRESULT ICorDebugChain_GetRegisterSet(ICorDebugChain* This,ICorDebugRegisterSet **ppRegisters) {
    return This->lpVtbl->GetRegisterSet(This,ppRegisters);
}
static FORCEINLINE HRESULT ICorDebugChain_GetReason(ICorDebugChain* This,CorDebugChainReason *pReason) {
    return This->lpVtbl->GetReason(This,pReason);
}
#endif
#endif

#endif


#endif  /* __ICorDebugChain_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugFrame interface
 */
#ifndef __ICorDebugFrame_INTERFACE_DEFINED__
#define __ICorDebugFrame_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugFrame, 0xcc7bcaef, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaef-8a68-11d2-983c-0000f808342d")
ICorDebugFrame : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetChain(
        ICorDebugChain **ppChain) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCode(
        ICorDebugCode **ppCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFunction(
        ICorDebugFunction **ppFunction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFunctionToken(
        mdMethodDef *pToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStackRange(
        CORDB_ADDRESS *pStart,
        CORDB_ADDRESS *pEnd) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCaller(
        ICorDebugFrame **ppFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCallee(
        ICorDebugFrame **ppFrame) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateStepper(
        ICorDebugStepper **ppStepper) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugFrame, 0xcc7bcaef, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugFrameVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugFrame *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugFrame *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugFrame *This);

    /*** ICorDebugFrame methods ***/
    HRESULT (STDMETHODCALLTYPE *GetChain)(
        ICorDebugFrame *This,
        ICorDebugChain **ppChain);

    HRESULT (STDMETHODCALLTYPE *GetCode)(
        ICorDebugFrame *This,
        ICorDebugCode **ppCode);

    HRESULT (STDMETHODCALLTYPE *GetFunction)(
        ICorDebugFrame *This,
        ICorDebugFunction **ppFunction);

    HRESULT (STDMETHODCALLTYPE *GetFunctionToken)(
        ICorDebugFrame *This,
        mdMethodDef *pToken);

    HRESULT (STDMETHODCALLTYPE *GetStackRange)(
        ICorDebugFrame *This,
        CORDB_ADDRESS *pStart,
        CORDB_ADDRESS *pEnd);

    HRESULT (STDMETHODCALLTYPE *GetCaller)(
        ICorDebugFrame *This,
        ICorDebugFrame **ppFrame);

    HRESULT (STDMETHODCALLTYPE *GetCallee)(
        ICorDebugFrame *This,
        ICorDebugFrame **ppFrame);

    HRESULT (STDMETHODCALLTYPE *CreateStepper)(
        ICorDebugFrame *This,
        ICorDebugStepper **ppStepper);

    END_INTERFACE
} ICorDebugFrameVtbl;

interface ICorDebugFrame {
    CONST_VTBL ICorDebugFrameVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugFrame_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugFrame_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugFrame_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugFrame methods ***/
#define ICorDebugFrame_GetChain(This,ppChain) (This)->lpVtbl->GetChain(This,ppChain)
#define ICorDebugFrame_GetCode(This,ppCode) (This)->lpVtbl->GetCode(This,ppCode)
#define ICorDebugFrame_GetFunction(This,ppFunction) (This)->lpVtbl->GetFunction(This,ppFunction)
#define ICorDebugFrame_GetFunctionToken(This,pToken) (This)->lpVtbl->GetFunctionToken(This,pToken)
#define ICorDebugFrame_GetStackRange(This,pStart,pEnd) (This)->lpVtbl->GetStackRange(This,pStart,pEnd)
#define ICorDebugFrame_GetCaller(This,ppFrame) (This)->lpVtbl->GetCaller(This,ppFrame)
#define ICorDebugFrame_GetCallee(This,ppFrame) (This)->lpVtbl->GetCallee(This,ppFrame)
#define ICorDebugFrame_CreateStepper(This,ppStepper) (This)->lpVtbl->CreateStepper(This,ppStepper)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugFrame_QueryInterface(ICorDebugFrame* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugFrame_AddRef(ICorDebugFrame* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugFrame_Release(ICorDebugFrame* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugFrame methods ***/
static FORCEINLINE HRESULT ICorDebugFrame_GetChain(ICorDebugFrame* This,ICorDebugChain **ppChain) {
    return This->lpVtbl->GetChain(This,ppChain);
}
static FORCEINLINE HRESULT ICorDebugFrame_GetCode(ICorDebugFrame* This,ICorDebugCode **ppCode) {
    return This->lpVtbl->GetCode(This,ppCode);
}
static FORCEINLINE HRESULT ICorDebugFrame_GetFunction(ICorDebugFrame* This,ICorDebugFunction **ppFunction) {
    return This->lpVtbl->GetFunction(This,ppFunction);
}
static FORCEINLINE HRESULT ICorDebugFrame_GetFunctionToken(ICorDebugFrame* This,mdMethodDef *pToken) {
    return This->lpVtbl->GetFunctionToken(This,pToken);
}
static FORCEINLINE HRESULT ICorDebugFrame_GetStackRange(ICorDebugFrame* This,CORDB_ADDRESS *pStart,CORDB_ADDRESS *pEnd) {
    return This->lpVtbl->GetStackRange(This,pStart,pEnd);
}
static FORCEINLINE HRESULT ICorDebugFrame_GetCaller(ICorDebugFrame* This,ICorDebugFrame **ppFrame) {
    return This->lpVtbl->GetCaller(This,ppFrame);
}
static FORCEINLINE HRESULT ICorDebugFrame_GetCallee(ICorDebugFrame* This,ICorDebugFrame **ppFrame) {
    return This->lpVtbl->GetCallee(This,ppFrame);
}
static FORCEINLINE HRESULT ICorDebugFrame_CreateStepper(ICorDebugFrame* This,ICorDebugStepper **ppStepper) {
    return This->lpVtbl->CreateStepper(This,ppStepper);
}
#endif
#endif

#endif


#endif  /* __ICorDebugFrame_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugRegisterSet interface
 */
#ifndef __ICorDebugRegisterSet_INTERFACE_DEFINED__
#define __ICorDebugRegisterSet_INTERFACE_DEFINED__

typedef enum CorDebugRegister {
    REGISTER_INSTRUCTION_POINTER = 0,
    REGISTER_STACK_POINTER = 1,
    REGISTER_FRAME_POINTER = 2,
    REGISTER_X86_EIP = 0,
    REGISTER_X86_ESP = 1,
    REGISTER_X86_EBP = 2,
    REGISTER_X86_EAX = 3,
    REGISTER_X86_ECX = 4,
    REGISTER_X86_EDX = 5,
    REGISTER_X86_EBX = 6,
    REGISTER_X86_ESI = 7,
    REGISTER_X86_EDI = 8,
    REGISTER_X86_FPSTACK_0 = 9,
    REGISTER_X86_FPSTACK_1 = 10,
    REGISTER_X86_FPSTACK_2 = 11,
    REGISTER_X86_FPSTACK_3 = 12,
    REGISTER_X86_FPSTACK_4 = 13,
    REGISTER_X86_FPSTACK_5 = 14,
    REGISTER_X86_FPSTACK_6 = 15,
    REGISTER_X86_FPSTACK_7 = 16,
    REGISTER_AMD64_RIP = 0,
    REGISTER_AMD64_RSP = 1,
    REGISTER_AMD64_RBP = 2,
    REGISTER_AMD64_RAX = 3,
    REGISTER_AMD64_RCX = 4,
    REGISTER_AMD64_RDX = 5,
    REGISTER_AMD64_RBX = 6,
    REGISTER_AMD64_RSI = 7,
    REGISTER_AMD64_RDI = 8,
    REGISTER_AMD64_R8 = 9,
    REGISTER_AMD64_R9 = 10,
    REGISTER_AMD64_R10 = 11,
    REGISTER_AMD64_R11 = 12,
    REGISTER_AMD64_R12 = 13,
    REGISTER_AMD64_R13 = 14,
    REGISTER_AMD64_R14 = 15,
    REGISTER_AMD64_R15 = 16,
    REGISTER_AMD64_XMM0 = 17,
    REGISTER_AMD64_XMM1 = 18,
    REGISTER_AMD64_XMM2 = 19,
    REGISTER_AMD64_XMM3 = 20,
    REGISTER_AMD64_XMM4 = 21,
    REGISTER_AMD64_XMM5 = 22,
    REGISTER_AMD64_XMM6 = 23,
    REGISTER_AMD64_XMM7 = 24,
    REGISTER_AMD64_XMM8 = 25,
    REGISTER_AMD64_XMM9 = 26,
    REGISTER_AMD64_XMM10 = 27,
    REGISTER_AMD64_XMM11 = 28,
    REGISTER_AMD64_XMM12 = 29,
    REGISTER_AMD64_XMM13 = 30,
    REGISTER_AMD64_XMM14 = 31,
    REGISTER_AMD64_XMM15 = 32,
    REGISTER_IA64_BSP = REGISTER_FRAME_POINTER,
    REGISTER_IA64_R0 = REGISTER_IA64_BSP + 1,
    REGISTER_IA64_F0 = REGISTER_IA64_R0 + 128
} CorDebugRegister;
DEFINE_GUID(IID_ICorDebugRegisterSet, 0xcc7bcb0b, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb0b-8a68-11d2-983c-0000f808342d")
ICorDebugRegisterSet : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetRegistersAvailable(
        ULONG64 *pAvailable) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRegisters(
        ULONG64 mask,
        ULONG32 regCount,
        CORDB_REGISTER regBuffer[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetRegisters(
        ULONG64 mask,
        ULONG32 regCount,
        CORDB_REGISTER regBuffer[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetThreadContext(
        ULONG32 contextSize,
        BYTE context[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetThreadContext(
        ULONG32 contextSize,
        BYTE context[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugRegisterSet, 0xcc7bcb0b, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugRegisterSetVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugRegisterSet *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugRegisterSet *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugRegisterSet *This);

    /*** ICorDebugRegisterSet methods ***/
    HRESULT (STDMETHODCALLTYPE *GetRegistersAvailable)(
        ICorDebugRegisterSet *This,
        ULONG64 *pAvailable);

    HRESULT (STDMETHODCALLTYPE *GetRegisters)(
        ICorDebugRegisterSet *This,
        ULONG64 mask,
        ULONG32 regCount,
        CORDB_REGISTER regBuffer[]);

    HRESULT (STDMETHODCALLTYPE *SetRegisters)(
        ICorDebugRegisterSet *This,
        ULONG64 mask,
        ULONG32 regCount,
        CORDB_REGISTER regBuffer[]);

    HRESULT (STDMETHODCALLTYPE *GetThreadContext)(
        ICorDebugRegisterSet *This,
        ULONG32 contextSize,
        BYTE context[]);

    HRESULT (STDMETHODCALLTYPE *SetThreadContext)(
        ICorDebugRegisterSet *This,
        ULONG32 contextSize,
        BYTE context[]);

    END_INTERFACE
} ICorDebugRegisterSetVtbl;

interface ICorDebugRegisterSet {
    CONST_VTBL ICorDebugRegisterSetVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugRegisterSet_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugRegisterSet_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugRegisterSet_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugRegisterSet methods ***/
#define ICorDebugRegisterSet_GetRegistersAvailable(This,pAvailable) (This)->lpVtbl->GetRegistersAvailable(This,pAvailable)
#define ICorDebugRegisterSet_GetRegisters(This,mask,regCount,regBuffer) (This)->lpVtbl->GetRegisters(This,mask,regCount,regBuffer)
#define ICorDebugRegisterSet_SetRegisters(This,mask,regCount,regBuffer) (This)->lpVtbl->SetRegisters(This,mask,regCount,regBuffer)
#define ICorDebugRegisterSet_GetThreadContext(This,contextSize,context) (This)->lpVtbl->GetThreadContext(This,contextSize,context)
#define ICorDebugRegisterSet_SetThreadContext(This,contextSize,context) (This)->lpVtbl->SetThreadContext(This,contextSize,context)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugRegisterSet_QueryInterface(ICorDebugRegisterSet* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugRegisterSet_AddRef(ICorDebugRegisterSet* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugRegisterSet_Release(ICorDebugRegisterSet* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugRegisterSet methods ***/
static FORCEINLINE HRESULT ICorDebugRegisterSet_GetRegistersAvailable(ICorDebugRegisterSet* This,ULONG64 *pAvailable) {
    return This->lpVtbl->GetRegistersAvailable(This,pAvailable);
}
static FORCEINLINE HRESULT ICorDebugRegisterSet_GetRegisters(ICorDebugRegisterSet* This,ULONG64 mask,ULONG32 regCount,CORDB_REGISTER regBuffer[]) {
    return This->lpVtbl->GetRegisters(This,mask,regCount,regBuffer);
}
static FORCEINLINE HRESULT ICorDebugRegisterSet_SetRegisters(ICorDebugRegisterSet* This,ULONG64 mask,ULONG32 regCount,CORDB_REGISTER regBuffer[]) {
    return This->lpVtbl->SetRegisters(This,mask,regCount,regBuffer);
}
static FORCEINLINE HRESULT ICorDebugRegisterSet_GetThreadContext(ICorDebugRegisterSet* This,ULONG32 contextSize,BYTE context[]) {
    return This->lpVtbl->GetThreadContext(This,contextSize,context);
}
static FORCEINLINE HRESULT ICorDebugRegisterSet_SetThreadContext(ICorDebugRegisterSet* This,ULONG32 contextSize,BYTE context[]) {
    return This->lpVtbl->SetThreadContext(This,contextSize,context);
}
#endif
#endif

#endif


#endif  /* __ICorDebugRegisterSet_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugEval interface
 */
#ifndef __ICorDebugEval_INTERFACE_DEFINED__
#define __ICorDebugEval_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugEval, 0xcc7bcaf6, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaf6-8a68-11d2-983c-0000f808342d")
ICorDebugEval : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CallFunction(
        ICorDebugFunction *pFunction,
        ULONG32 nArgs,
        ICorDebugValue * ppArgs[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE NewObject(
        ICorDebugFunction *pConstructor,
        ULONG32 nArgs,
        ICorDebugValue * ppArgs[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE NewObjectNoConstructor(
        ICorDebugClass *pClass) = 0;

    virtual HRESULT STDMETHODCALLTYPE NewString(
        LPCWSTR string) = 0;

    virtual HRESULT STDMETHODCALLTYPE NewArray(
        CorElementType elementType,
        ICorDebugClass *pElementClass,
        ULONG32 rank,
        ULONG32 dims[],
        ULONG32 lowBounds[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsActive(
        BOOL *pbActive) = 0;

    virtual HRESULT STDMETHODCALLTYPE Abort(
        ) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetResult(
        ICorDebugValue **ppResult) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetThread(
        ICorDebugThread **ppThread) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateValue(
        CorElementType elementType,
        ICorDebugClass *pElementClass,
        ICorDebugValue **ppValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugEval, 0xcc7bcaf6, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugEvalVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugEval *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugEval *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugEval *This);

    /*** ICorDebugEval methods ***/
    HRESULT (STDMETHODCALLTYPE *CallFunction)(
        ICorDebugEval *This,
        ICorDebugFunction *pFunction,
        ULONG32 nArgs,
        ICorDebugValue * ppArgs[]);

    HRESULT (STDMETHODCALLTYPE *NewObject)(
        ICorDebugEval *This,
        ICorDebugFunction *pConstructor,
        ULONG32 nArgs,
        ICorDebugValue * ppArgs[]);

    HRESULT (STDMETHODCALLTYPE *NewObjectNoConstructor)(
        ICorDebugEval *This,
        ICorDebugClass *pClass);

    HRESULT (STDMETHODCALLTYPE *NewString)(
        ICorDebugEval *This,
        LPCWSTR string);

    HRESULT (STDMETHODCALLTYPE *NewArray)(
        ICorDebugEval *This,
        CorElementType elementType,
        ICorDebugClass *pElementClass,
        ULONG32 rank,
        ULONG32 dims[],
        ULONG32 lowBounds[]);

    HRESULT (STDMETHODCALLTYPE *IsActive)(
        ICorDebugEval *This,
        BOOL *pbActive);

    HRESULT (STDMETHODCALLTYPE *Abort)(
        ICorDebugEval *This);

    HRESULT (STDMETHODCALLTYPE *GetResult)(
        ICorDebugEval *This,
        ICorDebugValue **ppResult);

    HRESULT (STDMETHODCALLTYPE *GetThread)(
        ICorDebugEval *This,
        ICorDebugThread **ppThread);

    HRESULT (STDMETHODCALLTYPE *CreateValue)(
        ICorDebugEval *This,
        CorElementType elementType,
        ICorDebugClass *pElementClass,
        ICorDebugValue **ppValue);

    END_INTERFACE
} ICorDebugEvalVtbl;

interface ICorDebugEval {
    CONST_VTBL ICorDebugEvalVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugEval_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugEval_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugEval_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEval methods ***/
#define ICorDebugEval_CallFunction(This,pFunction,nArgs,ppArgs) (This)->lpVtbl->CallFunction(This,pFunction,nArgs,ppArgs)
#define ICorDebugEval_NewObject(This,pConstructor,nArgs,ppArgs) (This)->lpVtbl->NewObject(This,pConstructor,nArgs,ppArgs)
#define ICorDebugEval_NewObjectNoConstructor(This,pClass) (This)->lpVtbl->NewObjectNoConstructor(This,pClass)
#define ICorDebugEval_NewString(This,string) (This)->lpVtbl->NewString(This,string)
#define ICorDebugEval_NewArray(This,elementType,pElementClass,rank,dims,lowBounds) (This)->lpVtbl->NewArray(This,elementType,pElementClass,rank,dims,lowBounds)
#define ICorDebugEval_IsActive(This,pbActive) (This)->lpVtbl->IsActive(This,pbActive)
#define ICorDebugEval_Abort(This) (This)->lpVtbl->Abort(This)
#define ICorDebugEval_GetResult(This,ppResult) (This)->lpVtbl->GetResult(This,ppResult)
#define ICorDebugEval_GetThread(This,ppThread) (This)->lpVtbl->GetThread(This,ppThread)
#define ICorDebugEval_CreateValue(This,elementType,pElementClass,ppValue) (This)->lpVtbl->CreateValue(This,elementType,pElementClass,ppValue)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugEval_QueryInterface(ICorDebugEval* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugEval_AddRef(ICorDebugEval* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugEval_Release(ICorDebugEval* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEval methods ***/
static FORCEINLINE HRESULT ICorDebugEval_CallFunction(ICorDebugEval* This,ICorDebugFunction *pFunction,ULONG32 nArgs,ICorDebugValue * ppArgs[]) {
    return This->lpVtbl->CallFunction(This,pFunction,nArgs,ppArgs);
}
static FORCEINLINE HRESULT ICorDebugEval_NewObject(ICorDebugEval* This,ICorDebugFunction *pConstructor,ULONG32 nArgs,ICorDebugValue * ppArgs[]) {
    return This->lpVtbl->NewObject(This,pConstructor,nArgs,ppArgs);
}
static FORCEINLINE HRESULT ICorDebugEval_NewObjectNoConstructor(ICorDebugEval* This,ICorDebugClass *pClass) {
    return This->lpVtbl->NewObjectNoConstructor(This,pClass);
}
static FORCEINLINE HRESULT ICorDebugEval_NewString(ICorDebugEval* This,LPCWSTR string) {
    return This->lpVtbl->NewString(This,string);
}
static FORCEINLINE HRESULT ICorDebugEval_NewArray(ICorDebugEval* This,CorElementType elementType,ICorDebugClass *pElementClass,ULONG32 rank,ULONG32 dims[],ULONG32 lowBounds[]) {
    return This->lpVtbl->NewArray(This,elementType,pElementClass,rank,dims,lowBounds);
}
static FORCEINLINE HRESULT ICorDebugEval_IsActive(ICorDebugEval* This,BOOL *pbActive) {
    return This->lpVtbl->IsActive(This,pbActive);
}
static FORCEINLINE HRESULT ICorDebugEval_Abort(ICorDebugEval* This) {
    return This->lpVtbl->Abort(This);
}
static FORCEINLINE HRESULT ICorDebugEval_GetResult(ICorDebugEval* This,ICorDebugValue **ppResult) {
    return This->lpVtbl->GetResult(This,ppResult);
}
static FORCEINLINE HRESULT ICorDebugEval_GetThread(ICorDebugEval* This,ICorDebugThread **ppThread) {
    return This->lpVtbl->GetThread(This,ppThread);
}
static FORCEINLINE HRESULT ICorDebugEval_CreateValue(ICorDebugEval* This,CorElementType elementType,ICorDebugClass *pElementClass,ICorDebugValue **ppValue) {
    return This->lpVtbl->CreateValue(This,elementType,pElementClass,ppValue);
}
#endif
#endif

#endif


#endif  /* __ICorDebugEval_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugEditAndContinueSnapshot interface
 */
#ifndef __ICorDebugEditAndContinueSnapshot_INTERFACE_DEFINED__
#define __ICorDebugEditAndContinueSnapshot_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugEditAndContinueSnapshot, 0x6dc3fa01, 0xd7cb, 0x11d2, 0x8a,0x95, 0x00,0x80,0xc7,0x92,0xe5,0xd8);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("6dc3fa01-d7cb-11d2-8a95-0080c792e5d8")
ICorDebugEditAndContinueSnapshot : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE CopyMetaData(
        IStream *pIStream,
        GUID *pMvid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMvid(
        GUID *pMvid) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRoDataRVA(
        ULONG32 *pRoDataRVA) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetRwDataRVA(
        ULONG32 *pRwDataRVA) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPEBytes(
        IStream *pIStream) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetILMap(
        mdToken mdFunction,
        ULONG cMapSize,
        COR_IL_MAP map[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetPESymbolBytes(
        IStream *pIStream) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugEditAndContinueSnapshot, 0x6dc3fa01, 0xd7cb, 0x11d2, 0x8a,0x95, 0x00,0x80,0xc7,0x92,0xe5,0xd8)
#endif
#else
typedef struct ICorDebugEditAndContinueSnapshotVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugEditAndContinueSnapshot *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugEditAndContinueSnapshot *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugEditAndContinueSnapshot *This);

    /*** ICorDebugEditAndContinueSnapshot methods ***/
    HRESULT (STDMETHODCALLTYPE *CopyMetaData)(
        ICorDebugEditAndContinueSnapshot *This,
        IStream *pIStream,
        GUID *pMvid);

    HRESULT (STDMETHODCALLTYPE *GetMvid)(
        ICorDebugEditAndContinueSnapshot *This,
        GUID *pMvid);

    HRESULT (STDMETHODCALLTYPE *GetRoDataRVA)(
        ICorDebugEditAndContinueSnapshot *This,
        ULONG32 *pRoDataRVA);

    HRESULT (STDMETHODCALLTYPE *GetRwDataRVA)(
        ICorDebugEditAndContinueSnapshot *This,
        ULONG32 *pRwDataRVA);

    HRESULT (STDMETHODCALLTYPE *SetPEBytes)(
        ICorDebugEditAndContinueSnapshot *This,
        IStream *pIStream);

    HRESULT (STDMETHODCALLTYPE *SetILMap)(
        ICorDebugEditAndContinueSnapshot *This,
        mdToken mdFunction,
        ULONG cMapSize,
        COR_IL_MAP map[]);

    HRESULT (STDMETHODCALLTYPE *SetPESymbolBytes)(
        ICorDebugEditAndContinueSnapshot *This,
        IStream *pIStream);

    END_INTERFACE
} ICorDebugEditAndContinueSnapshotVtbl;

interface ICorDebugEditAndContinueSnapshot {
    CONST_VTBL ICorDebugEditAndContinueSnapshotVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugEditAndContinueSnapshot_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugEditAndContinueSnapshot_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugEditAndContinueSnapshot_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEditAndContinueSnapshot methods ***/
#define ICorDebugEditAndContinueSnapshot_CopyMetaData(This,pIStream,pMvid) (This)->lpVtbl->CopyMetaData(This,pIStream,pMvid)
#define ICorDebugEditAndContinueSnapshot_GetMvid(This,pMvid) (This)->lpVtbl->GetMvid(This,pMvid)
#define ICorDebugEditAndContinueSnapshot_GetRoDataRVA(This,pRoDataRVA) (This)->lpVtbl->GetRoDataRVA(This,pRoDataRVA)
#define ICorDebugEditAndContinueSnapshot_GetRwDataRVA(This,pRwDataRVA) (This)->lpVtbl->GetRwDataRVA(This,pRwDataRVA)
#define ICorDebugEditAndContinueSnapshot_SetPEBytes(This,pIStream) (This)->lpVtbl->SetPEBytes(This,pIStream)
#define ICorDebugEditAndContinueSnapshot_SetILMap(This,mdFunction,cMapSize,map) (This)->lpVtbl->SetILMap(This,mdFunction,cMapSize,map)
#define ICorDebugEditAndContinueSnapshot_SetPESymbolBytes(This,pIStream) (This)->lpVtbl->SetPESymbolBytes(This,pIStream)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_QueryInterface(ICorDebugEditAndContinueSnapshot* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugEditAndContinueSnapshot_AddRef(ICorDebugEditAndContinueSnapshot* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugEditAndContinueSnapshot_Release(ICorDebugEditAndContinueSnapshot* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEditAndContinueSnapshot methods ***/
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_CopyMetaData(ICorDebugEditAndContinueSnapshot* This,IStream *pIStream,GUID *pMvid) {
    return This->lpVtbl->CopyMetaData(This,pIStream,pMvid);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_GetMvid(ICorDebugEditAndContinueSnapshot* This,GUID *pMvid) {
    return This->lpVtbl->GetMvid(This,pMvid);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_GetRoDataRVA(ICorDebugEditAndContinueSnapshot* This,ULONG32 *pRoDataRVA) {
    return This->lpVtbl->GetRoDataRVA(This,pRoDataRVA);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_GetRwDataRVA(ICorDebugEditAndContinueSnapshot* This,ULONG32 *pRwDataRVA) {
    return This->lpVtbl->GetRwDataRVA(This,pRwDataRVA);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_SetPEBytes(ICorDebugEditAndContinueSnapshot* This,IStream *pIStream) {
    return This->lpVtbl->SetPEBytes(This,pIStream);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_SetILMap(ICorDebugEditAndContinueSnapshot* This,mdToken mdFunction,ULONG cMapSize,COR_IL_MAP map[]) {
    return This->lpVtbl->SetILMap(This,mdFunction,cMapSize,map);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueSnapshot_SetPESymbolBytes(ICorDebugEditAndContinueSnapshot* This,IStream *pIStream) {
    return This->lpVtbl->SetPESymbolBytes(This,pIStream);
}
#endif
#endif

#endif


#endif  /* __ICorDebugEditAndContinueSnapshot_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugModule interface
 */
#ifndef __ICorDebugModule_INTERFACE_DEFINED__
#define __ICorDebugModule_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugModule, 0xdba2d8c1, 0xe5c5, 0x4069, 0x8c,0x13, 0x10,0xa7,0xc6,0xab,0xf4,0x3d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("dba2d8c1-e5c5-4069-8c13-10a7c6abf43d")
ICorDebugModule : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProcess(
        ICorDebugProcess **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetBaseAddress(
        CORDB_ADDRESS *pAddress) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAssembly(
        ICorDebugAssembly **ppAssembly) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetName(
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableJITDebugging(
        BOOL bTrackJITInfo,
        BOOL bAllowJitOpts) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnableClassLoadCallbacks(
        BOOL bClassLoadCallbacks) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFunctionFromToken(
        mdMethodDef methodDef,
        ICorDebugFunction **ppFunction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFunctionFromRVA(
        CORDB_ADDRESS rva,
        ICorDebugFunction **ppFunction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetClassFromToken(
        mdTypeDef typeDef,
        ICorDebugClass **ppClass) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
        ICorDebugModuleBreakpoint **ppBreakpoint) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEditAndContinueSnapshot(
        ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetMetaDataInterface(
        REFIID riid,
        IUnknown **ppObj) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetToken(
        mdModule *pToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsDynamic(
        BOOL *pDynamic) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetGlobalVariableValue(
        mdFieldDef fieldDef,
        ICorDebugValue **ppValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSize(
        ULONG32 *pcBytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsInMemory(
        BOOL *pInMemory) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugModule, 0xdba2d8c1, 0xe5c5, 0x4069, 0x8c,0x13, 0x10,0xa7,0xc6,0xab,0xf4,0x3d)
#endif
#else
typedef struct ICorDebugModuleVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugModule *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugModule *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugModule *This);

    /*** ICorDebugModule methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProcess)(
        ICorDebugModule *This,
        ICorDebugProcess **ppProcess);

    HRESULT (STDMETHODCALLTYPE *GetBaseAddress)(
        ICorDebugModule *This,
        CORDB_ADDRESS *pAddress);

    HRESULT (STDMETHODCALLTYPE *GetAssembly)(
        ICorDebugModule *This,
        ICorDebugAssembly **ppAssembly);

    HRESULT (STDMETHODCALLTYPE *GetName)(
        ICorDebugModule *This,
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]);

    HRESULT (STDMETHODCALLTYPE *EnableJITDebugging)(
        ICorDebugModule *This,
        BOOL bTrackJITInfo,
        BOOL bAllowJitOpts);

    HRESULT (STDMETHODCALLTYPE *EnableClassLoadCallbacks)(
        ICorDebugModule *This,
        BOOL bClassLoadCallbacks);

    HRESULT (STDMETHODCALLTYPE *GetFunctionFromToken)(
        ICorDebugModule *This,
        mdMethodDef methodDef,
        ICorDebugFunction **ppFunction);

    HRESULT (STDMETHODCALLTYPE *GetFunctionFromRVA)(
        ICorDebugModule *This,
        CORDB_ADDRESS rva,
        ICorDebugFunction **ppFunction);

    HRESULT (STDMETHODCALLTYPE *GetClassFromToken)(
        ICorDebugModule *This,
        mdTypeDef typeDef,
        ICorDebugClass **ppClass);

    HRESULT (STDMETHODCALLTYPE *CreateBreakpoint)(
        ICorDebugModule *This,
        ICorDebugModuleBreakpoint **ppBreakpoint);

    HRESULT (STDMETHODCALLTYPE *GetEditAndContinueSnapshot)(
        ICorDebugModule *This,
        ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot);

    HRESULT (STDMETHODCALLTYPE *GetMetaDataInterface)(
        ICorDebugModule *This,
        REFIID riid,
        IUnknown **ppObj);

    HRESULT (STDMETHODCALLTYPE *GetToken)(
        ICorDebugModule *This,
        mdModule *pToken);

    HRESULT (STDMETHODCALLTYPE *IsDynamic)(
        ICorDebugModule *This,
        BOOL *pDynamic);

    HRESULT (STDMETHODCALLTYPE *GetGlobalVariableValue)(
        ICorDebugModule *This,
        mdFieldDef fieldDef,
        ICorDebugValue **ppValue);

    HRESULT (STDMETHODCALLTYPE *GetSize)(
        ICorDebugModule *This,
        ULONG32 *pcBytes);

    HRESULT (STDMETHODCALLTYPE *IsInMemory)(
        ICorDebugModule *This,
        BOOL *pInMemory);

    END_INTERFACE
} ICorDebugModuleVtbl;

interface ICorDebugModule {
    CONST_VTBL ICorDebugModuleVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugModule_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugModule_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugModule_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugModule methods ***/
#define ICorDebugModule_GetProcess(This,ppProcess) (This)->lpVtbl->GetProcess(This,ppProcess)
#define ICorDebugModule_GetBaseAddress(This,pAddress) (This)->lpVtbl->GetBaseAddress(This,pAddress)
#define ICorDebugModule_GetAssembly(This,ppAssembly) (This)->lpVtbl->GetAssembly(This,ppAssembly)
#define ICorDebugModule_GetName(This,cchName,pcchName,szName) (This)->lpVtbl->GetName(This,cchName,pcchName,szName)
#define ICorDebugModule_EnableJITDebugging(This,bTrackJITInfo,bAllowJitOpts) (This)->lpVtbl->EnableJITDebugging(This,bTrackJITInfo,bAllowJitOpts)
#define ICorDebugModule_EnableClassLoadCallbacks(This,bClassLoadCallbacks) (This)->lpVtbl->EnableClassLoadCallbacks(This,bClassLoadCallbacks)
#define ICorDebugModule_GetFunctionFromToken(This,methodDef,ppFunction) (This)->lpVtbl->GetFunctionFromToken(This,methodDef,ppFunction)
#define ICorDebugModule_GetFunctionFromRVA(This,rva,ppFunction) (This)->lpVtbl->GetFunctionFromRVA(This,rva,ppFunction)
#define ICorDebugModule_GetClassFromToken(This,typeDef,ppClass) (This)->lpVtbl->GetClassFromToken(This,typeDef,ppClass)
#define ICorDebugModule_CreateBreakpoint(This,ppBreakpoint) (This)->lpVtbl->CreateBreakpoint(This,ppBreakpoint)
#define ICorDebugModule_GetEditAndContinueSnapshot(This,ppEditAndContinueSnapshot) (This)->lpVtbl->GetEditAndContinueSnapshot(This,ppEditAndContinueSnapshot)
#define ICorDebugModule_GetMetaDataInterface(This,riid,ppObj) (This)->lpVtbl->GetMetaDataInterface(This,riid,ppObj)
#define ICorDebugModule_GetToken(This,pToken) (This)->lpVtbl->GetToken(This,pToken)
#define ICorDebugModule_IsDynamic(This,pDynamic) (This)->lpVtbl->IsDynamic(This,pDynamic)
#define ICorDebugModule_GetGlobalVariableValue(This,fieldDef,ppValue) (This)->lpVtbl->GetGlobalVariableValue(This,fieldDef,ppValue)
#define ICorDebugModule_GetSize(This,pcBytes) (This)->lpVtbl->GetSize(This,pcBytes)
#define ICorDebugModule_IsInMemory(This,pInMemory) (This)->lpVtbl->IsInMemory(This,pInMemory)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugModule_QueryInterface(ICorDebugModule* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugModule_AddRef(ICorDebugModule* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugModule_Release(ICorDebugModule* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugModule methods ***/
static FORCEINLINE HRESULT ICorDebugModule_GetProcess(ICorDebugModule* This,ICorDebugProcess **ppProcess) {
    return This->lpVtbl->GetProcess(This,ppProcess);
}
static FORCEINLINE HRESULT ICorDebugModule_GetBaseAddress(ICorDebugModule* This,CORDB_ADDRESS *pAddress) {
    return This->lpVtbl->GetBaseAddress(This,pAddress);
}
static FORCEINLINE HRESULT ICorDebugModule_GetAssembly(ICorDebugModule* This,ICorDebugAssembly **ppAssembly) {
    return This->lpVtbl->GetAssembly(This,ppAssembly);
}
static FORCEINLINE HRESULT ICorDebugModule_GetName(ICorDebugModule* This,ULONG32 cchName,ULONG32 *pcchName,WCHAR szName[]) {
    return This->lpVtbl->GetName(This,cchName,pcchName,szName);
}
static FORCEINLINE HRESULT ICorDebugModule_EnableJITDebugging(ICorDebugModule* This,BOOL bTrackJITInfo,BOOL bAllowJitOpts) {
    return This->lpVtbl->EnableJITDebugging(This,bTrackJITInfo,bAllowJitOpts);
}
static FORCEINLINE HRESULT ICorDebugModule_EnableClassLoadCallbacks(ICorDebugModule* This,BOOL bClassLoadCallbacks) {
    return This->lpVtbl->EnableClassLoadCallbacks(This,bClassLoadCallbacks);
}
static FORCEINLINE HRESULT ICorDebugModule_GetFunctionFromToken(ICorDebugModule* This,mdMethodDef methodDef,ICorDebugFunction **ppFunction) {
    return This->lpVtbl->GetFunctionFromToken(This,methodDef,ppFunction);
}
static FORCEINLINE HRESULT ICorDebugModule_GetFunctionFromRVA(ICorDebugModule* This,CORDB_ADDRESS rva,ICorDebugFunction **ppFunction) {
    return This->lpVtbl->GetFunctionFromRVA(This,rva,ppFunction);
}
static FORCEINLINE HRESULT ICorDebugModule_GetClassFromToken(ICorDebugModule* This,mdTypeDef typeDef,ICorDebugClass **ppClass) {
    return This->lpVtbl->GetClassFromToken(This,typeDef,ppClass);
}
static FORCEINLINE HRESULT ICorDebugModule_CreateBreakpoint(ICorDebugModule* This,ICorDebugModuleBreakpoint **ppBreakpoint) {
    return This->lpVtbl->CreateBreakpoint(This,ppBreakpoint);
}
static FORCEINLINE HRESULT ICorDebugModule_GetEditAndContinueSnapshot(ICorDebugModule* This,ICorDebugEditAndContinueSnapshot **ppEditAndContinueSnapshot) {
    return This->lpVtbl->GetEditAndContinueSnapshot(This,ppEditAndContinueSnapshot);
}
static FORCEINLINE HRESULT ICorDebugModule_GetMetaDataInterface(ICorDebugModule* This,REFIID riid,IUnknown **ppObj) {
    return This->lpVtbl->GetMetaDataInterface(This,riid,ppObj);
}
static FORCEINLINE HRESULT ICorDebugModule_GetToken(ICorDebugModule* This,mdModule *pToken) {
    return This->lpVtbl->GetToken(This,pToken);
}
static FORCEINLINE HRESULT ICorDebugModule_IsDynamic(ICorDebugModule* This,BOOL *pDynamic) {
    return This->lpVtbl->IsDynamic(This,pDynamic);
}
static FORCEINLINE HRESULT ICorDebugModule_GetGlobalVariableValue(ICorDebugModule* This,mdFieldDef fieldDef,ICorDebugValue **ppValue) {
    return This->lpVtbl->GetGlobalVariableValue(This,fieldDef,ppValue);
}
static FORCEINLINE HRESULT ICorDebugModule_GetSize(ICorDebugModule* This,ULONG32 *pcBytes) {
    return This->lpVtbl->GetSize(This,pcBytes);
}
static FORCEINLINE HRESULT ICorDebugModule_IsInMemory(ICorDebugModule* This,BOOL *pInMemory) {
    return This->lpVtbl->IsInMemory(This,pInMemory);
}
#endif
#endif

#endif


#endif  /* __ICorDebugModule_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugClass interface
 */
#ifndef __ICorDebugClass_INTERFACE_DEFINED__
#define __ICorDebugClass_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugClass, 0xcc7bcaf5, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaf5-8a68-11d2-983c-0000f808342d")
ICorDebugClass : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetModule(
        ICorDebugModule **pModule) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetToken(
        mdTypeDef *pTypeDef) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetStaticFieldValue(
        mdFieldDef fieldDef,
        ICorDebugFrame *pFrame,
        ICorDebugValue **ppValue) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugClass, 0xcc7bcaf5, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugClassVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugClass *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugClass *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugClass *This);

    /*** ICorDebugClass methods ***/
    HRESULT (STDMETHODCALLTYPE *GetModule)(
        ICorDebugClass *This,
        ICorDebugModule **pModule);

    HRESULT (STDMETHODCALLTYPE *GetToken)(
        ICorDebugClass *This,
        mdTypeDef *pTypeDef);

    HRESULT (STDMETHODCALLTYPE *GetStaticFieldValue)(
        ICorDebugClass *This,
        mdFieldDef fieldDef,
        ICorDebugFrame *pFrame,
        ICorDebugValue **ppValue);

    END_INTERFACE
} ICorDebugClassVtbl;

interface ICorDebugClass {
    CONST_VTBL ICorDebugClassVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugClass_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugClass_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugClass_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugClass methods ***/
#define ICorDebugClass_GetModule(This,pModule) (This)->lpVtbl->GetModule(This,pModule)
#define ICorDebugClass_GetToken(This,pTypeDef) (This)->lpVtbl->GetToken(This,pTypeDef)
#define ICorDebugClass_GetStaticFieldValue(This,fieldDef,pFrame,ppValue) (This)->lpVtbl->GetStaticFieldValue(This,fieldDef,pFrame,ppValue)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugClass_QueryInterface(ICorDebugClass* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugClass_AddRef(ICorDebugClass* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugClass_Release(ICorDebugClass* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugClass methods ***/
static FORCEINLINE HRESULT ICorDebugClass_GetModule(ICorDebugClass* This,ICorDebugModule **pModule) {
    return This->lpVtbl->GetModule(This,pModule);
}
static FORCEINLINE HRESULT ICorDebugClass_GetToken(ICorDebugClass* This,mdTypeDef *pTypeDef) {
    return This->lpVtbl->GetToken(This,pTypeDef);
}
static FORCEINLINE HRESULT ICorDebugClass_GetStaticFieldValue(ICorDebugClass* This,mdFieldDef fieldDef,ICorDebugFrame *pFrame,ICorDebugValue **ppValue) {
    return This->lpVtbl->GetStaticFieldValue(This,fieldDef,pFrame,ppValue);
}
#endif
#endif

#endif


#endif  /* __ICorDebugClass_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugAssembly interface
 */
#ifndef __ICorDebugAssembly_INTERFACE_DEFINED__
#define __ICorDebugAssembly_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugAssembly, 0xdf59507c, 0xd47a, 0x459e, 0xbc,0xe2, 0x64,0x27,0xea,0xc8,0xfd,0x06);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("df59507c-d47a-459e-bce2-6427eac8fd06")
ICorDebugAssembly : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetProcess(
        ICorDebugProcess **ppProcess) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAppDomain(
        ICorDebugAppDomain **ppAppDomain) = 0;

    virtual HRESULT STDMETHODCALLTYPE EnumerateModules(
        ICorDebugModuleEnum **ppModules) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCodeBase(
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetName(
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugAssembly, 0xdf59507c, 0xd47a, 0x459e, 0xbc,0xe2, 0x64,0x27,0xea,0xc8,0xfd,0x06)
#endif
#else
typedef struct ICorDebugAssemblyVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugAssembly *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugAssembly *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugAssembly *This);

    /*** ICorDebugAssembly methods ***/
    HRESULT (STDMETHODCALLTYPE *GetProcess)(
        ICorDebugAssembly *This,
        ICorDebugProcess **ppProcess);

    HRESULT (STDMETHODCALLTYPE *GetAppDomain)(
        ICorDebugAssembly *This,
        ICorDebugAppDomain **ppAppDomain);

    HRESULT (STDMETHODCALLTYPE *EnumerateModules)(
        ICorDebugAssembly *This,
        ICorDebugModuleEnum **ppModules);

    HRESULT (STDMETHODCALLTYPE *GetCodeBase)(
        ICorDebugAssembly *This,
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]);

    HRESULT (STDMETHODCALLTYPE *GetName)(
        ICorDebugAssembly *This,
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]);

    END_INTERFACE
} ICorDebugAssemblyVtbl;

interface ICorDebugAssembly {
    CONST_VTBL ICorDebugAssemblyVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugAssembly_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugAssembly_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugAssembly_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugAssembly methods ***/
#define ICorDebugAssembly_GetProcess(This,ppProcess) (This)->lpVtbl->GetProcess(This,ppProcess)
#define ICorDebugAssembly_GetAppDomain(This,ppAppDomain) (This)->lpVtbl->GetAppDomain(This,ppAppDomain)
#define ICorDebugAssembly_EnumerateModules(This,ppModules) (This)->lpVtbl->EnumerateModules(This,ppModules)
#define ICorDebugAssembly_GetCodeBase(This,cchName,pcchName,szName) (This)->lpVtbl->GetCodeBase(This,cchName,pcchName,szName)
#define ICorDebugAssembly_GetName(This,cchName,pcchName,szName) (This)->lpVtbl->GetName(This,cchName,pcchName,szName)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugAssembly_QueryInterface(ICorDebugAssembly* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugAssembly_AddRef(ICorDebugAssembly* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugAssembly_Release(ICorDebugAssembly* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugAssembly methods ***/
static FORCEINLINE HRESULT ICorDebugAssembly_GetProcess(ICorDebugAssembly* This,ICorDebugProcess **ppProcess) {
    return This->lpVtbl->GetProcess(This,ppProcess);
}
static FORCEINLINE HRESULT ICorDebugAssembly_GetAppDomain(ICorDebugAssembly* This,ICorDebugAppDomain **ppAppDomain) {
    return This->lpVtbl->GetAppDomain(This,ppAppDomain);
}
static FORCEINLINE HRESULT ICorDebugAssembly_EnumerateModules(ICorDebugAssembly* This,ICorDebugModuleEnum **ppModules) {
    return This->lpVtbl->EnumerateModules(This,ppModules);
}
static FORCEINLINE HRESULT ICorDebugAssembly_GetCodeBase(ICorDebugAssembly* This,ULONG32 cchName,ULONG32 *pcchName,WCHAR szName[]) {
    return This->lpVtbl->GetCodeBase(This,cchName,pcchName,szName);
}
static FORCEINLINE HRESULT ICorDebugAssembly_GetName(ICorDebugAssembly* This,ULONG32 cchName,ULONG32 *pcchName,WCHAR szName[]) {
    return This->lpVtbl->GetName(This,cchName,pcchName,szName);
}
#endif
#endif

#endif


#endif  /* __ICorDebugAssembly_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugFunction interface
 */
#ifndef __ICorDebugFunction_INTERFACE_DEFINED__
#define __ICorDebugFunction_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugFunction, 0xcc7bcaf3, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaf3-8a68-11d2-983c-0000f808342d")
ICorDebugFunction : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetModule(
        ICorDebugModule **ppModule) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetClass(
        ICorDebugClass **ppClass) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetToken(
        mdMethodDef *pMethodDef) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetILCode(
        ICorDebugCode **ppCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetNativeCode(
        ICorDebugCode **ppCode) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
        ICorDebugFunctionBreakpoint **ppBreakpoint) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetLocalVarSigToken(
        mdSignature *pmdSig) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCurrentVersionNumber(
        ULONG32 *pnCurrentVersion) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugFunction, 0xcc7bcaf3, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugFunctionVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugFunction *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugFunction *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugFunction *This);

    /*** ICorDebugFunction methods ***/
    HRESULT (STDMETHODCALLTYPE *GetModule)(
        ICorDebugFunction *This,
        ICorDebugModule **ppModule);

    HRESULT (STDMETHODCALLTYPE *GetClass)(
        ICorDebugFunction *This,
        ICorDebugClass **ppClass);

    HRESULT (STDMETHODCALLTYPE *GetToken)(
        ICorDebugFunction *This,
        mdMethodDef *pMethodDef);

    HRESULT (STDMETHODCALLTYPE *GetILCode)(
        ICorDebugFunction *This,
        ICorDebugCode **ppCode);

    HRESULT (STDMETHODCALLTYPE *GetNativeCode)(
        ICorDebugFunction *This,
        ICorDebugCode **ppCode);

    HRESULT (STDMETHODCALLTYPE *CreateBreakpoint)(
        ICorDebugFunction *This,
        ICorDebugFunctionBreakpoint **ppBreakpoint);

    HRESULT (STDMETHODCALLTYPE *GetLocalVarSigToken)(
        ICorDebugFunction *This,
        mdSignature *pmdSig);

    HRESULT (STDMETHODCALLTYPE *GetCurrentVersionNumber)(
        ICorDebugFunction *This,
        ULONG32 *pnCurrentVersion);

    END_INTERFACE
} ICorDebugFunctionVtbl;

interface ICorDebugFunction {
    CONST_VTBL ICorDebugFunctionVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugFunction_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugFunction_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugFunction_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugFunction methods ***/
#define ICorDebugFunction_GetModule(This,ppModule) (This)->lpVtbl->GetModule(This,ppModule)
#define ICorDebugFunction_GetClass(This,ppClass) (This)->lpVtbl->GetClass(This,ppClass)
#define ICorDebugFunction_GetToken(This,pMethodDef) (This)->lpVtbl->GetToken(This,pMethodDef)
#define ICorDebugFunction_GetILCode(This,ppCode) (This)->lpVtbl->GetILCode(This,ppCode)
#define ICorDebugFunction_GetNativeCode(This,ppCode) (This)->lpVtbl->GetNativeCode(This,ppCode)
#define ICorDebugFunction_CreateBreakpoint(This,ppBreakpoint) (This)->lpVtbl->CreateBreakpoint(This,ppBreakpoint)
#define ICorDebugFunction_GetLocalVarSigToken(This,pmdSig) (This)->lpVtbl->GetLocalVarSigToken(This,pmdSig)
#define ICorDebugFunction_GetCurrentVersionNumber(This,pnCurrentVersion) (This)->lpVtbl->GetCurrentVersionNumber(This,pnCurrentVersion)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugFunction_QueryInterface(ICorDebugFunction* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugFunction_AddRef(ICorDebugFunction* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugFunction_Release(ICorDebugFunction* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugFunction methods ***/
static FORCEINLINE HRESULT ICorDebugFunction_GetModule(ICorDebugFunction* This,ICorDebugModule **ppModule) {
    return This->lpVtbl->GetModule(This,ppModule);
}
static FORCEINLINE HRESULT ICorDebugFunction_GetClass(ICorDebugFunction* This,ICorDebugClass **ppClass) {
    return This->lpVtbl->GetClass(This,ppClass);
}
static FORCEINLINE HRESULT ICorDebugFunction_GetToken(ICorDebugFunction* This,mdMethodDef *pMethodDef) {
    return This->lpVtbl->GetToken(This,pMethodDef);
}
static FORCEINLINE HRESULT ICorDebugFunction_GetILCode(ICorDebugFunction* This,ICorDebugCode **ppCode) {
    return This->lpVtbl->GetILCode(This,ppCode);
}
static FORCEINLINE HRESULT ICorDebugFunction_GetNativeCode(ICorDebugFunction* This,ICorDebugCode **ppCode) {
    return This->lpVtbl->GetNativeCode(This,ppCode);
}
static FORCEINLINE HRESULT ICorDebugFunction_CreateBreakpoint(ICorDebugFunction* This,ICorDebugFunctionBreakpoint **ppBreakpoint) {
    return This->lpVtbl->CreateBreakpoint(This,ppBreakpoint);
}
static FORCEINLINE HRESULT ICorDebugFunction_GetLocalVarSigToken(ICorDebugFunction* This,mdSignature *pmdSig) {
    return This->lpVtbl->GetLocalVarSigToken(This,pmdSig);
}
static FORCEINLINE HRESULT ICorDebugFunction_GetCurrentVersionNumber(ICorDebugFunction* This,ULONG32 *pnCurrentVersion) {
    return This->lpVtbl->GetCurrentVersionNumber(This,pnCurrentVersion);
}
#endif
#endif

#endif


#endif  /* __ICorDebugFunction_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugUnmanagedCallback interface
 */
#ifndef __ICorDebugUnmanagedCallback_INTERFACE_DEFINED__
#define __ICorDebugUnmanagedCallback_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugUnmanagedCallback, 0x5263e909, 0x8cb5, 0x11d3, 0xbd,0x2f, 0x00,0x00,0xf8,0x08,0x49,0xbd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("5263e909-8cb5-11d3-bd2f-0000f80849bd")
ICorDebugUnmanagedCallback : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE DebugEvent(
        LPDEBUG_EVENT pDebugEvent,
        BOOL fOutOfBand) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugUnmanagedCallback, 0x5263e909, 0x8cb5, 0x11d3, 0xbd,0x2f, 0x00,0x00,0xf8,0x08,0x49,0xbd)
#endif
#else
typedef struct ICorDebugUnmanagedCallbackVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugUnmanagedCallback *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugUnmanagedCallback *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugUnmanagedCallback *This);

    /*** ICorDebugUnmanagedCallback methods ***/
    HRESULT (STDMETHODCALLTYPE *DebugEvent)(
        ICorDebugUnmanagedCallback *This,
        LPDEBUG_EVENT pDebugEvent,
        BOOL fOutOfBand);

    END_INTERFACE
} ICorDebugUnmanagedCallbackVtbl;

interface ICorDebugUnmanagedCallback {
    CONST_VTBL ICorDebugUnmanagedCallbackVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugUnmanagedCallback_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugUnmanagedCallback_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugUnmanagedCallback_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugUnmanagedCallback methods ***/
#define ICorDebugUnmanagedCallback_DebugEvent(This,pDebugEvent,fOutOfBand) (This)->lpVtbl->DebugEvent(This,pDebugEvent,fOutOfBand)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugUnmanagedCallback_QueryInterface(ICorDebugUnmanagedCallback* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugUnmanagedCallback_AddRef(ICorDebugUnmanagedCallback* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugUnmanagedCallback_Release(ICorDebugUnmanagedCallback* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugUnmanagedCallback methods ***/
static FORCEINLINE HRESULT ICorDebugUnmanagedCallback_DebugEvent(ICorDebugUnmanagedCallback* This,LPDEBUG_EVENT pDebugEvent,BOOL fOutOfBand) {
    return This->lpVtbl->DebugEvent(This,pDebugEvent,fOutOfBand);
}
#endif
#endif

#endif


#endif  /* __ICorDebugUnmanagedCallback_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugEditAndContinueErrorInfo interface
 */
#ifndef __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__
#define __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugEditAndContinueErrorInfo, 0x8d600d41, 0xf4f6, 0x4cb3, 0xb7,0xec, 0x7b,0xd1,0x64,0x94,0x40,0x36);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("8d600d41-f4f6-4cb3-b7ec-7bd164944036")
ICorDebugEditAndContinueErrorInfo : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetModule(
        ICorDebugModule **ppModule) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetToken(
        mdToken *pToken) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetErrorCode(
        HRESULT *pHr) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetString(
        ULONG32 cchString,
        ULONG32 *pcchString,
        WCHAR szString[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugEditAndContinueErrorInfo, 0x8d600d41, 0xf4f6, 0x4cb3, 0xb7,0xec, 0x7b,0xd1,0x64,0x94,0x40,0x36)
#endif
#else
typedef struct ICorDebugEditAndContinueErrorInfoVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugEditAndContinueErrorInfo *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugEditAndContinueErrorInfo *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugEditAndContinueErrorInfo *This);

    /*** ICorDebugEditAndContinueErrorInfo methods ***/
    HRESULT (STDMETHODCALLTYPE *GetModule)(
        ICorDebugEditAndContinueErrorInfo *This,
        ICorDebugModule **ppModule);

    HRESULT (STDMETHODCALLTYPE *GetToken)(
        ICorDebugEditAndContinueErrorInfo *This,
        mdToken *pToken);

    HRESULT (STDMETHODCALLTYPE *GetErrorCode)(
        ICorDebugEditAndContinueErrorInfo *This,
        HRESULT *pHr);

    HRESULT (STDMETHODCALLTYPE *GetString)(
        ICorDebugEditAndContinueErrorInfo *This,
        ULONG32 cchString,
        ULONG32 *pcchString,
        WCHAR szString[]);

    END_INTERFACE
} ICorDebugEditAndContinueErrorInfoVtbl;

interface ICorDebugEditAndContinueErrorInfo {
    CONST_VTBL ICorDebugEditAndContinueErrorInfoVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugEditAndContinueErrorInfo_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugEditAndContinueErrorInfo_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugEditAndContinueErrorInfo_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugEditAndContinueErrorInfo methods ***/
#define ICorDebugEditAndContinueErrorInfo_GetModule(This,ppModule) (This)->lpVtbl->GetModule(This,ppModule)
#define ICorDebugEditAndContinueErrorInfo_GetToken(This,pToken) (This)->lpVtbl->GetToken(This,pToken)
#define ICorDebugEditAndContinueErrorInfo_GetErrorCode(This,pHr) (This)->lpVtbl->GetErrorCode(This,pHr)
#define ICorDebugEditAndContinueErrorInfo_GetString(This,cchString,pcchString,szString) (This)->lpVtbl->GetString(This,cchString,pcchString,szString)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugEditAndContinueErrorInfo_QueryInterface(ICorDebugEditAndContinueErrorInfo* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugEditAndContinueErrorInfo_AddRef(ICorDebugEditAndContinueErrorInfo* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugEditAndContinueErrorInfo_Release(ICorDebugEditAndContinueErrorInfo* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugEditAndContinueErrorInfo methods ***/
static FORCEINLINE HRESULT ICorDebugEditAndContinueErrorInfo_GetModule(ICorDebugEditAndContinueErrorInfo* This,ICorDebugModule **ppModule) {
    return This->lpVtbl->GetModule(This,ppModule);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueErrorInfo_GetToken(ICorDebugEditAndContinueErrorInfo* This,mdToken *pToken) {
    return This->lpVtbl->GetToken(This,pToken);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueErrorInfo_GetErrorCode(ICorDebugEditAndContinueErrorInfo* This,HRESULT *pHr) {
    return This->lpVtbl->GetErrorCode(This,pHr);
}
static FORCEINLINE HRESULT ICorDebugEditAndContinueErrorInfo_GetString(ICorDebugEditAndContinueErrorInfo* This,ULONG32 cchString,ULONG32 *pcchString,WCHAR szString[]) {
    return This->lpVtbl->GetString(This,cchString,pcchString,szString);
}
#endif
#endif

#endif


#endif  /* __ICorDebugEditAndContinueErrorInfo_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugObjectValue interface
 */
#ifndef __ICorDebugObjectValue_INTERFACE_DEFINED__
#define __ICorDebugObjectValue_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugObjectValue, 0x18ad3d6e, 0xb7d2, 0x11d2, 0xbd,0x04, 0x00,0x00,0xf8,0x08,0x49,0xbd);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("18ad3d6e-b7d2-11d2-bd04-0000f80849bd")
ICorDebugObjectValue : public ICorDebugValue
{
    virtual HRESULT STDMETHODCALLTYPE GetClass(
        ICorDebugClass **ppClass) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFieldValue(
        ICorDebugClass *pClass,
        mdFieldDef fieldDef,
        ICorDebugValue **ppValue) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVirtualMethod(
        mdMemberRef memberRef,
        ICorDebugFunction **ppFunction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetContext(
        ICorDebugContext **ppContext) = 0;

    virtual HRESULT STDMETHODCALLTYPE IsValueClass(
        BOOL *pbIsValueClass) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetManagedCopy(
        IUnknown **ppObject) = 0;

    virtual HRESULT STDMETHODCALLTYPE SetFromManagedCopy(
        IUnknown *pObject) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugObjectValue, 0x18ad3d6e, 0xb7d2, 0x11d2, 0xbd,0x04, 0x00,0x00,0xf8,0x08,0x49,0xbd)
#endif
#else
typedef struct ICorDebugObjectValueVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugObjectValue *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugObjectValue *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugObjectValue *This);

    /*** ICorDebugValue methods ***/
    HRESULT (STDMETHODCALLTYPE *GetType)(
        ICorDebugObjectValue *This,
        CorElementType *pType);

    HRESULT (STDMETHODCALLTYPE *GetSize)(
        ICorDebugObjectValue *This,
        ULONG32 *pSize);

    HRESULT (STDMETHODCALLTYPE *GetAddress)(
        ICorDebugObjectValue *This,
        CORDB_ADDRESS *pAddress);

    HRESULT (STDMETHODCALLTYPE *CreateBreakpoint)(
        ICorDebugObjectValue *This,
        ICorDebugValueBreakpoint **ppBreakpoint);

    /*** ICorDebugObjectValue methods ***/
    HRESULT (STDMETHODCALLTYPE *GetClass)(
        ICorDebugObjectValue *This,
        ICorDebugClass **ppClass);

    HRESULT (STDMETHODCALLTYPE *GetFieldValue)(
        ICorDebugObjectValue *This,
        ICorDebugClass *pClass,
        mdFieldDef fieldDef,
        ICorDebugValue **ppValue);

    HRESULT (STDMETHODCALLTYPE *GetVirtualMethod)(
        ICorDebugObjectValue *This,
        mdMemberRef memberRef,
        ICorDebugFunction **ppFunction);

    HRESULT (STDMETHODCALLTYPE *GetContext)(
        ICorDebugObjectValue *This,
        ICorDebugContext **ppContext);

    HRESULT (STDMETHODCALLTYPE *IsValueClass)(
        ICorDebugObjectValue *This,
        BOOL *pbIsValueClass);

    HRESULT (STDMETHODCALLTYPE *GetManagedCopy)(
        ICorDebugObjectValue *This,
        IUnknown **ppObject);

    HRESULT (STDMETHODCALLTYPE *SetFromManagedCopy)(
        ICorDebugObjectValue *This,
        IUnknown *pObject);

    END_INTERFACE
} ICorDebugObjectValueVtbl;

interface ICorDebugObjectValue {
    CONST_VTBL ICorDebugObjectValueVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugObjectValue_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugObjectValue_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugObjectValue_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugValue methods ***/
#define ICorDebugObjectValue_GetType(This,pType) (This)->lpVtbl->GetType(This,pType)
#define ICorDebugObjectValue_GetSize(This,pSize) (This)->lpVtbl->GetSize(This,pSize)
#define ICorDebugObjectValue_GetAddress(This,pAddress) (This)->lpVtbl->GetAddress(This,pAddress)
#define ICorDebugObjectValue_CreateBreakpoint(This,ppBreakpoint) (This)->lpVtbl->CreateBreakpoint(This,ppBreakpoint)
/*** ICorDebugObjectValue methods ***/
#define ICorDebugObjectValue_GetClass(This,ppClass) (This)->lpVtbl->GetClass(This,ppClass)
#define ICorDebugObjectValue_GetFieldValue(This,pClass,fieldDef,ppValue) (This)->lpVtbl->GetFieldValue(This,pClass,fieldDef,ppValue)
#define ICorDebugObjectValue_GetVirtualMethod(This,memberRef,ppFunction) (This)->lpVtbl->GetVirtualMethod(This,memberRef,ppFunction)
#define ICorDebugObjectValue_GetContext(This,ppContext) (This)->lpVtbl->GetContext(This,ppContext)
#define ICorDebugObjectValue_IsValueClass(This,pbIsValueClass) (This)->lpVtbl->IsValueClass(This,pbIsValueClass)
#define ICorDebugObjectValue_GetManagedCopy(This,ppObject) (This)->lpVtbl->GetManagedCopy(This,ppObject)
#define ICorDebugObjectValue_SetFromManagedCopy(This,pObject) (This)->lpVtbl->SetFromManagedCopy(This,pObject)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugObjectValue_QueryInterface(ICorDebugObjectValue* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugObjectValue_AddRef(ICorDebugObjectValue* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugObjectValue_Release(ICorDebugObjectValue* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugValue methods ***/
static FORCEINLINE HRESULT ICorDebugObjectValue_GetType(ICorDebugObjectValue* This,CorElementType *pType) {
    return This->lpVtbl->GetType(This,pType);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_GetSize(ICorDebugObjectValue* This,ULONG32 *pSize) {
    return This->lpVtbl->GetSize(This,pSize);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_GetAddress(ICorDebugObjectValue* This,CORDB_ADDRESS *pAddress) {
    return This->lpVtbl->GetAddress(This,pAddress);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_CreateBreakpoint(ICorDebugObjectValue* This,ICorDebugValueBreakpoint **ppBreakpoint) {
    return This->lpVtbl->CreateBreakpoint(This,ppBreakpoint);
}
/*** ICorDebugObjectValue methods ***/
static FORCEINLINE HRESULT ICorDebugObjectValue_GetClass(ICorDebugObjectValue* This,ICorDebugClass **ppClass) {
    return This->lpVtbl->GetClass(This,ppClass);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_GetFieldValue(ICorDebugObjectValue* This,ICorDebugClass *pClass,mdFieldDef fieldDef,ICorDebugValue **ppValue) {
    return This->lpVtbl->GetFieldValue(This,pClass,fieldDef,ppValue);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_GetVirtualMethod(ICorDebugObjectValue* This,mdMemberRef memberRef,ICorDebugFunction **ppFunction) {
    return This->lpVtbl->GetVirtualMethod(This,memberRef,ppFunction);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_GetContext(ICorDebugObjectValue* This,ICorDebugContext **ppContext) {
    return This->lpVtbl->GetContext(This,ppContext);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_IsValueClass(ICorDebugObjectValue* This,BOOL *pbIsValueClass) {
    return This->lpVtbl->IsValueClass(This,pbIsValueClass);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_GetManagedCopy(ICorDebugObjectValue* This,IUnknown **ppObject) {
    return This->lpVtbl->GetManagedCopy(This,ppObject);
}
static FORCEINLINE HRESULT ICorDebugObjectValue_SetFromManagedCopy(ICorDebugObjectValue* This,IUnknown *pObject) {
    return This->lpVtbl->SetFromManagedCopy(This,pObject);
}
#endif
#endif

#endif


#endif  /* __ICorDebugObjectValue_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugContext interface
 */
#ifndef __ICorDebugContext_INTERFACE_DEFINED__
#define __ICorDebugContext_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugContext, 0xcc7bcb00, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcb00-8a68-11d2-983c-0000f808342d")
ICorDebugContext : public ICorDebugObjectValue
{
};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugContext, 0xcc7bcb00, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugContextVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugContext *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugContext *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugContext *This);

    /*** ICorDebugValue methods ***/
    HRESULT (STDMETHODCALLTYPE *GetType)(
        ICorDebugContext *This,
        CorElementType *pType);

    HRESULT (STDMETHODCALLTYPE *GetSize)(
        ICorDebugContext *This,
        ULONG32 *pSize);

    HRESULT (STDMETHODCALLTYPE *GetAddress)(
        ICorDebugContext *This,
        CORDB_ADDRESS *pAddress);

    HRESULT (STDMETHODCALLTYPE *CreateBreakpoint)(
        ICorDebugContext *This,
        ICorDebugValueBreakpoint **ppBreakpoint);

    /*** ICorDebugObjectValue methods ***/
    HRESULT (STDMETHODCALLTYPE *GetClass)(
        ICorDebugContext *This,
        ICorDebugClass **ppClass);

    HRESULT (STDMETHODCALLTYPE *GetFieldValue)(
        ICorDebugContext *This,
        ICorDebugClass *pClass,
        mdFieldDef fieldDef,
        ICorDebugValue **ppValue);

    HRESULT (STDMETHODCALLTYPE *GetVirtualMethod)(
        ICorDebugContext *This,
        mdMemberRef memberRef,
        ICorDebugFunction **ppFunction);

    HRESULT (STDMETHODCALLTYPE *GetContext)(
        ICorDebugContext *This,
        ICorDebugContext **ppContext);

    HRESULT (STDMETHODCALLTYPE *IsValueClass)(
        ICorDebugContext *This,
        BOOL *pbIsValueClass);

    HRESULT (STDMETHODCALLTYPE *GetManagedCopy)(
        ICorDebugContext *This,
        IUnknown **ppObject);

    HRESULT (STDMETHODCALLTYPE *SetFromManagedCopy)(
        ICorDebugContext *This,
        IUnknown *pObject);

    END_INTERFACE
} ICorDebugContextVtbl;

interface ICorDebugContext {
    CONST_VTBL ICorDebugContextVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugContext_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugContext_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugContext_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugValue methods ***/
#define ICorDebugContext_GetType(This,pType) (This)->lpVtbl->GetType(This,pType)
#define ICorDebugContext_GetSize(This,pSize) (This)->lpVtbl->GetSize(This,pSize)
#define ICorDebugContext_GetAddress(This,pAddress) (This)->lpVtbl->GetAddress(This,pAddress)
#define ICorDebugContext_CreateBreakpoint(This,ppBreakpoint) (This)->lpVtbl->CreateBreakpoint(This,ppBreakpoint)
/*** ICorDebugObjectValue methods ***/
#define ICorDebugContext_GetClass(This,ppClass) (This)->lpVtbl->GetClass(This,ppClass)
#define ICorDebugContext_GetFieldValue(This,pClass,fieldDef,ppValue) (This)->lpVtbl->GetFieldValue(This,pClass,fieldDef,ppValue)
#define ICorDebugContext_GetVirtualMethod(This,memberRef,ppFunction) (This)->lpVtbl->GetVirtualMethod(This,memberRef,ppFunction)
#define ICorDebugContext_GetContext(This,ppContext) (This)->lpVtbl->GetContext(This,ppContext)
#define ICorDebugContext_IsValueClass(This,pbIsValueClass) (This)->lpVtbl->IsValueClass(This,pbIsValueClass)
#define ICorDebugContext_GetManagedCopy(This,ppObject) (This)->lpVtbl->GetManagedCopy(This,ppObject)
#define ICorDebugContext_SetFromManagedCopy(This,pObject) (This)->lpVtbl->SetFromManagedCopy(This,pObject)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugContext_QueryInterface(ICorDebugContext* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugContext_AddRef(ICorDebugContext* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugContext_Release(ICorDebugContext* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugValue methods ***/
static FORCEINLINE HRESULT ICorDebugContext_GetType(ICorDebugContext* This,CorElementType *pType) {
    return This->lpVtbl->GetType(This,pType);
}
static FORCEINLINE HRESULT ICorDebugContext_GetSize(ICorDebugContext* This,ULONG32 *pSize) {
    return This->lpVtbl->GetSize(This,pSize);
}
static FORCEINLINE HRESULT ICorDebugContext_GetAddress(ICorDebugContext* This,CORDB_ADDRESS *pAddress) {
    return This->lpVtbl->GetAddress(This,pAddress);
}
static FORCEINLINE HRESULT ICorDebugContext_CreateBreakpoint(ICorDebugContext* This,ICorDebugValueBreakpoint **ppBreakpoint) {
    return This->lpVtbl->CreateBreakpoint(This,ppBreakpoint);
}
/*** ICorDebugObjectValue methods ***/
static FORCEINLINE HRESULT ICorDebugContext_GetClass(ICorDebugContext* This,ICorDebugClass **ppClass) {
    return This->lpVtbl->GetClass(This,ppClass);
}
static FORCEINLINE HRESULT ICorDebugContext_GetFieldValue(ICorDebugContext* This,ICorDebugClass *pClass,mdFieldDef fieldDef,ICorDebugValue **ppValue) {
    return This->lpVtbl->GetFieldValue(This,pClass,fieldDef,ppValue);
}
static FORCEINLINE HRESULT ICorDebugContext_GetVirtualMethod(ICorDebugContext* This,mdMemberRef memberRef,ICorDebugFunction **ppFunction) {
    return This->lpVtbl->GetVirtualMethod(This,memberRef,ppFunction);
}
static FORCEINLINE HRESULT ICorDebugContext_GetContext(ICorDebugContext* This,ICorDebugContext **ppContext) {
    return This->lpVtbl->GetContext(This,ppContext);
}
static FORCEINLINE HRESULT ICorDebugContext_IsValueClass(ICorDebugContext* This,BOOL *pbIsValueClass) {
    return This->lpVtbl->IsValueClass(This,pbIsValueClass);
}
static FORCEINLINE HRESULT ICorDebugContext_GetManagedCopy(ICorDebugContext* This,IUnknown **ppObject) {
    return This->lpVtbl->GetManagedCopy(This,ppObject);
}
static FORCEINLINE HRESULT ICorDebugContext_SetFromManagedCopy(ICorDebugContext* This,IUnknown *pObject) {
    return This->lpVtbl->SetFromManagedCopy(This,pObject);
}
#endif
#endif

#endif


#endif  /* __ICorDebugContext_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugCode interface
 */
#ifndef __ICorDebugCode_INTERFACE_DEFINED__
#define __ICorDebugCode_INTERFACE_DEFINED__

DEFINE_GUID(IID_ICorDebugCode, 0xcc7bcaf4, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc7bcaf4-8a68-11d2-983c-0000f808342d")
ICorDebugCode : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE IsIL(
        BOOL *pbIL) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFunction(
        ICorDebugFunction **ppFunction) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetAddress(
        CORDB_ADDRESS *pStart) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetSize(
        ULONG32 *pcBytes) = 0;

    virtual HRESULT STDMETHODCALLTYPE CreateBreakpoint(
        ULONG32 offset,
        ICorDebugFunctionBreakpoint **ppBreakpoint) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetCode(
        ULONG32 startOffset,
        ULONG32 endOffset,
        ULONG32 cBufferAlloc,
        BYTE buffer[],
        ULONG32 *pcBufferSize) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetVersionNumber(
        ULONG32 *nVersion) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetILToNativeMapping(
        ULONG32 cMap,
        ULONG32 *pcMap,
        COR_DEBUG_IL_TO_NATIVE_MAP map[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetEnCRemapSequencePoints(
        ULONG32 cMap,
        ULONG32 *pcMap,
        ULONG32 offsets[]) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugCode, 0xcc7bcaf4, 0x8a68, 0x11d2, 0x98,0x3c, 0x00,0x00,0xf8,0x08,0x34,0x2d)
#endif
#else
typedef struct ICorDebugCodeVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugCode *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugCode *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugCode *This);

    /*** ICorDebugCode methods ***/
    HRESULT (STDMETHODCALLTYPE *IsIL)(
        ICorDebugCode *This,
        BOOL *pbIL);

    HRESULT (STDMETHODCALLTYPE *GetFunction)(
        ICorDebugCode *This,
        ICorDebugFunction **ppFunction);

    HRESULT (STDMETHODCALLTYPE *GetAddress)(
        ICorDebugCode *This,
        CORDB_ADDRESS *pStart);

    HRESULT (STDMETHODCALLTYPE *GetSize)(
        ICorDebugCode *This,
        ULONG32 *pcBytes);

    HRESULT (STDMETHODCALLTYPE *CreateBreakpoint)(
        ICorDebugCode *This,
        ULONG32 offset,
        ICorDebugFunctionBreakpoint **ppBreakpoint);

    HRESULT (STDMETHODCALLTYPE *GetCode)(
        ICorDebugCode *This,
        ULONG32 startOffset,
        ULONG32 endOffset,
        ULONG32 cBufferAlloc,
        BYTE buffer[],
        ULONG32 *pcBufferSize);

    HRESULT (STDMETHODCALLTYPE *GetVersionNumber)(
        ICorDebugCode *This,
        ULONG32 *nVersion);

    HRESULT (STDMETHODCALLTYPE *GetILToNativeMapping)(
        ICorDebugCode *This,
        ULONG32 cMap,
        ULONG32 *pcMap,
        COR_DEBUG_IL_TO_NATIVE_MAP map[]);

    HRESULT (STDMETHODCALLTYPE *GetEnCRemapSequencePoints)(
        ICorDebugCode *This,
        ULONG32 cMap,
        ULONG32 *pcMap,
        ULONG32 offsets[]);

    END_INTERFACE
} ICorDebugCodeVtbl;

interface ICorDebugCode {
    CONST_VTBL ICorDebugCodeVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugCode_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugCode_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugCode_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugCode methods ***/
#define ICorDebugCode_IsIL(This,pbIL) (This)->lpVtbl->IsIL(This,pbIL)
#define ICorDebugCode_GetFunction(This,ppFunction) (This)->lpVtbl->GetFunction(This,ppFunction)
#define ICorDebugCode_GetAddress(This,pStart) (This)->lpVtbl->GetAddress(This,pStart)
#define ICorDebugCode_GetSize(This,pcBytes) (This)->lpVtbl->GetSize(This,pcBytes)
#define ICorDebugCode_CreateBreakpoint(This,offset,ppBreakpoint) (This)->lpVtbl->CreateBreakpoint(This,offset,ppBreakpoint)
#define ICorDebugCode_GetCode(This,startOffset,endOffset,cBufferAlloc,buffer,pcBufferSize) (This)->lpVtbl->GetCode(This,startOffset,endOffset,cBufferAlloc,buffer,pcBufferSize)
#define ICorDebugCode_GetVersionNumber(This,nVersion) (This)->lpVtbl->GetVersionNumber(This,nVersion)
#define ICorDebugCode_GetILToNativeMapping(This,cMap,pcMap,map) (This)->lpVtbl->GetILToNativeMapping(This,cMap,pcMap,map)
#define ICorDebugCode_GetEnCRemapSequencePoints(This,cMap,pcMap,offsets) (This)->lpVtbl->GetEnCRemapSequencePoints(This,cMap,pcMap,offsets)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugCode_QueryInterface(ICorDebugCode* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugCode_AddRef(ICorDebugCode* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugCode_Release(ICorDebugCode* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugCode methods ***/
static FORCEINLINE HRESULT ICorDebugCode_IsIL(ICorDebugCode* This,BOOL *pbIL) {
    return This->lpVtbl->IsIL(This,pbIL);
}
static FORCEINLINE HRESULT ICorDebugCode_GetFunction(ICorDebugCode* This,ICorDebugFunction **ppFunction) {
    return This->lpVtbl->GetFunction(This,ppFunction);
}
static FORCEINLINE HRESULT ICorDebugCode_GetAddress(ICorDebugCode* This,CORDB_ADDRESS *pStart) {
    return This->lpVtbl->GetAddress(This,pStart);
}
static FORCEINLINE HRESULT ICorDebugCode_GetSize(ICorDebugCode* This,ULONG32 *pcBytes) {
    return This->lpVtbl->GetSize(This,pcBytes);
}
static FORCEINLINE HRESULT ICorDebugCode_CreateBreakpoint(ICorDebugCode* This,ULONG32 offset,ICorDebugFunctionBreakpoint **ppBreakpoint) {
    return This->lpVtbl->CreateBreakpoint(This,offset,ppBreakpoint);
}
static FORCEINLINE HRESULT ICorDebugCode_GetCode(ICorDebugCode* This,ULONG32 startOffset,ULONG32 endOffset,ULONG32 cBufferAlloc,BYTE buffer[],ULONG32 *pcBufferSize) {
    return This->lpVtbl->GetCode(This,startOffset,endOffset,cBufferAlloc,buffer,pcBufferSize);
}
static FORCEINLINE HRESULT ICorDebugCode_GetVersionNumber(ICorDebugCode* This,ULONG32 *nVersion) {
    return This->lpVtbl->GetVersionNumber(This,nVersion);
}
static FORCEINLINE HRESULT ICorDebugCode_GetILToNativeMapping(ICorDebugCode* This,ULONG32 cMap,ULONG32 *pcMap,COR_DEBUG_IL_TO_NATIVE_MAP map[]) {
    return This->lpVtbl->GetILToNativeMapping(This,cMap,pcMap,map);
}
static FORCEINLINE HRESULT ICorDebugCode_GetEnCRemapSequencePoints(ICorDebugCode* This,ULONG32 cMap,ULONG32 *pcMap,ULONG32 offsets[]) {
    return This->lpVtbl->GetEnCRemapSequencePoints(This,cMap,pcMap,offsets);
}
#endif
#endif

#endif


#endif  /* __ICorDebugCode_INTERFACE_DEFINED__ */

/*****************************************************************************
 * ICorDebugMDA interface
 */
#ifndef __ICorDebugMDA_INTERFACE_DEFINED__
#define __ICorDebugMDA_INTERFACE_DEFINED__

typedef enum CorDebugMDAFlags {
    MDA_FLAG_SLIP = 0x2
} CorDebugMDAFlags;
DEFINE_GUID(IID_ICorDebugMDA, 0xcc726f2f, 0x1db7, 0x459b, 0xb0,0xec, 0x05,0xf0,0x1d,0x84,0x1b,0x42);
#if defined(__cplusplus) && !defined(CINTERFACE)
MIDL_INTERFACE("cc726f2f-1db7-459b-b0ec-05f01d841b42")
ICorDebugMDA : public IUnknown
{
    virtual HRESULT STDMETHODCALLTYPE GetName(
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetDescription(
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetXML(
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetFlags(
        CorDebugMDAFlags *pFlags) = 0;

    virtual HRESULT STDMETHODCALLTYPE GetOSThreadId(
        DWORD *pOsTid) = 0;

};
#ifdef __CRT_UUID_DECL
__CRT_UUID_DECL(ICorDebugMDA, 0xcc726f2f, 0x1db7, 0x459b, 0xb0,0xec, 0x05,0xf0,0x1d,0x84,0x1b,0x42)
#endif
#else
typedef struct ICorDebugMDAVtbl {
    BEGIN_INTERFACE

    /*** IUnknown methods ***/
    HRESULT (STDMETHODCALLTYPE *QueryInterface)(
        ICorDebugMDA *This,
        REFIID riid,
        void **ppvObject);

    ULONG (STDMETHODCALLTYPE *AddRef)(
        ICorDebugMDA *This);

    ULONG (STDMETHODCALLTYPE *Release)(
        ICorDebugMDA *This);

    /*** ICorDebugMDA methods ***/
    HRESULT (STDMETHODCALLTYPE *GetName)(
        ICorDebugMDA *This,
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]);

    HRESULT (STDMETHODCALLTYPE *GetDescription)(
        ICorDebugMDA *This,
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]);

    HRESULT (STDMETHODCALLTYPE *GetXML)(
        ICorDebugMDA *This,
        ULONG32 cchName,
        ULONG32 *pcchName,
        WCHAR szName[]);

    HRESULT (STDMETHODCALLTYPE *GetFlags)(
        ICorDebugMDA *This,
        CorDebugMDAFlags *pFlags);

    HRESULT (STDMETHODCALLTYPE *GetOSThreadId)(
        ICorDebugMDA *This,
        DWORD *pOsTid);

    END_INTERFACE
} ICorDebugMDAVtbl;

interface ICorDebugMDA {
    CONST_VTBL ICorDebugMDAVtbl* lpVtbl;
};

#ifdef COBJMACROS
#ifndef WIDL_C_INLINE_WRAPPERS
/*** IUnknown methods ***/
#define ICorDebugMDA_QueryInterface(This,riid,ppvObject) (This)->lpVtbl->QueryInterface(This,riid,ppvObject)
#define ICorDebugMDA_AddRef(This) (This)->lpVtbl->AddRef(This)
#define ICorDebugMDA_Release(This) (This)->lpVtbl->Release(This)
/*** ICorDebugMDA methods ***/
#define ICorDebugMDA_GetName(This,cchName,pcchName,szName) (This)->lpVtbl->GetName(This,cchName,pcchName,szName)
#define ICorDebugMDA_GetDescription(This,cchName,pcchName,szName) (This)->lpVtbl->GetDescription(This,cchName,pcchName,szName)
#define ICorDebugMDA_GetXML(This,cchName,pcchName,szName) (This)->lpVtbl->GetXML(This,cchName,pcchName,szName)
#define ICorDebugMDA_GetFlags(This,pFlags) (This)->lpVtbl->GetFlags(This,pFlags)
#define ICorDebugMDA_GetOSThreadId(This,pOsTid) (This)->lpVtbl->GetOSThreadId(This,pOsTid)
#else
/*** IUnknown methods ***/
static FORCEINLINE HRESULT ICorDebugMDA_QueryInterface(ICorDebugMDA* This,REFIID riid,void **ppvObject) {
    return This->lpVtbl->QueryInterface(This,riid,ppvObject);
}
static FORCEINLINE ULONG ICorDebugMDA_AddRef(ICorDebugMDA* This) {
    return This->lpVtbl->AddRef(This);
}
static FORCEINLINE ULONG ICorDebugMDA_Release(ICorDebugMDA* This) {
    return This->lpVtbl->Release(This);
}
/*** ICorDebugMDA methods ***/
static FORCEINLINE HRESULT ICorDebugMDA_GetName(ICorDebugMDA* This,ULONG32 cchName,ULONG32 *pcchName,WCHAR szName[]) {
    return This->lpVtbl->GetName(This,cchName,pcchName,szName);
}
static FORCEINLINE HRESULT ICorDebugMDA_GetDescription(ICorDebugMDA* This,ULONG32 cchName,ULONG32 *pcchName,WCHAR szName[]) {
    return This->lpVtbl->GetDescription(This,cchName,pcchName,szName);
}
static FORCEINLINE HRESULT ICorDebugMDA_GetXML(ICorDebugMDA* This,ULONG32 cchName,ULONG32 *pcchName,WCHAR szName[]) {
    return This->lpVtbl->GetXML(This,cchName,pcchName,szName);
}
static FORCEINLINE HRESULT ICorDebugMDA_GetFlags(ICorDebugMDA* This,CorDebugMDAFlags *pFlags) {
    return This->lpVtbl->GetFlags(This,pFlags);
}
static FORCEINLINE HRESULT ICorDebugMDA_GetOSThreadId(ICorDebugMDA* This,DWORD *pOsTid) {
    return This->lpVtbl->GetOSThreadId(This,pOsTid);
}
#endif
#endif

#endif


#endif  /* __ICorDebugMDA_INTERFACE_DEFINED__ */

/* Begin additional prototypes for all interfaces */


/* End additional prototypes */

#ifdef __cplusplus
}
#endif

#endif /* __cordebug_h__ */
