text:
//
// Copyright (c) Microsoft. All rights reserved.
// Licensed under the MIT license. See LICENSE file in the project root for full license information.
//

/* this ALWAYS GENERATED file contains the definitions for the interfaces */

 /* File created by MIDL compiler version 8.00.0603 */
/* @@MIDL_FILE_HEADING(  ) */

#pragma warning( disable: 4049 )  /* more than 64k source lines */

/* verify that the <rpcndr.h> version is high enough to compile this file*/
#ifndef __REQUIRED_RPCNDR_H_VERSION__
#define __REQUIRED_RPCNDR_H_VERSION__ 475
#endif

#include "rpc.h"
#include "rpcndr.h"

#ifndef __RPCNDR_H_VERSION__
#error this stub requires an updated version of <rpcndr.h>
#endif // __RPCNDR_H_VERSION__

#ifndef COM_NO_WINDOWS_H
#include "windows.h"
#include "ole2.h"
#endif /*COM_NO_WINDOWS_H*/

#ifndef __xclrdata_h__
#define __xclrdata_h__

#if defined(_MSC_VER) && (_MSC_VER >= 1020)
#pragma once
#endif

/* Forward Declarations */

#ifndef __IXCLRDataTarget3_FWD_DEFINED__
#define __IXCLRDataTarget3_FWD_DEFINED__
typedef interface IXCLRDataTarget3 IXCLRDataTarget3;

#endif 	/* __IXCLRDataTarget3_FWD_DEFINED__ */

#ifndef __IXCLRLibrarySupport_FWD_DEFINED__
#define __IXCLRLibrarySupport_FWD_DEFINED__
typedef interface IXCLRLibrarySupport IXCLRLibrarySupport;

#endif 	/* __IXCLRLibrarySupport_FWD_DEFINED__ */

#ifndef __IXCLRDisassemblySupport_FWD_DEFINED__
#define __IXCLRDisassemblySupport_FWD_DEFINED__
typedef interface IXCLRDisassemblySupport IXCLRDisassemblySupport;

#endif 	/* __IXCLRDisassemblySupport_FWD_DEFINED__ */

#ifndef __IXCLRDataDisplay_FWD_DEFINED__
#define __IXCLRDataDisplay_FWD_DEFINED__
typedef interface IXCLRDataDisplay IXCLRDataDisplay;

#endif 	/* __IXCLRDataDisplay_FWD_DEFINED__ */

#ifndef __IXCLRDataProcess_FWD_DEFINED__
#define __IXCLRDataProcess_FWD_DEFINED__
typedef interface IXCLRDataProcess IXCLRDataProcess;

#endif 	/* __IXCLRDataProcess_FWD_DEFINED__ */

#ifndef __IXCLRDataProcess2_FWD_DEFINED__
#define __IXCLRDataProcess2_FWD_DEFINED__
typedef interface IXCLRDataProcess2 IXCLRDataProcess2;

#endif 	/* __IXCLRDataProcess2_FWD_DEFINED__ */

#ifndef __IXCLRDataAppDomain_FWD_DEFINED__
#define __IXCLRDataAppDomain_FWD_DEFINED__
typedef interface IXCLRDataAppDomain IXCLRDataAppDomain;

#endif 	/* __IXCLRDataAppDomain_FWD_DEFINED__ */

#ifndef __IXCLRDataAssembly_FWD_DEFINED__
#define __IXCLRDataAssembly_FWD_DEFINED__
typedef interface IXCLRDataAssembly IXCLRDataAssembly;

#endif 	/* __IXCLRDataAssembly_FWD_DEFINED__ */

#ifndef __IXCLRDataModule_FWD_DEFINED__
#define __IXCLRDataModule_FWD_DEFINED__
typedef interface IXCLRDataModule IXCLRDataModule;

#endif 	/* __IXCLRDataModule_FWD_DEFINED__ */

#ifndef __IXCLRDataModule2_FWD_DEFINED__
#define __IXCLRDataModule2_FWD_DEFINED__
typedef interface IXCLRDataModule2 IXCLRDataModule2;

#endif 	/* __IXCLRDataModule2_FWD_DEFINED__ */

#ifndef __IXCLRDataTypeDefinition_FWD_DEFINED__
#define __IXCLRDataTypeDefinition_FWD_DEFINED__
typedef interface IXCLRDataTypeDefinition IXCLRDataTypeDefinition;

#endif 	/* __IXCLRDataTypeDefinition_FWD_DEFINED__ */

#ifndef __IXCLRDataTypeInstance_FWD_DEFINED__
#define __IXCLRDataTypeInstance_FWD_DEFINED__
typedef interface IXCLRDataTypeInstance IXCLRDataTypeInstance;

#endif 	/* __IXCLRDataTypeInstance_FWD_DEFINED__ */

#ifndef __IXCLRDataMethodDefinition_FWD_DEFINED__
#define __IXCLRDataMethodDefinition_FWD_DEFINED__
typedef interface IXCLRDataMethodDefinition IXCLRDataMethodDefinition;

#endif 	/* __IXCLRDataMethodDefinition_FWD_DEFINED__ */

#ifndef __IXCLRDataMethodInstance_FWD_DEFINED__
#define __IXCLRDataMethodInstance_FWD_DEFINED__
typedef interface IXCLRDataMethodInstance IXCLRDataMethodInstance;

#endif 	/* __IXCLRDataMethodInstance_FWD_DEFINED__ */

#ifndef __IXCLRDataTask_FWD_DEFINED__
#define __IXCLRDataTask_FWD_DEFINED__
typedef interface IXCLRDataTask IXCLRDataTask;

#endif 	/* __IXCLRDataTask_FWD_DEFINED__ */

#ifndef __IXCLRDataStackWalk_FWD_DEFINED__
#define __IXCLRDataStackWalk_FWD_DEFINED__
typedef interface IXCLRDataStackWalk IXCLRDataStackWalk;

#endif 	/* __IXCLRDataStackWalk_FWD_DEFINED__ */

#ifndef __IXCLRDataFrame_FWD_DEFINED__
#define __IXCLRDataFrame_FWD_DEFINED__
typedef interface IXCLRDataFrame IXCLRDataFrame;

#endif 	/* __IXCLRDataFrame_FWD_DEFINED__ */

#ifndef __IXCLRDataFrame2_FWD_DEFINED__
#define __IXCLRDataFrame2_FWD_DEFINED__
typedef interface IXCLRDataFrame2 IXCLRDataFrame2;

#endif 	/* __IXCLRDataFrame2_FWD_DEFINED__ */

#ifndef __IXCLRDataExceptionState_FWD_DEFINED__
#define __IXCLRDataExceptionState_FWD_DEFINED__
typedef interface IXCLRDataExceptionState IXCLRDataExceptionState;

#endif 	/* __IXCLRDataExceptionState_FWD_DEFINED__ */

#ifndef __IXCLRDataValue_FWD_DEFINED__
#define __IXCLRDataValue_FWD_DEFINED__
typedef interface IXCLRDataValue IXCLRDataValue;

#endif 	/* __IXCLRDataValue_FWD_DEFINED__ */

#ifndef __IXCLRDataExceptionNotification_FWD_DEFINED__
#define __IXCLRDataExceptionNotification_FWD_DEFINED__
typedef interface IXCLRDataExceptionNotification IXCLRDataExceptionNotification;

#endif 	/* __IXCLRDataExceptionNotification_FWD_DEFINED__ */

#ifndef __IXCLRDataExceptionNotification2_FWD_DEFINED__
#define __IXCLRDataExceptionNotification2_FWD_DEFINED__
typedef interface IXCLRDataExceptionNotification2 IXCLRDataExceptionNotification2;

#endif 	/* __IXCLRDataExceptionNotification2_FWD_DEFINED__ */

#ifndef __IXCLRDataExceptionNotification3_FWD_DEFINED__
#define __IXCLRDataExceptionNotification3_FWD_DEFINED__
typedef interface IXCLRDataExceptionNotification3 IXCLRDataExceptionNotification3;

#endif 	/* __IXCLRDataExceptionNotification3_FWD_DEFINED__ */

#ifndef __IXCLRDataExceptionNotification4_FWD_DEFINED__
#define __IXCLRDataExceptionNotification4_FWD_DEFINED__
typedef interface IXCLRDataExceptionNotification4 IXCLRDataExceptionNotification4;

#endif 	/* __IXCLRDataExceptionNotification4_FWD_DEFINED__ */

/* header files for imported files */
#include "clrdata.h"

#ifdef __cplusplus
extern "C"{
#endif

/* interface __MIDL_itf_xclrdata_0000_0000 */
/* [local] */

#if 0
typedef UINT32 mdToken;

typedef mdToken mdTypeDef;

typedef mdToken mdMethodDef;

typedef mdToken mdFieldDef;

typedef ULONG CorElementType;

typedef struct _EXCEPTION_RECORD64
    {
    DWORD ExceptionCode;
    DWORD ExceptionFlags;
    DWORD64 ExceptionRecord;
    DWORD64 ExceptionAddress;
    DWORD NumberParameters;
    DWORD __unusedAlignment;
    DWORD64 ExceptionInformation[ 15 ];
    } 	EXCEPTION_RECORD64;

typedef struct _EXCEPTION_RECORD64 *PEXCEPTION_RECORD64;

#endif
#pragma warning(push)
#pragma warning(disable:28718)

#pragma warning(pop)
typedef /* [public][public][public] */ struct __MIDL___MIDL_itf_xclrdata_0000_0000_0001
    {
    CLRDATA_ADDRESS startAddress;
    CLRDATA_ADDRESS endAddress;
    } 	CLRDATA_ADDRESS_RANGE;

typedef ULONG64 CLRDATA_ENUM;

#define CLRDATA_NOTIFY_EXCEPTION 0xe0444143
typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0000_0002
    {
        CLRDATA_REQUEST_REVISION	= 0xe0000000
    } 	CLRDataGeneralRequest;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0000_0003
    {
        CLRDATA_TYPE_DEFAULT	= 0,
        CLRDATA_TYPE_IS_PRIMITIVE	= 0x1,
        CLRDATA_TYPE_IS_VALUE_TYPE	= 0x2,
        CLRDATA_TYPE_IS_STRING	= 0x4,
        CLRDATA_TYPE_IS_ARRAY	= 0x8,
        CLRDATA_TYPE_IS_REFERENCE	= 0x10,
        CLRDATA_TYPE_IS_POINTER	= 0x20,
        CLRDATA_TYPE_IS_ENUM	= 0x40,
        CLRDATA_TYPE_ALL_KINDS	= 0x7f
    } 	CLRDataTypeFlag;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0000_0004
    {
        CLRDATA_FIELD_DEFAULT	= 0,
        CLRDATA_FIELD_IS_PRIMITIVE	= CLRDATA_TYPE_IS_PRIMITIVE,
        CLRDATA_FIELD_IS_VALUE_TYPE	= CLRDATA_TYPE_IS_VALUE_TYPE,
        CLRDATA_FIELD_IS_STRING	= CLRDATA_TYPE_IS_STRING,
        CLRDATA_FIELD_IS_ARRAY	= CLRDATA_TYPE_IS_ARRAY,
        CLRDATA_FIELD_IS_REFERENCE	= CLRDATA_TYPE_IS_REFERENCE,
        CLRDATA_FIELD_IS_POINTER	= CLRDATA_TYPE_IS_POINTER,
        CLRDATA_FIELD_IS_ENUM	= CLRDATA_TYPE_IS_ENUM,
        CLRDATA_FIELD_ALL_KINDS	= CLRDATA_TYPE_ALL_KINDS,
        CLRDATA_FIELD_IS_INHERITED	= 0x80,
        CLRDATA_FIELD_IS_LITERAL	= 0x100,
        CLRDATA_FIELD_FROM_INSTANCE	= 0x200,
        CLRDATA_FIELD_FROM_TASK_LOCAL	= 0x400,
        CLRDATA_FIELD_FROM_STATIC	= 0x800,
        CLRDATA_FIELD_ALL_LOCATIONS	= 0xe00,
        CLRDATA_FIELD_ALL_FIELDS	= 0xeff
    } 	CLRDataFieldFlag;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0000_0005
    {
        CLRDATA_VALUE_DEFAULT	= 0,
        CLRDATA_VALUE_IS_PRIMITIVE	= CLRDATA_TYPE_IS_PRIMITIVE,
        CLRDATA_VALUE_IS_VALUE_TYPE	= CLRDATA_TYPE_IS_VALUE_TYPE,
        CLRDATA_VALUE_IS_STRING	= CLRDATA_TYPE_IS_STRING,
        CLRDATA_VALUE_IS_ARRAY	= CLRDATA_TYPE_IS_ARRAY,
        CLRDATA_VALUE_IS_REFERENCE	= CLRDATA_TYPE_IS_REFERENCE,
        CLRDATA_VALUE_IS_POINTER	= CLRDATA_TYPE_IS_POINTER,
        CLRDATA_VALUE_IS_ENUM	= CLRDATA_TYPE_IS_ENUM,
        CLRDATA_VALUE_ALL_KINDS	= CLRDATA_TYPE_ALL_KINDS,
        CLRDATA_VALUE_IS_INHERITED	= CLRDATA_FIELD_IS_INHERITED,
        CLRDATA_VALUE_IS_LITERAL	= CLRDATA_FIELD_IS_LITERAL,
        CLRDATA_VALUE_FROM_INSTANCE	= CLRDATA_FIELD_FROM_INSTANCE,
        CLRDATA_VALUE_FROM_TASK_LOCAL	= CLRDATA_FIELD_FROM_TASK_LOCAL,
        CLRDATA_VALUE_FROM_STATIC	= CLRDATA_FIELD_FROM_STATIC,
        CLRDATA_VALUE_ALL_LOCATIONS	= CLRDATA_FIELD_ALL_LOCATIONS,
        CLRDATA_VALUE_ALL_FIELDS	= CLRDATA_FIELD_ALL_FIELDS,
        CLRDATA_VALUE_IS_BOXED	= 0x1000
    } 	CLRDataValueFlag;

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0000_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0000_v0_0_s_ifspec;

#ifndef __IXCLRDataTarget3_INTERFACE_DEFINED__
#define __IXCLRDataTarget3_INTERFACE_DEFINED__

/* interface IXCLRDataTarget3 */
/* [unique][uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataTarget3;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("59d9b5e1-4a6f-4531-84c3-51d12da22fd4")
    IXCLRDataTarget3 : public ICLRDataTarget2
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetMetaData(
            /* [in] */ LPCWSTR imagePath,
            /* [in] */ ULONG32 imageTimestamp,
            /* [in] */ ULONG32 imageSize,
            /* [in] */ GUID *mvid,
            /* [in] */ ULONG32 mdRva,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufferSize,
            /* [length_is][size_is][out] */ BYTE *buffer,
            /* [out] */ ULONG32 *dataSize) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataTarget3Vtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataTarget3 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetMachineType )(
            IXCLRDataTarget3 * This,
            /* [out] */ ULONG32 *machineType);

        HRESULT ( STDMETHODCALLTYPE *GetPointerSize )(
            IXCLRDataTarget3 * This,
            /* [out] */ ULONG32 *pointerSize);

        HRESULT ( STDMETHODCALLTYPE *GetImageBase )(
            IXCLRDataTarget3 * This,
            /* [string][in] */ LPCWSTR imagePath,
            /* [out] */ CLRDATA_ADDRESS *baseAddress);

        HRESULT ( STDMETHODCALLTYPE *ReadVirtual )(
            IXCLRDataTarget3 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [length_is][size_is][out] */ BYTE *buffer,
            /* [in] */ ULONG32 bytesRequested,
            /* [out] */ ULONG32 *bytesRead);

        HRESULT ( STDMETHODCALLTYPE *WriteVirtual )(
            IXCLRDataTarget3 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [size_is][in] */ BYTE *buffer,
            /* [in] */ ULONG32 bytesRequested,
            /* [out] */ ULONG32 *bytesWritten);

        HRESULT ( STDMETHODCALLTYPE *GetTLSValue )(
            IXCLRDataTarget3 * This,
            /* [in] */ ULONG32 threadID,
            /* [in] */ ULONG32 index,
            /* [out] */ CLRDATA_ADDRESS *value);

        HRESULT ( STDMETHODCALLTYPE *SetTLSValue )(
            IXCLRDataTarget3 * This,
            /* [in] */ ULONG32 threadID,
            /* [in] */ ULONG32 index,
            /* [in] */ CLRDATA_ADDRESS value);

        HRESULT ( STDMETHODCALLTYPE *GetCurrentThreadID )(
            IXCLRDataTarget3 * This,
            /* [out] */ ULONG32 *threadID);

        HRESULT ( STDMETHODCALLTYPE *GetThreadContext )(
            IXCLRDataTarget3 * This,
            /* [in] */ ULONG32 threadID,
            /* [in] */ ULONG32 contextFlags,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][out] */ BYTE *context);

        HRESULT ( STDMETHODCALLTYPE *SetThreadContext )(
            IXCLRDataTarget3 * This,
            /* [in] */ ULONG32 threadID,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE *context);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataTarget3 * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *AllocVirtual )(
            IXCLRDataTarget3 * This,
            /* [in] */ CLRDATA_ADDRESS addr,
            /* [in] */ ULONG32 size,
            /* [in] */ ULONG32 typeFlags,
            /* [in] */ ULONG32 protectFlags,
            /* [out] */ CLRDATA_ADDRESS *virt);

        HRESULT ( STDMETHODCALLTYPE *FreeVirtual )(
            IXCLRDataTarget3 * This,
            /* [in] */ CLRDATA_ADDRESS addr,
            /* [in] */ ULONG32 size,
            /* [in] */ ULONG32 typeFlags);

        HRESULT ( STDMETHODCALLTYPE *GetMetaData )(
            IXCLRDataTarget3 * This,
            /* [in] */ LPCWSTR imagePath,
            /* [in] */ ULONG32 imageTimestamp,
            /* [in] */ ULONG32 imageSize,
            /* [in] */ GUID *mvid,
            /* [in] */ ULONG32 mdRva,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufferSize,
            /* [length_is][size_is][out] */ BYTE *buffer,
            /* [out] */ ULONG32 *dataSize);

        END_INTERFACE
    } IXCLRDataTarget3Vtbl;

    interface IXCLRDataTarget3
    {
        CONST_VTBL struct IXCLRDataTarget3Vtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataTarget3_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataTarget3_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataTarget3_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataTarget3_GetMachineType(This,machineType)	\
    ( (This)->lpVtbl -> GetMachineType(This,machineType) )

#define IXCLRDataTarget3_GetPointerSize(This,pointerSize)	\
    ( (This)->lpVtbl -> GetPointerSize(This,pointerSize) )

#define IXCLRDataTarget3_GetImageBase(This,imagePath,baseAddress)	\
    ( (This)->lpVtbl -> GetImageBase(This,imagePath,baseAddress) )

#define IXCLRDataTarget3_ReadVirtual(This,address,buffer,bytesRequested,bytesRead)	\
    ( (This)->lpVtbl -> ReadVirtual(This,address,buffer,bytesRequested,bytesRead) )

#define IXCLRDataTarget3_WriteVirtual(This,address,buffer,bytesRequested,bytesWritten)	\
    ( (This)->lpVtbl -> WriteVirtual(This,address,buffer,bytesRequested,bytesWritten) )

#define IXCLRDataTarget3_GetTLSValue(This,threadID,index,value)	\
    ( (This)->lpVtbl -> GetTLSValue(This,threadID,index,value) )

#define IXCLRDataTarget3_SetTLSValue(This,threadID,index,value)	\
    ( (This)->lpVtbl -> SetTLSValue(This,threadID,index,value) )

#define IXCLRDataTarget3_GetCurrentThreadID(This,threadID)	\
    ( (This)->lpVtbl -> GetCurrentThreadID(This,threadID) )

#define IXCLRDataTarget3_GetThreadContext(This,threadID,contextFlags,contextSize,context)	\
    ( (This)->lpVtbl -> GetThreadContext(This,threadID,contextFlags,contextSize,context) )

#define IXCLRDataTarget3_SetThreadContext(This,threadID,contextSize,context)	\
    ( (This)->lpVtbl -> SetThreadContext(This,threadID,contextSize,context) )

#define IXCLRDataTarget3_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataTarget3_AllocVirtual(This,addr,size,typeFlags,protectFlags,virt)	\
    ( (This)->lpVtbl -> AllocVirtual(This,addr,size,typeFlags,protectFlags,virt) )

#define IXCLRDataTarget3_FreeVirtual(This,addr,size,typeFlags)	\
    ( (This)->lpVtbl -> FreeVirtual(This,addr,size,typeFlags) )

#define IXCLRDataTarget3_GetMetaData(This,imagePath,imageTimestamp,imageSize,mvid,mdRva,flags,bufferSize,buffer,dataSize)	\
    ( (This)->lpVtbl -> GetMetaData(This,imagePath,imageTimestamp,imageSize,mvid,mdRva,flags,bufferSize,buffer,dataSize) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataTarget3_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0001 */
/* [local] */

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0001
    {
        CLRDATA_BYNAME_CASE_SENSITIVE	= 0,
        CLRDATA_BYNAME_CASE_INSENSITIVE	= 0x1
    } 	CLRDataByNameFlag;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0002
    {
        CLRDATA_GETNAME_DEFAULT	= 0,
        CLRDATA_GETNAME_NO_NAMESPACES	= 0x1,
        CLRDATA_GETNAME_NO_PARAMETERS	= 0x2
    } 	CLRDataGetNameFlag;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0003
    {
        CLRDATA_PROCESS_DEFAULT	= 0,
        CLRDATA_PROCESS_IN_GC	= 0x1
    } 	CLRDataProcessFlag;

typedef /* [public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0004
    {
        CLRDATA_ADDRESS_UNRECOGNIZED	= 0,
        CLRDATA_ADDRESS_MANAGED_METHOD	= ( CLRDATA_ADDRESS_UNRECOGNIZED + 1 ) ,
        CLRDATA_ADDRESS_RUNTIME_MANAGED_CODE	= ( CLRDATA_ADDRESS_MANAGED_METHOD + 1 ) ,
        CLRDATA_ADDRESS_RUNTIME_UNMANAGED_CODE	= ( CLRDATA_ADDRESS_RUNTIME_MANAGED_CODE + 1 ) ,
        CLRDATA_ADDRESS_GC_DATA	= ( CLRDATA_ADDRESS_RUNTIME_UNMANAGED_CODE + 1 ) ,
        CLRDATA_ADDRESS_RUNTIME_MANAGED_STUB	= ( CLRDATA_ADDRESS_GC_DATA + 1 ) ,
        CLRDATA_ADDRESS_RUNTIME_UNMANAGED_STUB	= ( CLRDATA_ADDRESS_RUNTIME_MANAGED_STUB + 1 )
    } 	CLRDataAddressType;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0005
    {
        CLRDATA_NOTIFY_ON_MODULE_LOAD	= 0x1,
        CLRDATA_NOTIFY_ON_MODULE_UNLOAD	= 0x2,
        CLRDATA_NOTIFY_ON_EXCEPTION	= 0x4,
        CLRDATA_NOTIFY_ON_EXCEPTION_CATCH_ENTER	= 0x8
    } 	CLRDataOtherNotifyFlag;

typedef /* [public][public][public][public][public] */ struct __MIDL___MIDL_itf_xclrdata_0000_0001_0006
    {
    ULONG64 Data[ 8 ];
    } 	CLRDATA_FOLLOW_STUB_BUFFER;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0007
    {
        CLRDATA_FOLLOW_STUB_DEFAULT	= 0
    } 	CLRDataFollowStubInFlag;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0008
    {
        CLRDATA_FOLLOW_STUB_INTERMEDIATE	= 0,
        CLRDATA_FOLLOW_STUB_EXIT	= 0x1
    } 	CLRDataFollowStubOutFlag;

typedef /* [public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0009
    {
        CLRNATIVEIMAGE_PE_INFO	= 0x1,
        CLRNATIVEIMAGE_COR_INFO	= 0x2,
        CLRNATIVEIMAGE_FIXUP_TABLES	= 0x4,
        CLRNATIVEIMAGE_FIXUP_HISTOGRAM	= 0x8,
        CLRNATIVEIMAGE_MODULE	= 0x10,
        CLRNATIVEIMAGE_METHODS	= 0x20,
        CLRNATIVEIMAGE_DISASSEMBLE_CODE	= 0x40,
        CLRNATIVEIMAGE_IL	= 0x80,
        CLRNATIVEIMAGE_METHODTABLES	= 0x100,
        CLRNATIVEIMAGE_NATIVE_INFO	= 0x200,
        CLRNATIVEIMAGE_MODULE_TABLES	= 0x400,
        CLRNATIVEIMAGE_FROZEN_SEGMENT	= 0x800,
        CLRNATIVEIMAGE_PE_FILE	= 0x1000,
        CLRNATIVEIMAGE_GC_INFO	= 0x2000,
        CLRNATIVEIMAGE_EECLASSES	= 0x4000,
        CLRNATIVEIMAGE_NATIVE_TABLES	= 0x8000,
        CLRNATIVEIMAGE_PRECODES	= 0x10000,
        CLRNATIVEIMAGE_TYPEDESCS	= 0x20000,
        CLRNATIVEIMAGE_VERBOSE_TYPES	= 0x40000,
        CLRNATIVEIMAGE_METHODDESCS	= 0x80000,
        CLRNATIVEIMAGE_METADATA	= 0x100000,
        CLRNATIVEIMAGE_DISABLE_NAMES	= 0x200000,
        CLRNATIVEIMAGE_DISABLE_REBASING	= 0x400000,
        CLRNATIVEIMAGE_SLIM_MODULE_TBLS	= 0x800000,
        CLRNATIVEIMAGE_RESOURCES	= 0x1000000,
        CLRNATIVEIMAGE_FILE_OFFSET	= 0x2000000,
        CLRNATIVEIMAGE_DEBUG_TRACE	= 0x4000000,
        CLRNATIVEIMAGE_RELOCATIONS	= 0x8000000,
        CLRNATIVEIMAGE_FIXUP_THUNKS	= 0x10000000,
        CLRNATIVEIMAGE_DEBUG_COVERAGE	= 0x80000000
    } 	CLRNativeImageDumpOptions;

#ifdef __cplusplus
inline CLRNativeImageDumpOptions operator|=(CLRNativeImageDumpOptions& lhs, CLRNativeImageDumpOptions rhs) { return (lhs = (CLRNativeImageDumpOptions)( ((unsigned)lhs) | ((unsigned)rhs) )); }
#endif
typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0001_0010
    {
        CLRDATAHINT_DISPLAY_HINTS_NONE	= 0,
        CLRDATAHINT_DISPLAY_ARRAY_AS_TABLE	= 0x1,
        CLRDATAHINT_DISPLAY_ARRAY_AS_ARRAY	= 0x2,
        CLRDATAHINT_DISPLAY_ARRAY_AS_ARRAY_IDX	= 0x3,
        CLRDATAHINT_DISPLAY_ARRAY_AS_MAP	= 0x4,
        CLRDATAHINT_DISPLAY_ARRAY_HINT_MASK	= 0xff,
        CLRDATAHINT_DISPLAY_STRUCT_AS_TABLE	= 0x100,
        CLRDATAHINT_DISPLAY_STRUCT_HINT_MASK	= 0xff00,
        CLRDATAHINT_DISPLAY_SEP_TAB	= 0,
        CLRDATAHINT_DISPLAY_SEP_SPACE	= 0x1000000,
        CLRDATAHINT_DISPLAY_SEP_TAB_SPACE	= 0x2000000,
        CLRDATAHINT_DISPLAY_SEP_MASK	= 0xff000000
    } 	CLRDataDisplayHints;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0001_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0001_v0_0_s_ifspec;

#ifndef __IXCLRLibrarySupport_INTERFACE_DEFINED__
#define __IXCLRLibrarySupport_INTERFACE_DEFINED__

/* interface IXCLRLibrarySupport */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRLibrarySupport;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("E5F3039D-2C0C-4230-A69E-12AF1C3E563C")
    IXCLRLibrarySupport : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE LoadHardboundDependency(
            const WCHAR *name,
            REFGUID mvid,
            /* [out] */ SIZE_T *loadedBase) = 0;

        virtual HRESULT STDMETHODCALLTYPE LoadSoftboundDependency(
            const WCHAR *name,
            const BYTE *assemblymetadataBinding,
            const BYTE *hash,
            ULONG hashLength,
            /* [out] */ SIZE_T *loadedBase) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRLibrarySupportVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRLibrarySupport * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *LoadHardboundDependency )(
            IXCLRLibrarySupport * This,
            const WCHAR *name,
            REFGUID mvid,
            /* [out] */ SIZE_T *loadedBase);

        HRESULT ( STDMETHODCALLTYPE *LoadSoftboundDependency )(
            IXCLRLibrarySupport * This,
            const WCHAR *name,
            const BYTE *assemblymetadataBinding,
            const BYTE *hash,
            ULONG hashLength,
            /* [out] */ SIZE_T *loadedBase);

        END_INTERFACE
    } IXCLRLibrarySupportVtbl;

    interface IXCLRLibrarySupport
    {
        CONST_VTBL struct IXCLRLibrarySupportVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRLibrarySupport_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRLibrarySupport_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRLibrarySupport_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRLibrarySupport_LoadHardboundDependency(This,name,mvid,loadedBase)	\
    ( (This)->lpVtbl -> LoadHardboundDependency(This,name,mvid,loadedBase) )

#define IXCLRLibrarySupport_LoadSoftboundDependency(This,name,assemblymetadataBinding,hash,hashLength,loadedBase)	\
    ( (This)->lpVtbl -> LoadSoftboundDependency(This,name,assemblymetadataBinding,hash,hashLength,loadedBase) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRLibrarySupport_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0002 */
/* [local] */

typedef SIZE_T ( __stdcall *CDSTranslateAddrCB )(
    IXCLRDisassemblySupport *__MIDL____MIDL_itf_xclrdata_0000_00020000,
    CLRDATA_ADDRESS __MIDL____MIDL_itf_xclrdata_0000_00020001,
    wchar_t *__MIDL____MIDL_itf_xclrdata_0000_00020002,
    SIZE_T __MIDL____MIDL_itf_xclrdata_0000_00020003,
    DWORDLONG *__MIDL____MIDL_itf_xclrdata_0000_00020004);

typedef SIZE_T ( __stdcall *CDSTranslateFixupCB )(
    IXCLRDisassemblySupport *__MIDL____MIDL_itf_xclrdata_0000_00020006,
    CLRDATA_ADDRESS __MIDL____MIDL_itf_xclrdata_0000_00020007,
    SIZE_T __MIDL____MIDL_itf_xclrdata_0000_00020008,
    wchar_t *__MIDL____MIDL_itf_xclrdata_0000_00020009,
    SIZE_T __MIDL____MIDL_itf_xclrdata_0000_00020010,
    DWORDLONG *__MIDL____MIDL_itf_xclrdata_0000_00020011);

typedef SIZE_T ( __stdcall *CDSTranslateConstCB )(
    IXCLRDisassemblySupport *__MIDL____MIDL_itf_xclrdata_0000_00020013,
    DWORD __MIDL____MIDL_itf_xclrdata_0000_00020014,
    wchar_t *__MIDL____MIDL_itf_xclrdata_0000_00020015,
    SIZE_T __MIDL____MIDL_itf_xclrdata_0000_00020016);

typedef SIZE_T ( __stdcall *CDSTranslateRegrelCB )(
    IXCLRDisassemblySupport *__MIDL____MIDL_itf_xclrdata_0000_00020018,
    unsigned int rega,
    CLRDATA_ADDRESS __MIDL____MIDL_itf_xclrdata_0000_00020019,
    wchar_t *__MIDL____MIDL_itf_xclrdata_0000_00020020,
    SIZE_T __MIDL____MIDL_itf_xclrdata_0000_00020021,
    DWORD *__MIDL____MIDL_itf_xclrdata_0000_00020022);

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0002_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0002_v0_0_s_ifspec;

#ifndef __IXCLRDisassemblySupport_INTERFACE_DEFINED__
#define __IXCLRDisassemblySupport_INTERFACE_DEFINED__

/* interface IXCLRDisassemblySupport */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDisassemblySupport;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("1F0F7134-D3F3-47DE-8E9B-C2FD358A2936")
    IXCLRDisassemblySupport : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetTranslateAddrCallback(
            /* [in] */ CDSTranslateAddrCB cb) = 0;

        virtual HRESULT STDMETHODCALLTYPE PvClientSet(
            /* [in] */ void *pv) = 0;

        virtual SIZE_T STDMETHODCALLTYPE CbDisassemble(
            CLRDATA_ADDRESS __MIDL__IXCLRDisassemblySupport0000,
            const void *__MIDL__IXCLRDisassemblySupport0001,
            SIZE_T __MIDL__IXCLRDisassemblySupport0002) = 0;

        virtual SIZE_T STDMETHODCALLTYPE Cinstruction( void) = 0;

        virtual BOOL STDMETHODCALLTYPE FSelectInstruction(
            SIZE_T __MIDL__IXCLRDisassemblySupport0003) = 0;

        virtual SIZE_T STDMETHODCALLTYPE CchFormatInstr(
            wchar_t *__MIDL__IXCLRDisassemblySupport0004,
            SIZE_T __MIDL__IXCLRDisassemblySupport0005) = 0;

        virtual void *STDMETHODCALLTYPE PvClient( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetTranslateFixupCallback(
            /* [in] */ CDSTranslateFixupCB cb) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetTranslateConstCallback(
            /* [in] */ CDSTranslateConstCB cb) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetTranslateRegrelCallback(
            /* [in] */ CDSTranslateRegrelCB cb) = 0;

        virtual BOOL STDMETHODCALLTYPE TargetIsAddress( void) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDisassemblySupportVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDisassemblySupport * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *SetTranslateAddrCallback )(
            IXCLRDisassemblySupport * This,
            /* [in] */ CDSTranslateAddrCB cb);

        HRESULT ( STDMETHODCALLTYPE *PvClientSet )(
            IXCLRDisassemblySupport * This,
            /* [in] */ void *pv);

        SIZE_T ( STDMETHODCALLTYPE *CbDisassemble )(
            IXCLRDisassemblySupport * This,
            CLRDATA_ADDRESS __MIDL__IXCLRDisassemblySupport0000,
            const void *__MIDL__IXCLRDisassemblySupport0001,
            SIZE_T __MIDL__IXCLRDisassemblySupport0002);

        SIZE_T ( STDMETHODCALLTYPE *Cinstruction )(
            IXCLRDisassemblySupport * This);

        BOOL ( STDMETHODCALLTYPE *FSelectInstruction )(
            IXCLRDisassemblySupport * This,
            SIZE_T __MIDL__IXCLRDisassemblySupport0003);

        SIZE_T ( STDMETHODCALLTYPE *CchFormatInstr )(
            IXCLRDisassemblySupport * This,
            wchar_t *__MIDL__IXCLRDisassemblySupport0004,
            SIZE_T __MIDL__IXCLRDisassemblySupport0005);

        void *( STDMETHODCALLTYPE *PvClient )(
            IXCLRDisassemblySupport * This);

        HRESULT ( STDMETHODCALLTYPE *SetTranslateFixupCallback )(
            IXCLRDisassemblySupport * This,
            /* [in] */ CDSTranslateFixupCB cb);

        HRESULT ( STDMETHODCALLTYPE *SetTranslateConstCallback )(
            IXCLRDisassemblySupport * This,
            /* [in] */ CDSTranslateConstCB cb);

        HRESULT ( STDMETHODCALLTYPE *SetTranslateRegrelCallback )(
            IXCLRDisassemblySupport * This,
            /* [in] */ CDSTranslateRegrelCB cb);

        BOOL ( STDMETHODCALLTYPE *TargetIsAddress )(
            IXCLRDisassemblySupport * This);

        END_INTERFACE
    } IXCLRDisassemblySupportVtbl;

    interface IXCLRDisassemblySupport
    {
        CONST_VTBL struct IXCLRDisassemblySupportVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDisassemblySupport_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDisassemblySupport_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDisassemblySupport_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDisassemblySupport_SetTranslateAddrCallback(This,cb)	\
    ( (This)->lpVtbl -> SetTranslateAddrCallback(This,cb) )

#define IXCLRDisassemblySupport_PvClientSet(This,pv)	\
    ( (This)->lpVtbl -> PvClientSet(This,pv) )

#define IXCLRDisassemblySupport_CbDisassemble(This,__MIDL__IXCLRDisassemblySupport0000,__MIDL__IXCLRDisassemblySupport0001,__MIDL__IXCLRDisassemblySupport0002)	\
    ( (This)->lpVtbl -> CbDisassemble(This,__MIDL__IXCLRDisassemblySupport0000,__MIDL__IXCLRDisassemblySupport0001,__MIDL__IXCLRDisassemblySupport0002) )

#define IXCLRDisassemblySupport_Cinstruction(This)	\
    ( (This)->lpVtbl -> Cinstruction(This) )

#define IXCLRDisassemblySupport_FSelectInstruction(This,__MIDL__IXCLRDisassemblySupport0003)	\
    ( (This)->lpVtbl -> FSelectInstruction(This,__MIDL__IXCLRDisassemblySupport0003) )

#define IXCLRDisassemblySupport_CchFormatInstr(This,__MIDL__IXCLRDisassemblySupport0004,__MIDL__IXCLRDisassemblySupport0005)	\
    ( (This)->lpVtbl -> CchFormatInstr(This,__MIDL__IXCLRDisassemblySupport0004,__MIDL__IXCLRDisassemblySupport0005) )

#define IXCLRDisassemblySupport_PvClient(This)	\
    ( (This)->lpVtbl -> PvClient(This) )

#define IXCLRDisassemblySupport_SetTranslateFixupCallback(This,cb)	\
    ( (This)->lpVtbl -> SetTranslateFixupCallback(This,cb) )

#define IXCLRDisassemblySupport_SetTranslateConstCallback(This,cb)	\
    ( (This)->lpVtbl -> SetTranslateConstCallback(This,cb) )

#define IXCLRDisassemblySupport_SetTranslateRegrelCallback(This,cb)	\
    ( (This)->lpVtbl -> SetTranslateRegrelCallback(This,cb) )

#define IXCLRDisassemblySupport_TargetIsAddress(This)	\
    ( (This)->lpVtbl -> TargetIsAddress(This) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDisassemblySupport_INTERFACE_DEFINED__ */

#ifndef __IXCLRDataDisplay_INTERFACE_DEFINED__
#define __IXCLRDataDisplay_INTERFACE_DEFINED__

/* interface IXCLRDataDisplay */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataDisplay;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("A3C1704A-4559-4a67-8D28-E8F4FE3B3F62")
    IXCLRDataDisplay : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE ErrorPrintF(
            const char *const fmt,
            ...) = 0;

        virtual HRESULT STDMETHODCALLTYPE NativeImageDimensions(
            SIZE_T base,
            SIZE_T size,
            DWORD sectionAlign) = 0;

        virtual HRESULT STDMETHODCALLTYPE Section(
            const char *const name,
            SIZE_T rva,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetDumpOptions(
            /* [out] */ CLRNativeImageDumpOptions *pOptions) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartDocument( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndDocument( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartCategory(
            const char *const name) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndCategory( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartElement(
            const char *const name) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndElement( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartVStructure(
            const char *const name) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartVStructureWithOffset(
            const char *const name,
            unsigned int fieldOffset,
            unsigned int fieldSize) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndVStructure( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartTextElement(
            const char *const name) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndTextElement( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteXmlText(
            const char *const fmt,
            ...) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteXmlTextBlock(
            const char *const fmt,
            ...) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteEmptyElement(
            const char *const element) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementPointer(
            const char *const element,
            SIZE_T ptr) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementPointerAnnotated(
            const char *const element,
            SIZE_T ptr,
            const WCHAR *const annotation) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementAddress(
            const char *const element,
            SIZE_T base,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementAddressNamed(
            const char *const element,
            const char *const name,
            SIZE_T base,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementAddressNamedW(
            const char *const element,
            const WCHAR *const name,
            SIZE_T base,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementString(
            const char *const element,
            const char *const data) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementStringW(
            const char *const element,
            const WCHAR *const data) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementInt(
            const char *const element,
            int value) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementUInt(
            const char *const element,
            DWORD value) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementEnumerated(
            const char *const element,
            DWORD value,
            const WCHAR *const mnemonic) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementIntWithSuppress(
            const char *const element,
            int value,
            int suppressIfEqual) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteElementFlag(
            const char *const element,
            BOOL flag) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartArray(
            const char *const name,
            const WCHAR *const fmt) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndArray(
            const char *const countPrefix) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartList(
            const WCHAR *const fmt) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndList( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartArrayWithOffset(
            const char *const name,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            const WCHAR *const fmt) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldString(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            const char *const data) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldStringW(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            const WCHAR *const data) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldPointer(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldPointerWithSize(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldInt(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            int value) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldUInt(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            DWORD value) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldEnumerated(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            DWORD value,
            const WCHAR *const mnemonic) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldEmpty(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldFlag(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            BOOL flag) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldPointerAnnotated(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr,
            const WCHAR *const annotation) = 0;

        virtual HRESULT STDMETHODCALLTYPE WriteFieldAddress(
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T base,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartStructure(
            const char *const name,
            SIZE_T ptr,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartStructureWithNegSpace(
            const char *const name,
            SIZE_T ptr,
            SIZE_T startPtr,
            SIZE_T totalSize) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartStructureWithOffset(
            const char *const name,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr,
            SIZE_T size) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndStructure( void) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataDisplayVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataDisplay * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *ErrorPrintF )(
            IXCLRDataDisplay * This,
            const char *const fmt,
            ...);

        HRESULT ( STDMETHODCALLTYPE *NativeImageDimensions )(
            IXCLRDataDisplay * This,
            SIZE_T base,
            SIZE_T size,
            DWORD sectionAlign);

        HRESULT ( STDMETHODCALLTYPE *Section )(
            IXCLRDataDisplay * This,
            const char *const name,
            SIZE_T rva,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *GetDumpOptions )(
            IXCLRDataDisplay * This,
            /* [out] */ CLRNativeImageDumpOptions *pOptions);

        HRESULT ( STDMETHODCALLTYPE *StartDocument )(
            IXCLRDataDisplay * This);

        HRESULT ( STDMETHODCALLTYPE *EndDocument )(
            IXCLRDataDisplay * This);

        HRESULT ( STDMETHODCALLTYPE *StartCategory )(
            IXCLRDataDisplay * This,
            const char *const name);

        HRESULT ( STDMETHODCALLTYPE *EndCategory )(
            IXCLRDataDisplay * This);

        HRESULT ( STDMETHODCALLTYPE *StartElement )(
            IXCLRDataDisplay * This,
            const char *const name);

        HRESULT ( STDMETHODCALLTYPE *EndElement )(
            IXCLRDataDisplay * This);

        HRESULT ( STDMETHODCALLTYPE *StartVStructure )(
            IXCLRDataDisplay * This,
            const char *const name);

        HRESULT ( STDMETHODCALLTYPE *StartVStructureWithOffset )(
            IXCLRDataDisplay * This,
            const char *const name,
            unsigned int fieldOffset,
            unsigned int fieldSize);

        HRESULT ( STDMETHODCALLTYPE *EndVStructure )(
            IXCLRDataDisplay * This);

        HRESULT ( STDMETHODCALLTYPE *StartTextElement )(
            IXCLRDataDisplay * This,
            const char *const name);

        HRESULT ( STDMETHODCALLTYPE *EndTextElement )(
            IXCLRDataDisplay * This);

        HRESULT ( STDMETHODCALLTYPE *WriteXmlText )(
            IXCLRDataDisplay * This,
            const char *const fmt,
            ...);

        HRESULT ( STDMETHODCALLTYPE *WriteXmlTextBlock )(
            IXCLRDataDisplay * This,
            const char *const fmt,
            ...);

        HRESULT ( STDMETHODCALLTYPE *WriteEmptyElement )(
            IXCLRDataDisplay * This,
            const char *const element);

        HRESULT ( STDMETHODCALLTYPE *WriteElementPointer )(
            IXCLRDataDisplay * This,
            const char *const element,
            SIZE_T ptr);

        HRESULT ( STDMETHODCALLTYPE *WriteElementPointerAnnotated )(
            IXCLRDataDisplay * This,
            const char *const element,
            SIZE_T ptr,
            const WCHAR *const annotation);

        HRESULT ( STDMETHODCALLTYPE *WriteElementAddress )(
            IXCLRDataDisplay * This,
            const char *const element,
            SIZE_T base,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *WriteElementAddressNamed )(
            IXCLRDataDisplay * This,
            const char *const element,
            const char *const name,
            SIZE_T base,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *WriteElementAddressNamedW )(
            IXCLRDataDisplay * This,
            const char *const element,
            const WCHAR *const name,
            SIZE_T base,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *WriteElementString )(
            IXCLRDataDisplay * This,
            const char *const element,
            const char *const data);

        HRESULT ( STDMETHODCALLTYPE *WriteElementStringW )(
            IXCLRDataDisplay * This,
            const char *const element,
            const WCHAR *const data);

        HRESULT ( STDMETHODCALLTYPE *WriteElementInt )(
            IXCLRDataDisplay * This,
            const char *const element,
            int value);

        HRESULT ( STDMETHODCALLTYPE *WriteElementUInt )(
            IXCLRDataDisplay * This,
            const char *const element,
            DWORD value);

        HRESULT ( STDMETHODCALLTYPE *WriteElementEnumerated )(
            IXCLRDataDisplay * This,
            const char *const element,
            DWORD value,
            const WCHAR *const mnemonic);

        HRESULT ( STDMETHODCALLTYPE *WriteElementIntWithSuppress )(
            IXCLRDataDisplay * This,
            const char *const element,
            int value,
            int suppressIfEqual);

        HRESULT ( STDMETHODCALLTYPE *WriteElementFlag )(
            IXCLRDataDisplay * This,
            const char *const element,
            BOOL flag);

        HRESULT ( STDMETHODCALLTYPE *StartArray )(
            IXCLRDataDisplay * This,
            const char *const name,
            const WCHAR *const fmt);

        HRESULT ( STDMETHODCALLTYPE *EndArray )(
            IXCLRDataDisplay * This,
            const char *const countPrefix);

        HRESULT ( STDMETHODCALLTYPE *StartList )(
            IXCLRDataDisplay * This,
            const WCHAR *const fmt);

        HRESULT ( STDMETHODCALLTYPE *EndList )(
            IXCLRDataDisplay * This);

        HRESULT ( STDMETHODCALLTYPE *StartArrayWithOffset )(
            IXCLRDataDisplay * This,
            const char *const name,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            const WCHAR *const fmt);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldString )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            const char *const data);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldStringW )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            const WCHAR *const data);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldPointer )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldPointerWithSize )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldInt )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            int value);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldUInt )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            DWORD value);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldEnumerated )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            DWORD value,
            const WCHAR *const mnemonic);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldEmpty )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldFlag )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            BOOL flag);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldPointerAnnotated )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr,
            const WCHAR *const annotation);

        HRESULT ( STDMETHODCALLTYPE *WriteFieldAddress )(
            IXCLRDataDisplay * This,
            const char *const element,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T base,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *StartStructure )(
            IXCLRDataDisplay * This,
            const char *const name,
            SIZE_T ptr,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *StartStructureWithNegSpace )(
            IXCLRDataDisplay * This,
            const char *const name,
            SIZE_T ptr,
            SIZE_T startPtr,
            SIZE_T totalSize);

        HRESULT ( STDMETHODCALLTYPE *StartStructureWithOffset )(
            IXCLRDataDisplay * This,
            const char *const name,
            unsigned int fieldOffset,
            unsigned int fieldSize,
            SIZE_T ptr,
            SIZE_T size);

        HRESULT ( STDMETHODCALLTYPE *EndStructure )(
            IXCLRDataDisplay * This);

        END_INTERFACE
    } IXCLRDataDisplayVtbl;

    interface IXCLRDataDisplay
    {
        CONST_VTBL struct IXCLRDataDisplayVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataDisplay_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataDisplay_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataDisplay_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataDisplay_ErrorPrintF(This,fmt,...)	\
    ( (This)->lpVtbl -> ErrorPrintF(This,fmt,...) )

#define IXCLRDataDisplay_NativeImageDimensions(This,base,size,sectionAlign)	\
    ( (This)->lpVtbl -> NativeImageDimensions(This,base,size,sectionAlign) )

#define IXCLRDataDisplay_Section(This,name,rva,size)	\
    ( (This)->lpVtbl -> Section(This,name,rva,size) )

#define IXCLRDataDisplay_GetDumpOptions(This,pOptions)	\
    ( (This)->lpVtbl -> GetDumpOptions(This,pOptions) )

#define IXCLRDataDisplay_StartDocument(This)	\
    ( (This)->lpVtbl -> StartDocument(This) )

#define IXCLRDataDisplay_EndDocument(This)	\
    ( (This)->lpVtbl -> EndDocument(This) )

#define IXCLRDataDisplay_StartCategory(This,name)	\
    ( (This)->lpVtbl -> StartCategory(This,name) )

#define IXCLRDataDisplay_EndCategory(This)	\
    ( (This)->lpVtbl -> EndCategory(This) )

#define IXCLRDataDisplay_StartElement(This,name)	\
    ( (This)->lpVtbl -> StartElement(This,name) )

#define IXCLRDataDisplay_EndElement(This)	\
    ( (This)->lpVtbl -> EndElement(This) )

#define IXCLRDataDisplay_StartVStructure(This,name)	\
    ( (This)->lpVtbl -> StartVStructure(This,name) )

#define IXCLRDataDisplay_StartVStructureWithOffset(This,name,fieldOffset,fieldSize)	\
    ( (This)->lpVtbl -> StartVStructureWithOffset(This,name,fieldOffset,fieldSize) )

#define IXCLRDataDisplay_EndVStructure(This)	\
    ( (This)->lpVtbl -> EndVStructure(This) )

#define IXCLRDataDisplay_StartTextElement(This,name)	\
    ( (This)->lpVtbl -> StartTextElement(This,name) )

#define IXCLRDataDisplay_EndTextElement(This)	\
    ( (This)->lpVtbl -> EndTextElement(This) )

#define IXCLRDataDisplay_WriteXmlText(This,fmt,...)	\
    ( (This)->lpVtbl -> WriteXmlText(This,fmt,...) )

#define IXCLRDataDisplay_WriteXmlTextBlock(This,fmt,...)	\
    ( (This)->lpVtbl -> WriteXmlTextBlock(This,fmt,...) )

#define IXCLRDataDisplay_WriteEmptyElement(This,element)	\
    ( (This)->lpVtbl -> WriteEmptyElement(This,element) )

#define IXCLRDataDisplay_WriteElementPointer(This,element,ptr)	\
    ( (This)->lpVtbl -> WriteElementPointer(This,element,ptr) )

#define IXCLRDataDisplay_WriteElementPointerAnnotated(This,element,ptr,annotation)	\
    ( (This)->lpVtbl -> WriteElementPointerAnnotated(This,element,ptr,annotation) )

#define IXCLRDataDisplay_WriteElementAddress(This,element,base,size)	\
    ( (This)->lpVtbl -> WriteElementAddress(This,element,base,size) )

#define IXCLRDataDisplay_WriteElementAddressNamed(This,element,name,base,size)	\
    ( (This)->lpVtbl -> WriteElementAddressNamed(This,element,name,base,size) )

#define IXCLRDataDisplay_WriteElementAddressNamedW(This,element,name,base,size)	\
    ( (This)->lpVtbl -> WriteElementAddressNamedW(This,element,name,base,size) )

#define IXCLRDataDisplay_WriteElementString(This,element,data)	\
    ( (This)->lpVtbl -> WriteElementString(This,element,data) )

#define IXCLRDataDisplay_WriteElementStringW(This,element,data)	\
    ( (This)->lpVtbl -> WriteElementStringW(This,element,data) )

#define IXCLRDataDisplay_WriteElementInt(This,element,value)	\
    ( (This)->lpVtbl -> WriteElementInt(This,element,value) )

#define IXCLRDataDisplay_WriteElementUInt(This,element,value)	\
    ( (This)->lpVtbl -> WriteElementUInt(This,element,value) )

#define IXCLRDataDisplay_WriteElementEnumerated(This,element,value,mnemonic)	\
    ( (This)->lpVtbl -> WriteElementEnumerated(This,element,value,mnemonic) )

#define IXCLRDataDisplay_WriteElementIntWithSuppress(This,element,value,suppressIfEqual)	\
    ( (This)->lpVtbl -> WriteElementIntWithSuppress(This,element,value,suppressIfEqual) )

#define IXCLRDataDisplay_WriteElementFlag(This,element,flag)	\
    ( (This)->lpVtbl -> WriteElementFlag(This,element,flag) )

#define IXCLRDataDisplay_StartArray(This,name,fmt)	\
    ( (This)->lpVtbl -> StartArray(This,name,fmt) )

#define IXCLRDataDisplay_EndArray(This,countPrefix)	\
    ( (This)->lpVtbl -> EndArray(This,countPrefix) )

#define IXCLRDataDisplay_StartList(This,fmt)	\
    ( (This)->lpVtbl -> StartList(This,fmt) )

#define IXCLRDataDisplay_EndList(This)	\
    ( (This)->lpVtbl -> EndList(This) )

#define IXCLRDataDisplay_StartArrayWithOffset(This,name,fieldOffset,fieldSize,fmt)	\
    ( (This)->lpVtbl -> StartArrayWithOffset(This,name,fieldOffset,fieldSize,fmt) )

#define IXCLRDataDisplay_WriteFieldString(This,element,fieldOffset,fieldSize,data)	\
    ( (This)->lpVtbl -> WriteFieldString(This,element,fieldOffset,fieldSize,data) )

#define IXCLRDataDisplay_WriteFieldStringW(This,element,fieldOffset,fieldSize,data)	\
    ( (This)->lpVtbl -> WriteFieldStringW(This,element,fieldOffset,fieldSize,data) )

#define IXCLRDataDisplay_WriteFieldPointer(This,element,fieldOffset,fieldSize,ptr)	\
    ( (This)->lpVtbl -> WriteFieldPointer(This,element,fieldOffset,fieldSize,ptr) )

#define IXCLRDataDisplay_WriteFieldPointerWithSize(This,element,fieldOffset,fieldSize,ptr,size)	\
    ( (This)->lpVtbl -> WriteFieldPointerWithSize(This,element,fieldOffset,fieldSize,ptr,size) )

#define IXCLRDataDisplay_WriteFieldInt(This,element,fieldOffset,fieldSize,value)	\
    ( (This)->lpVtbl -> WriteFieldInt(This,element,fieldOffset,fieldSize,value) )

#define IXCLRDataDisplay_WriteFieldUInt(This,element,fieldOffset,fieldSize,value)	\
    ( (This)->lpVtbl -> WriteFieldUInt(This,element,fieldOffset,fieldSize,value) )

#define IXCLRDataDisplay_WriteFieldEnumerated(This,element,fieldOffset,fieldSize,value,mnemonic)	\
    ( (This)->lpVtbl -> WriteFieldEnumerated(This,element,fieldOffset,fieldSize,value,mnemonic) )

#define IXCLRDataDisplay_WriteFieldEmpty(This,element,fieldOffset,fieldSize)	\
    ( (This)->lpVtbl -> WriteFieldEmpty(This,element,fieldOffset,fieldSize) )

#define IXCLRDataDisplay_WriteFieldFlag(This,element,fieldOffset,fieldSize,flag)	\
    ( (This)->lpVtbl -> WriteFieldFlag(This,element,fieldOffset,fieldSize,flag) )

#define IXCLRDataDisplay_WriteFieldPointerAnnotated(This,element,fieldOffset,fieldSize,ptr,annotation)	\
    ( (This)->lpVtbl -> WriteFieldPointerAnnotated(This,element,fieldOffset,fieldSize,ptr,annotation) )

#define IXCLRDataDisplay_WriteFieldAddress(This,element,fieldOffset,fieldSize,base,size)	\
    ( (This)->lpVtbl -> WriteFieldAddress(This,element,fieldOffset,fieldSize,base,size) )

#define IXCLRDataDisplay_StartStructure(This,name,ptr,size)	\
    ( (This)->lpVtbl -> StartStructure(This,name,ptr,size) )

#define IXCLRDataDisplay_StartStructureWithNegSpace(This,name,ptr,startPtr,totalSize)	\
    ( (This)->lpVtbl -> StartStructureWithNegSpace(This,name,ptr,startPtr,totalSize) )

#define IXCLRDataDisplay_StartStructureWithOffset(This,name,fieldOffset,fieldSize,ptr,size)	\
    ( (This)->lpVtbl -> StartStructureWithOffset(This,name,fieldOffset,fieldSize,ptr,size) )

#define IXCLRDataDisplay_EndStructure(This)	\
    ( (This)->lpVtbl -> EndStructure(This) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataDisplay_INTERFACE_DEFINED__ */

#ifndef __IXCLRDataProcess_INTERFACE_DEFINED__
#define __IXCLRDataProcess_INTERFACE_DEFINED__

/* interface IXCLRDataProcess */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataProcess;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("5c552ab6-fc09-4cb3-8e36-22fa03c798b7")
    IXCLRDataProcess : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE Flush( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumTasks(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumTask(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTask **task) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumTasks(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTaskByOSThreadID(
            /* [in] */ ULONG32 osThreadID,
            /* [out] */ IXCLRDataTask **task) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTaskByUniqueID(
            /* [in] */ ULONG64 taskID,
            /* [out] */ IXCLRDataTask **task) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataProcess *process) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetManagedObject(
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetDesiredExecutionState(
            /* [out] */ ULONG32 *state) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetDesiredExecutionState(
            /* [in] */ ULONG32 state) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetAddressType(
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ CLRDataAddressType *type) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetRuntimeNameByAddress(
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ CLRDATA_ADDRESS *displacement) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumAppDomains(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumAppDomain(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAppDomain **appDomain) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumAppDomains(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetAppDomainByUniqueID(
            /* [in] */ ULONG64 id,
            /* [out] */ IXCLRDataAppDomain **appDomain) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumAssemblies(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumAssembly(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAssembly **assembly) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumAssemblies(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumModules(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumModule(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumModules(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetModuleByAddress(
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodInstancesByAddress(
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodInstanceByAddress(
            /* [in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **method) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodInstancesByAddress(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetDataByAddress(
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataValue **value,
            /* [out] */ CLRDATA_ADDRESS *displacement) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetExceptionStateByExceptionRecord(
            /* [in] */ EXCEPTION_RECORD64 *record,
            /* [out] */ IXCLRDataExceptionState **exState) = 0;

        virtual HRESULT STDMETHODCALLTYPE TranslateExceptionRecordToNotification(
            /* [in] */ EXCEPTION_RECORD64 *record,
            /* [in] */ IXCLRDataExceptionNotification *notify) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE CreateMemoryValue(
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [in] */ IXCLRDataTypeInstance *type,
            /* [in] */ CLRDATA_ADDRESS addr,
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetAllTypeNotifications(
            IXCLRDataModule *mod,
            ULONG32 flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetAllCodeNotifications(
            IXCLRDataModule *mod,
            ULONG32 flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTypeNotifications(
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdTypeDef tokens[  ],
            /* [size_is][out] */ ULONG32 flags[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetTypeNotifications(
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdTypeDef tokens[  ],
            /* [size_is][in] */ ULONG32 flags[  ],
            /* [in] */ ULONG32 singleFlags) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetCodeNotifications(
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdMethodDef tokens[  ],
            /* [size_is][out] */ ULONG32 flags[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetCodeNotifications(
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdMethodDef tokens[  ],
            /* [size_is][in] */ ULONG32 flags[  ],
            /* [in] */ ULONG32 singleFlags) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetOtherNotificationFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetOtherNotificationFlags(
            /* [in] */ ULONG32 flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodDefinitionsByAddress(
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodDefinitionByAddress(
            /* [in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **method) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodDefinitionsByAddress(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE FollowStub(
            /* [in] */ ULONG32 inFlags,
            /* [in] */ CLRDATA_ADDRESS inAddr,
            /* [in] */ CLRDATA_FOLLOW_STUB_BUFFER *inBuffer,
            /* [out] */ CLRDATA_ADDRESS *outAddr,
            /* [out] */ CLRDATA_FOLLOW_STUB_BUFFER *outBuffer,
            /* [out] */ ULONG32 *outFlags) = 0;

        virtual HRESULT STDMETHODCALLTYPE FollowStub2(
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 inFlags,
            /* [in] */ CLRDATA_ADDRESS inAddr,
            /* [in] */ CLRDATA_FOLLOW_STUB_BUFFER *inBuffer,
            /* [out] */ CLRDATA_ADDRESS *outAddr,
            /* [out] */ CLRDATA_FOLLOW_STUB_BUFFER *outBuffer,
            /* [out] */ ULONG32 *outFlags) = 0;

        virtual HRESULT STDMETHODCALLTYPE DumpNativeImage(
            /* [in] */ CLRDATA_ADDRESS loadedBase,
            /* [in] */ LPCWSTR name,
            /* [in] */ IXCLRDataDisplay *display,
            /* [in] */ IXCLRLibrarySupport *libSupport,
            /* [in] */ IXCLRDisassemblySupport *dis) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataProcessVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataProcess * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *Flush )(
            IXCLRDataProcess * This);

        HRESULT ( STDMETHODCALLTYPE *StartEnumTasks )(
            IXCLRDataProcess * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumTask )(
            IXCLRDataProcess * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTask **task);

        HRESULT ( STDMETHODCALLTYPE *EndEnumTasks )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetTaskByOSThreadID )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 osThreadID,
            /* [out] */ IXCLRDataTask **task);

        HRESULT ( STDMETHODCALLTYPE *GetTaskByUniqueID )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG64 taskID,
            /* [out] */ IXCLRDataTask **task);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataProcess * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataProcess * This,
            /* [in] */ IXCLRDataProcess *process);

        HRESULT ( STDMETHODCALLTYPE *GetManagedObject )(
            IXCLRDataProcess * This,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *GetDesiredExecutionState )(
            IXCLRDataProcess * This,
            /* [out] */ ULONG32 *state);

        HRESULT ( STDMETHODCALLTYPE *SetDesiredExecutionState )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *GetAddressType )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ CLRDataAddressType *type);

        HRESULT ( STDMETHODCALLTYPE *GetRuntimeNameByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ CLRDATA_ADDRESS *displacement);

        HRESULT ( STDMETHODCALLTYPE *StartEnumAppDomains )(
            IXCLRDataProcess * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumAppDomain )(
            IXCLRDataProcess * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *EndEnumAppDomains )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetAppDomainByUniqueID )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG64 id,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *StartEnumAssemblies )(
            IXCLRDataProcess * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumAssembly )(
            IXCLRDataProcess * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAssembly **assembly);

        HRESULT ( STDMETHODCALLTYPE *EndEnumAssemblies )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumModules )(
            IXCLRDataProcess * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumModule )(
            IXCLRDataProcess * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *EndEnumModules )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetModuleByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodInstancesByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodInstanceByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodInstancesByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetDataByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataValue **value,
            /* [out] */ CLRDATA_ADDRESS *displacement);

        HRESULT ( STDMETHODCALLTYPE *GetExceptionStateByExceptionRecord )(
            IXCLRDataProcess * This,
            /* [in] */ EXCEPTION_RECORD64 *record,
            /* [out] */ IXCLRDataExceptionState **exState);

        HRESULT ( STDMETHODCALLTYPE *TranslateExceptionRecordToNotification )(
            IXCLRDataProcess * This,
            /* [in] */ EXCEPTION_RECORD64 *record,
            /* [in] */ IXCLRDataExceptionNotification *notify);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *CreateMemoryValue )(
            IXCLRDataProcess * This,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [in] */ IXCLRDataTypeInstance *type,
            /* [in] */ CLRDATA_ADDRESS addr,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *SetAllTypeNotifications )(
            IXCLRDataProcess * This,
            IXCLRDataModule *mod,
            ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *SetAllCodeNotifications )(
            IXCLRDataProcess * This,
            IXCLRDataModule *mod,
            ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *GetTypeNotifications )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdTypeDef tokens[  ],
            /* [size_is][out] */ ULONG32 flags[  ]);

        HRESULT ( STDMETHODCALLTYPE *SetTypeNotifications )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdTypeDef tokens[  ],
            /* [size_is][in] */ ULONG32 flags[  ],
            /* [in] */ ULONG32 singleFlags);

        HRESULT ( STDMETHODCALLTYPE *GetCodeNotifications )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdMethodDef tokens[  ],
            /* [size_is][out] */ ULONG32 flags[  ]);

        HRESULT ( STDMETHODCALLTYPE *SetCodeNotifications )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdMethodDef tokens[  ],
            /* [size_is][in] */ ULONG32 flags[  ],
            /* [in] */ ULONG32 singleFlags);

        HRESULT ( STDMETHODCALLTYPE *GetOtherNotificationFlags )(
            IXCLRDataProcess * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *SetOtherNotificationFlags )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodDefinitionsByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodDefinitionByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodDefinitionsByAddress )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *FollowStub )(
            IXCLRDataProcess * This,
            /* [in] */ ULONG32 inFlags,
            /* [in] */ CLRDATA_ADDRESS inAddr,
            /* [in] */ CLRDATA_FOLLOW_STUB_BUFFER *inBuffer,
            /* [out] */ CLRDATA_ADDRESS *outAddr,
            /* [out] */ CLRDATA_FOLLOW_STUB_BUFFER *outBuffer,
            /* [out] */ ULONG32 *outFlags);

        HRESULT ( STDMETHODCALLTYPE *FollowStub2 )(
            IXCLRDataProcess * This,
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 inFlags,
            /* [in] */ CLRDATA_ADDRESS inAddr,
            /* [in] */ CLRDATA_FOLLOW_STUB_BUFFER *inBuffer,
            /* [out] */ CLRDATA_ADDRESS *outAddr,
            /* [out] */ CLRDATA_FOLLOW_STUB_BUFFER *outBuffer,
            /* [out] */ ULONG32 *outFlags);

        HRESULT ( STDMETHODCALLTYPE *DumpNativeImage )(
            IXCLRDataProcess * This,
            /* [in] */ CLRDATA_ADDRESS loadedBase,
            /* [in] */ LPCWSTR name,
            /* [in] */ IXCLRDataDisplay *display,
            /* [in] */ IXCLRLibrarySupport *libSupport,
            /* [in] */ IXCLRDisassemblySupport *dis);

        END_INTERFACE
    } IXCLRDataProcessVtbl;

    interface IXCLRDataProcess
    {
        CONST_VTBL struct IXCLRDataProcessVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataProcess_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataProcess_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataProcess_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataProcess_Flush(This)	\
    ( (This)->lpVtbl -> Flush(This) )

#define IXCLRDataProcess_StartEnumTasks(This,handle)	\
    ( (This)->lpVtbl -> StartEnumTasks(This,handle) )

#define IXCLRDataProcess_EnumTask(This,handle,task)	\
    ( (This)->lpVtbl -> EnumTask(This,handle,task) )

#define IXCLRDataProcess_EndEnumTasks(This,handle)	\
    ( (This)->lpVtbl -> EndEnumTasks(This,handle) )

#define IXCLRDataProcess_GetTaskByOSThreadID(This,osThreadID,task)	\
    ( (This)->lpVtbl -> GetTaskByOSThreadID(This,osThreadID,task) )

#define IXCLRDataProcess_GetTaskByUniqueID(This,taskID,task)	\
    ( (This)->lpVtbl -> GetTaskByUniqueID(This,taskID,task) )

#define IXCLRDataProcess_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataProcess_IsSameObject(This,process)	\
    ( (This)->lpVtbl -> IsSameObject(This,process) )

#define IXCLRDataProcess_GetManagedObject(This,value)	\
    ( (This)->lpVtbl -> GetManagedObject(This,value) )

#define IXCLRDataProcess_GetDesiredExecutionState(This,state)	\
    ( (This)->lpVtbl -> GetDesiredExecutionState(This,state) )

#define IXCLRDataProcess_SetDesiredExecutionState(This,state)	\
    ( (This)->lpVtbl -> SetDesiredExecutionState(This,state) )

#define IXCLRDataProcess_GetAddressType(This,address,type)	\
    ( (This)->lpVtbl -> GetAddressType(This,address,type) )

#define IXCLRDataProcess_GetRuntimeNameByAddress(This,address,flags,bufLen,nameLen,nameBuf,displacement)	\
    ( (This)->lpVtbl -> GetRuntimeNameByAddress(This,address,flags,bufLen,nameLen,nameBuf,displacement) )

#define IXCLRDataProcess_StartEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> StartEnumAppDomains(This,handle) )

#define IXCLRDataProcess_EnumAppDomain(This,handle,appDomain)	\
    ( (This)->lpVtbl -> EnumAppDomain(This,handle,appDomain) )

#define IXCLRDataProcess_EndEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> EndEnumAppDomains(This,handle) )

#define IXCLRDataProcess_GetAppDomainByUniqueID(This,id,appDomain)	\
    ( (This)->lpVtbl -> GetAppDomainByUniqueID(This,id,appDomain) )

#define IXCLRDataProcess_StartEnumAssemblies(This,handle)	\
    ( (This)->lpVtbl -> StartEnumAssemblies(This,handle) )

#define IXCLRDataProcess_EnumAssembly(This,handle,assembly)	\
    ( (This)->lpVtbl -> EnumAssembly(This,handle,assembly) )

#define IXCLRDataProcess_EndEnumAssemblies(This,handle)	\
    ( (This)->lpVtbl -> EndEnumAssemblies(This,handle) )

#define IXCLRDataProcess_StartEnumModules(This,handle)	\
    ( (This)->lpVtbl -> StartEnumModules(This,handle) )

#define IXCLRDataProcess_EnumModule(This,handle,mod)	\
    ( (This)->lpVtbl -> EnumModule(This,handle,mod) )

#define IXCLRDataProcess_EndEnumModules(This,handle)	\
    ( (This)->lpVtbl -> EndEnumModules(This,handle) )

#define IXCLRDataProcess_GetModuleByAddress(This,address,mod)	\
    ( (This)->lpVtbl -> GetModuleByAddress(This,address,mod) )

#define IXCLRDataProcess_StartEnumMethodInstancesByAddress(This,address,appDomain,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodInstancesByAddress(This,address,appDomain,handle) )

#define IXCLRDataProcess_EnumMethodInstanceByAddress(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodInstanceByAddress(This,handle,method) )

#define IXCLRDataProcess_EndEnumMethodInstancesByAddress(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodInstancesByAddress(This,handle) )

#define IXCLRDataProcess_GetDataByAddress(This,address,flags,appDomain,tlsTask,bufLen,nameLen,nameBuf,value,displacement)	\
    ( (This)->lpVtbl -> GetDataByAddress(This,address,flags,appDomain,tlsTask,bufLen,nameLen,nameBuf,value,displacement) )

#define IXCLRDataProcess_GetExceptionStateByExceptionRecord(This,record,exState)	\
    ( (This)->lpVtbl -> GetExceptionStateByExceptionRecord(This,record,exState) )

#define IXCLRDataProcess_TranslateExceptionRecordToNotification(This,record,notify)	\
    ( (This)->lpVtbl -> TranslateExceptionRecordToNotification(This,record,notify) )

#define IXCLRDataProcess_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataProcess_CreateMemoryValue(This,appDomain,tlsTask,type,addr,value)	\
    ( (This)->lpVtbl -> CreateMemoryValue(This,appDomain,tlsTask,type,addr,value) )

#define IXCLRDataProcess_SetAllTypeNotifications(This,mod,flags)	\
    ( (This)->lpVtbl -> SetAllTypeNotifications(This,mod,flags) )

#define IXCLRDataProcess_SetAllCodeNotifications(This,mod,flags)	\
    ( (This)->lpVtbl -> SetAllCodeNotifications(This,mod,flags) )

#define IXCLRDataProcess_GetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags)	\
    ( (This)->lpVtbl -> GetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags) )

#define IXCLRDataProcess_SetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags)	\
    ( (This)->lpVtbl -> SetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags) )

#define IXCLRDataProcess_GetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags)	\
    ( (This)->lpVtbl -> GetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags) )

#define IXCLRDataProcess_SetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags)	\
    ( (This)->lpVtbl -> SetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags) )

#define IXCLRDataProcess_GetOtherNotificationFlags(This,flags)	\
    ( (This)->lpVtbl -> GetOtherNotificationFlags(This,flags) )

#define IXCLRDataProcess_SetOtherNotificationFlags(This,flags)	\
    ( (This)->lpVtbl -> SetOtherNotificationFlags(This,flags) )

#define IXCLRDataProcess_StartEnumMethodDefinitionsByAddress(This,address,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodDefinitionsByAddress(This,address,handle) )

#define IXCLRDataProcess_EnumMethodDefinitionByAddress(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodDefinitionByAddress(This,handle,method) )

#define IXCLRDataProcess_EndEnumMethodDefinitionsByAddress(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodDefinitionsByAddress(This,handle) )

#define IXCLRDataProcess_FollowStub(This,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags)	\
    ( (This)->lpVtbl -> FollowStub(This,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags) )

#define IXCLRDataProcess_FollowStub2(This,task,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags)	\
    ( (This)->lpVtbl -> FollowStub2(This,task,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags) )

#define IXCLRDataProcess_DumpNativeImage(This,loadedBase,name,display,libSupport,dis)	\
    ( (This)->lpVtbl -> DumpNativeImage(This,loadedBase,name,display,libSupport,dis) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataProcess_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0005 */
/* [local] */

#pragma warning(pop)
typedef /* [public][public][public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0005_0001
    {
        GC_MARK_END	= 1,
        GC_EVENT_TYPE_MAX	= ( GC_MARK_END + 1 )
    } 	GcEvt_t;

typedef /* [public][public][public][public] */ struct __MIDL___MIDL_itf_xclrdata_0000_0005_0002
    {
    GcEvt_t typ;
    /* [switch_is] */ /* [switch_type] */ union
        {
        /* [case()] */ int condemnedGeneration;
        } 	;
    } 	GcEvtArgs;

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0005_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0005_v0_0_s_ifspec;

#ifndef __IXCLRDataProcess2_INTERFACE_DEFINED__
#define __IXCLRDataProcess2_INTERFACE_DEFINED__

/* interface IXCLRDataProcess2 */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataProcess2;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("5c552ab6-fc09-4cb3-8e36-22fa03c798b8")
    IXCLRDataProcess2 : public IXCLRDataProcess
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetGcNotification(
            /* [out][in] */ GcEvtArgs *gcEvtArgs) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetGcNotification(
            /* [in] */ GcEvtArgs gcEvtArgs) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataProcess2Vtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataProcess2 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *Flush )(
            IXCLRDataProcess2 * This);

        HRESULT ( STDMETHODCALLTYPE *StartEnumTasks )(
            IXCLRDataProcess2 * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumTask )(
            IXCLRDataProcess2 * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTask **task);

        HRESULT ( STDMETHODCALLTYPE *EndEnumTasks )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetTaskByOSThreadID )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 osThreadID,
            /* [out] */ IXCLRDataTask **task);

        HRESULT ( STDMETHODCALLTYPE *GetTaskByUniqueID )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG64 taskID,
            /* [out] */ IXCLRDataTask **task);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataProcess2 * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataProcess2 * This,
            /* [in] */ IXCLRDataProcess *process);

        HRESULT ( STDMETHODCALLTYPE *GetManagedObject )(
            IXCLRDataProcess2 * This,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *GetDesiredExecutionState )(
            IXCLRDataProcess2 * This,
            /* [out] */ ULONG32 *state);

        HRESULT ( STDMETHODCALLTYPE *SetDesiredExecutionState )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *GetAddressType )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ CLRDataAddressType *type);

        HRESULT ( STDMETHODCALLTYPE *GetRuntimeNameByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ CLRDATA_ADDRESS *displacement);

        HRESULT ( STDMETHODCALLTYPE *StartEnumAppDomains )(
            IXCLRDataProcess2 * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumAppDomain )(
            IXCLRDataProcess2 * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *EndEnumAppDomains )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetAppDomainByUniqueID )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG64 id,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *StartEnumAssemblies )(
            IXCLRDataProcess2 * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumAssembly )(
            IXCLRDataProcess2 * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAssembly **assembly);

        HRESULT ( STDMETHODCALLTYPE *EndEnumAssemblies )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumModules )(
            IXCLRDataProcess2 * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumModule )(
            IXCLRDataProcess2 * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *EndEnumModules )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetModuleByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodInstancesByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodInstanceByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodInstancesByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetDataByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataValue **value,
            /* [out] */ CLRDATA_ADDRESS *displacement);

        HRESULT ( STDMETHODCALLTYPE *GetExceptionStateByExceptionRecord )(
            IXCLRDataProcess2 * This,
            /* [in] */ EXCEPTION_RECORD64 *record,
            /* [out] */ IXCLRDataExceptionState **exState);

        HRESULT ( STDMETHODCALLTYPE *TranslateExceptionRecordToNotification )(
            IXCLRDataProcess2 * This,
            /* [in] */ EXCEPTION_RECORD64 *record,
            /* [in] */ IXCLRDataExceptionNotification *notify);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *CreateMemoryValue )(
            IXCLRDataProcess2 * This,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [in] */ IXCLRDataTypeInstance *type,
            /* [in] */ CLRDATA_ADDRESS addr,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *SetAllTypeNotifications )(
            IXCLRDataProcess2 * This,
            IXCLRDataModule *mod,
            ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *SetAllCodeNotifications )(
            IXCLRDataProcess2 * This,
            IXCLRDataModule *mod,
            ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *GetTypeNotifications )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdTypeDef tokens[  ],
            /* [size_is][out] */ ULONG32 flags[  ]);

        HRESULT ( STDMETHODCALLTYPE *SetTypeNotifications )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdTypeDef tokens[  ],
            /* [size_is][in] */ ULONG32 flags[  ],
            /* [in] */ ULONG32 singleFlags);

        HRESULT ( STDMETHODCALLTYPE *GetCodeNotifications )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdMethodDef tokens[  ],
            /* [size_is][out] */ ULONG32 flags[  ]);

        HRESULT ( STDMETHODCALLTYPE *SetCodeNotifications )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 numTokens,
            /* [size_is][in] */ IXCLRDataModule *mods[  ],
            /* [in] */ IXCLRDataModule *singleMod,
            /* [size_is][in] */ mdMethodDef tokens[  ],
            /* [size_is][in] */ ULONG32 flags[  ],
            /* [in] */ ULONG32 singleFlags);

        HRESULT ( STDMETHODCALLTYPE *GetOtherNotificationFlags )(
            IXCLRDataProcess2 * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *SetOtherNotificationFlags )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodDefinitionsByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodDefinitionByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodDefinitionsByAddress )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *FollowStub )(
            IXCLRDataProcess2 * This,
            /* [in] */ ULONG32 inFlags,
            /* [in] */ CLRDATA_ADDRESS inAddr,
            /* [in] */ CLRDATA_FOLLOW_STUB_BUFFER *inBuffer,
            /* [out] */ CLRDATA_ADDRESS *outAddr,
            /* [out] */ CLRDATA_FOLLOW_STUB_BUFFER *outBuffer,
            /* [out] */ ULONG32 *outFlags);

        HRESULT ( STDMETHODCALLTYPE *FollowStub2 )(
            IXCLRDataProcess2 * This,
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 inFlags,
            /* [in] */ CLRDATA_ADDRESS inAddr,
            /* [in] */ CLRDATA_FOLLOW_STUB_BUFFER *inBuffer,
            /* [out] */ CLRDATA_ADDRESS *outAddr,
            /* [out] */ CLRDATA_FOLLOW_STUB_BUFFER *outBuffer,
            /* [out] */ ULONG32 *outFlags);

        HRESULT ( STDMETHODCALLTYPE *DumpNativeImage )(
            IXCLRDataProcess2 * This,
            /* [in] */ CLRDATA_ADDRESS loadedBase,
            /* [in] */ LPCWSTR name,
            /* [in] */ IXCLRDataDisplay *display,
            /* [in] */ IXCLRLibrarySupport *libSupport,
            /* [in] */ IXCLRDisassemblySupport *dis);

        HRESULT ( STDMETHODCALLTYPE *GetGcNotification )(
            IXCLRDataProcess2 * This,
            /* [out][in] */ GcEvtArgs *gcEvtArgs);

        HRESULT ( STDMETHODCALLTYPE *SetGcNotification )(
            IXCLRDataProcess2 * This,
            /* [in] */ GcEvtArgs gcEvtArgs);

        END_INTERFACE
    } IXCLRDataProcess2Vtbl;

    interface IXCLRDataProcess2
    {
        CONST_VTBL struct IXCLRDataProcess2Vtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataProcess2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataProcess2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataProcess2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataProcess2_Flush(This)	\
    ( (This)->lpVtbl -> Flush(This) )

#define IXCLRDataProcess2_StartEnumTasks(This,handle)	\
    ( (This)->lpVtbl -> StartEnumTasks(This,handle) )

#define IXCLRDataProcess2_EnumTask(This,handle,task)	\
    ( (This)->lpVtbl -> EnumTask(This,handle,task) )

#define IXCLRDataProcess2_EndEnumTasks(This,handle)	\
    ( (This)->lpVtbl -> EndEnumTasks(This,handle) )

#define IXCLRDataProcess2_GetTaskByOSThreadID(This,osThreadID,task)	\
    ( (This)->lpVtbl -> GetTaskByOSThreadID(This,osThreadID,task) )

#define IXCLRDataProcess2_GetTaskByUniqueID(This,taskID,task)	\
    ( (This)->lpVtbl -> GetTaskByUniqueID(This,taskID,task) )

#define IXCLRDataProcess2_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataProcess2_IsSameObject(This,process)	\
    ( (This)->lpVtbl -> IsSameObject(This,process) )

#define IXCLRDataProcess2_GetManagedObject(This,value)	\
    ( (This)->lpVtbl -> GetManagedObject(This,value) )

#define IXCLRDataProcess2_GetDesiredExecutionState(This,state)	\
    ( (This)->lpVtbl -> GetDesiredExecutionState(This,state) )

#define IXCLRDataProcess2_SetDesiredExecutionState(This,state)	\
    ( (This)->lpVtbl -> SetDesiredExecutionState(This,state) )

#define IXCLRDataProcess2_GetAddressType(This,address,type)	\
    ( (This)->lpVtbl -> GetAddressType(This,address,type) )

#define IXCLRDataProcess2_GetRuntimeNameByAddress(This,address,flags,bufLen,nameLen,nameBuf,displacement)	\
    ( (This)->lpVtbl -> GetRuntimeNameByAddress(This,address,flags,bufLen,nameLen,nameBuf,displacement) )

#define IXCLRDataProcess2_StartEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> StartEnumAppDomains(This,handle) )

#define IXCLRDataProcess2_EnumAppDomain(This,handle,appDomain)	\
    ( (This)->lpVtbl -> EnumAppDomain(This,handle,appDomain) )

#define IXCLRDataProcess2_EndEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> EndEnumAppDomains(This,handle) )

#define IXCLRDataProcess2_GetAppDomainByUniqueID(This,id,appDomain)	\
    ( (This)->lpVtbl -> GetAppDomainByUniqueID(This,id,appDomain) )

#define IXCLRDataProcess2_StartEnumAssemblies(This,handle)	\
    ( (This)->lpVtbl -> StartEnumAssemblies(This,handle) )

#define IXCLRDataProcess2_EnumAssembly(This,handle,assembly)	\
    ( (This)->lpVtbl -> EnumAssembly(This,handle,assembly) )

#define IXCLRDataProcess2_EndEnumAssemblies(This,handle)	\
    ( (This)->lpVtbl -> EndEnumAssemblies(This,handle) )

#define IXCLRDataProcess2_StartEnumModules(This,handle)	\
    ( (This)->lpVtbl -> StartEnumModules(This,handle) )

#define IXCLRDataProcess2_EnumModule(This,handle,mod)	\
    ( (This)->lpVtbl -> EnumModule(This,handle,mod) )

#define IXCLRDataProcess2_EndEnumModules(This,handle)	\
    ( (This)->lpVtbl -> EndEnumModules(This,handle) )

#define IXCLRDataProcess2_GetModuleByAddress(This,address,mod)	\
    ( (This)->lpVtbl -> GetModuleByAddress(This,address,mod) )

#define IXCLRDataProcess2_StartEnumMethodInstancesByAddress(This,address,appDomain,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodInstancesByAddress(This,address,appDomain,handle) )

#define IXCLRDataProcess2_EnumMethodInstanceByAddress(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodInstanceByAddress(This,handle,method) )

#define IXCLRDataProcess2_EndEnumMethodInstancesByAddress(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodInstancesByAddress(This,handle) )

#define IXCLRDataProcess2_GetDataByAddress(This,address,flags,appDomain,tlsTask,bufLen,nameLen,nameBuf,value,displacement)	\
    ( (This)->lpVtbl -> GetDataByAddress(This,address,flags,appDomain,tlsTask,bufLen,nameLen,nameBuf,value,displacement) )

#define IXCLRDataProcess2_GetExceptionStateByExceptionRecord(This,record,exState)	\
    ( (This)->lpVtbl -> GetExceptionStateByExceptionRecord(This,record,exState) )

#define IXCLRDataProcess2_TranslateExceptionRecordToNotification(This,record,notify)	\
    ( (This)->lpVtbl -> TranslateExceptionRecordToNotification(This,record,notify) )

#define IXCLRDataProcess2_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataProcess2_CreateMemoryValue(This,appDomain,tlsTask,type,addr,value)	\
    ( (This)->lpVtbl -> CreateMemoryValue(This,appDomain,tlsTask,type,addr,value) )

#define IXCLRDataProcess2_SetAllTypeNotifications(This,mod,flags)	\
    ( (This)->lpVtbl -> SetAllTypeNotifications(This,mod,flags) )

#define IXCLRDataProcess2_SetAllCodeNotifications(This,mod,flags)	\
    ( (This)->lpVtbl -> SetAllCodeNotifications(This,mod,flags) )

#define IXCLRDataProcess2_GetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags)	\
    ( (This)->lpVtbl -> GetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags) )

#define IXCLRDataProcess2_SetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags)	\
    ( (This)->lpVtbl -> SetTypeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags) )

#define IXCLRDataProcess2_GetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags)	\
    ( (This)->lpVtbl -> GetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags) )

#define IXCLRDataProcess2_SetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags)	\
    ( (This)->lpVtbl -> SetCodeNotifications(This,numTokens,mods,singleMod,tokens,flags,singleFlags) )

#define IXCLRDataProcess2_GetOtherNotificationFlags(This,flags)	\
    ( (This)->lpVtbl -> GetOtherNotificationFlags(This,flags) )

#define IXCLRDataProcess2_SetOtherNotificationFlags(This,flags)	\
    ( (This)->lpVtbl -> SetOtherNotificationFlags(This,flags) )

#define IXCLRDataProcess2_StartEnumMethodDefinitionsByAddress(This,address,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodDefinitionsByAddress(This,address,handle) )

#define IXCLRDataProcess2_EnumMethodDefinitionByAddress(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodDefinitionByAddress(This,handle,method) )

#define IXCLRDataProcess2_EndEnumMethodDefinitionsByAddress(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodDefinitionsByAddress(This,handle) )

#define IXCLRDataProcess2_FollowStub(This,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags)	\
    ( (This)->lpVtbl -> FollowStub(This,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags) )

#define IXCLRDataProcess2_FollowStub2(This,task,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags)	\
    ( (This)->lpVtbl -> FollowStub2(This,task,inFlags,inAddr,inBuffer,outAddr,outBuffer,outFlags) )

#define IXCLRDataProcess2_DumpNativeImage(This,loadedBase,name,display,libSupport,dis)	\
    ( (This)->lpVtbl -> DumpNativeImage(This,loadedBase,name,display,libSupport,dis) )

#define IXCLRDataProcess2_GetGcNotification(This,gcEvtArgs)	\
    ( (This)->lpVtbl -> GetGcNotification(This,gcEvtArgs) )

#define IXCLRDataProcess2_SetGcNotification(This,gcEvtArgs)	\
    ( (This)->lpVtbl -> SetGcNotification(This,gcEvtArgs) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataProcess2_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0006 */
/* [local] */

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0006_0001
    {
        CLRDATA_DOMAIN_DEFAULT	= 0
    } 	CLRDataAppDomainFlag;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0006_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0006_v0_0_s_ifspec;

#ifndef __IXCLRDataAppDomain_INTERFACE_DEFINED__
#define __IXCLRDataAppDomain_INTERFACE_DEFINED__

/* interface IXCLRDataAppDomain */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataAppDomain;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("7CA04601-C702-4670-A63C-FA44F7DA7BD5")
    IXCLRDataAppDomain : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetProcess(
            /* [out] */ IXCLRDataProcess **process) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetUniqueID(
            /* [out] */ ULONG64 *id) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataAppDomain *appDomain) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetManagedObject(
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataAppDomainVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataAppDomain * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetProcess )(
            IXCLRDataAppDomain * This,
            /* [out] */ IXCLRDataProcess **process);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataAppDomain * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetUniqueID )(
            IXCLRDataAppDomain * This,
            /* [out] */ ULONG64 *id);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataAppDomain * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataAppDomain * This,
            /* [in] */ IXCLRDataAppDomain *appDomain);

        HRESULT ( STDMETHODCALLTYPE *GetManagedObject )(
            IXCLRDataAppDomain * This,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataAppDomain * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        END_INTERFACE
    } IXCLRDataAppDomainVtbl;

    interface IXCLRDataAppDomain
    {
        CONST_VTBL struct IXCLRDataAppDomainVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataAppDomain_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataAppDomain_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataAppDomain_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataAppDomain_GetProcess(This,process)	\
    ( (This)->lpVtbl -> GetProcess(This,process) )

#define IXCLRDataAppDomain_GetName(This,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetName(This,bufLen,nameLen,name) )

#define IXCLRDataAppDomain_GetUniqueID(This,id)	\
    ( (This)->lpVtbl -> GetUniqueID(This,id) )

#define IXCLRDataAppDomain_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataAppDomain_IsSameObject(This,appDomain)	\
    ( (This)->lpVtbl -> IsSameObject(This,appDomain) )

#define IXCLRDataAppDomain_GetManagedObject(This,value)	\
    ( (This)->lpVtbl -> GetManagedObject(This,value) )

#define IXCLRDataAppDomain_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataAppDomain_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0007 */
/* [local] */

#pragma warning(pop)
typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0007_0001
    {
        CLRDATA_ASSEMBLY_DEFAULT	= 0
    } 	CLRDataAssemblyFlag;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0007_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0007_v0_0_s_ifspec;

#ifndef __IXCLRDataAssembly_INTERFACE_DEFINED__
#define __IXCLRDataAssembly_INTERFACE_DEFINED__

/* interface IXCLRDataAssembly */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataAssembly;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("2FA17588-43C2-46ab-9B51-C8F01E39C9AC")
    IXCLRDataAssembly : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE StartEnumModules(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumModule(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumModules(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFileName(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataAssembly *assembly) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumAppDomains(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumAppDomain(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAppDomain **appDomain) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumAppDomains(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetDisplayName(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataAssemblyVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataAssembly * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *StartEnumModules )(
            IXCLRDataAssembly * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumModule )(
            IXCLRDataAssembly * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *EndEnumModules )(
            IXCLRDataAssembly * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataAssembly * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetFileName )(
            IXCLRDataAssembly * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataAssembly * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataAssembly * This,
            /* [in] */ IXCLRDataAssembly *assembly);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataAssembly * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *StartEnumAppDomains )(
            IXCLRDataAssembly * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumAppDomain )(
            IXCLRDataAssembly * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *EndEnumAppDomains )(
            IXCLRDataAssembly * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetDisplayName )(
            IXCLRDataAssembly * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        END_INTERFACE
    } IXCLRDataAssemblyVtbl;

    interface IXCLRDataAssembly
    {
        CONST_VTBL struct IXCLRDataAssemblyVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataAssembly_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataAssembly_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataAssembly_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataAssembly_StartEnumModules(This,handle)	\
    ( (This)->lpVtbl -> StartEnumModules(This,handle) )

#define IXCLRDataAssembly_EnumModule(This,handle,mod)	\
    ( (This)->lpVtbl -> EnumModule(This,handle,mod) )

#define IXCLRDataAssembly_EndEnumModules(This,handle)	\
    ( (This)->lpVtbl -> EndEnumModules(This,handle) )

#define IXCLRDataAssembly_GetName(This,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetName(This,bufLen,nameLen,name) )

#define IXCLRDataAssembly_GetFileName(This,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetFileName(This,bufLen,nameLen,name) )

#define IXCLRDataAssembly_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataAssembly_IsSameObject(This,assembly)	\
    ( (This)->lpVtbl -> IsSameObject(This,assembly) )

#define IXCLRDataAssembly_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataAssembly_StartEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> StartEnumAppDomains(This,handle) )

#define IXCLRDataAssembly_EnumAppDomain(This,handle,appDomain)	\
    ( (This)->lpVtbl -> EnumAppDomain(This,handle,appDomain) )

#define IXCLRDataAssembly_EndEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> EndEnumAppDomains(This,handle) )

#define IXCLRDataAssembly_GetDisplayName(This,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetDisplayName(This,bufLen,nameLen,name) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataAssembly_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0008 */
/* [local] */

#pragma warning(pop)
typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0008_0001
    {
        CLRDATA_MODULE_DEFAULT	= 0,
        CLRDATA_MODULE_IS_DYNAMIC	= 0x1,
        CLRDATA_MODULE_IS_MEMORY_STREAM	= 0x2
    } 	CLRDataModuleFlag;

typedef /* [public][public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0008_0002
    {
        CLRDATA_MODULE_PE_FILE	= 0,
        CLRDATA_MODULE_PREJIT_FILE	= ( CLRDATA_MODULE_PE_FILE + 1 ) ,
        CLRDATA_MODULE_MEMORY_STREAM	= ( CLRDATA_MODULE_PREJIT_FILE + 1 ) ,
        CLRDATA_MODULE_OTHER	= ( CLRDATA_MODULE_MEMORY_STREAM + 1 )
    } 	CLRDataModuleExtentType;

typedef /* [public][public] */ struct __MIDL___MIDL_itf_xclrdata_0000_0008_0003
    {
    CLRDATA_ADDRESS base;
    ULONG32 length;
    CLRDataModuleExtentType type;
    } 	CLRDATA_MODULE_EXTENT;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0008_0004
    {
        CLRDATA_TYPENOTIFY_NONE	= 0,
        CLRDATA_TYPENOTIFY_LOADED	= 0x1,
        CLRDATA_TYPENOTIFY_UNLOADED	= 0x2
    } 	CLRDataTypeNotification;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0008_0005
    {
        CLRDATA_METHNOTIFY_NONE	= 0,
        CLRDATA_METHNOTIFY_GENERATED	= 0x1,
        CLRDATA_METHNOTIFY_DISCARDED	= 0x2
    } 	CLRDataMethodCodeNotification;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0008_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0008_v0_0_s_ifspec;

#ifndef __IXCLRDataModule_INTERFACE_DEFINED__
#define __IXCLRDataModule_INTERFACE_DEFINED__

/* interface IXCLRDataModule */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataModule;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("88E32849-0A0A-4cb0-9022-7CD2E9E139E2")
    IXCLRDataModule : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE StartEnumAssemblies(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumAssembly(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAssembly **assembly) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumAssemblies(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumTypeDefinitions(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumTypeDefinition(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumTypeDefinitions(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumTypeInstances(
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumTypeInstance(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeInstance **typeInstance) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumTypeInstances(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumTypeDefinitionsByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumTypeDefinitionByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **type) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumTypeDefinitionsByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumTypeInstancesByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumTypeInstanceByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeInstance **type) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumTypeInstancesByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTypeDefinitionByToken(
            /* [in] */ mdTypeDef token,
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodDefinitionsByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodDefinitionByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **method) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodDefinitionsByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodInstancesByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodInstanceByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **method) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodInstancesByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetMethodDefinitionByToken(
            /* [in] */ mdMethodDef token,
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumDataByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumDataByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumDataByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFileName(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataModule *mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumExtents(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumExtent(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ CLRDATA_MODULE_EXTENT *extent) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumExtents(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumAppDomains(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumAppDomain(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAppDomain **appDomain) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumAppDomains(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetVersionId(
            /* [out] */ GUID *vid) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataModuleVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataModule * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *StartEnumAssemblies )(
            IXCLRDataModule * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumAssembly )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAssembly **assembly);

        HRESULT ( STDMETHODCALLTYPE *EndEnumAssemblies )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumTypeDefinitions )(
            IXCLRDataModule * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumTypeDefinition )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition);

        HRESULT ( STDMETHODCALLTYPE *EndEnumTypeDefinitions )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumTypeInstances )(
            IXCLRDataModule * This,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumTypeInstance )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeInstance **typeInstance);

        HRESULT ( STDMETHODCALLTYPE *EndEnumTypeInstances )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumTypeDefinitionsByName )(
            IXCLRDataModule * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumTypeDefinitionByName )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **type);

        HRESULT ( STDMETHODCALLTYPE *EndEnumTypeDefinitionsByName )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumTypeInstancesByName )(
            IXCLRDataModule * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumTypeInstanceByName )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeInstance **type);

        HRESULT ( STDMETHODCALLTYPE *EndEnumTypeInstancesByName )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetTypeDefinitionByToken )(
            IXCLRDataModule * This,
            /* [in] */ mdTypeDef token,
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodDefinitionsByName )(
            IXCLRDataModule * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodDefinitionByName )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodDefinitionsByName )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodInstancesByName )(
            IXCLRDataModule * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodInstanceByName )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodInstancesByName )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetMethodDefinitionByToken )(
            IXCLRDataModule * This,
            /* [in] */ mdMethodDef token,
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition);

        HRESULT ( STDMETHODCALLTYPE *StartEnumDataByName )(
            IXCLRDataModule * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumDataByName )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *EndEnumDataByName )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataModule * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetFileName )(
            IXCLRDataModule * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataModule * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataModule * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *StartEnumExtents )(
            IXCLRDataModule * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumExtent )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ CLRDATA_MODULE_EXTENT *extent);

        HRESULT ( STDMETHODCALLTYPE *EndEnumExtents )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataModule * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *StartEnumAppDomains )(
            IXCLRDataModule * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumAppDomain )(
            IXCLRDataModule * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *EndEnumAppDomains )(
            IXCLRDataModule * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetVersionId )(
            IXCLRDataModule * This,
            /* [out] */ GUID *vid);

        END_INTERFACE
    } IXCLRDataModuleVtbl;

    interface IXCLRDataModule
    {
        CONST_VTBL struct IXCLRDataModuleVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataModule_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataModule_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataModule_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataModule_StartEnumAssemblies(This,handle)	\
    ( (This)->lpVtbl -> StartEnumAssemblies(This,handle) )

#define IXCLRDataModule_EnumAssembly(This,handle,assembly)	\
    ( (This)->lpVtbl -> EnumAssembly(This,handle,assembly) )

#define IXCLRDataModule_EndEnumAssemblies(This,handle)	\
    ( (This)->lpVtbl -> EndEnumAssemblies(This,handle) )

#define IXCLRDataModule_StartEnumTypeDefinitions(This,handle)	\
    ( (This)->lpVtbl -> StartEnumTypeDefinitions(This,handle) )

#define IXCLRDataModule_EnumTypeDefinition(This,handle,typeDefinition)	\
    ( (This)->lpVtbl -> EnumTypeDefinition(This,handle,typeDefinition) )

#define IXCLRDataModule_EndEnumTypeDefinitions(This,handle)	\
    ( (This)->lpVtbl -> EndEnumTypeDefinitions(This,handle) )

#define IXCLRDataModule_StartEnumTypeInstances(This,appDomain,handle)	\
    ( (This)->lpVtbl -> StartEnumTypeInstances(This,appDomain,handle) )

#define IXCLRDataModule_EnumTypeInstance(This,handle,typeInstance)	\
    ( (This)->lpVtbl -> EnumTypeInstance(This,handle,typeInstance) )

#define IXCLRDataModule_EndEnumTypeInstances(This,handle)	\
    ( (This)->lpVtbl -> EndEnumTypeInstances(This,handle) )

#define IXCLRDataModule_StartEnumTypeDefinitionsByName(This,name,flags,handle)	\
    ( (This)->lpVtbl -> StartEnumTypeDefinitionsByName(This,name,flags,handle) )

#define IXCLRDataModule_EnumTypeDefinitionByName(This,handle,type)	\
    ( (This)->lpVtbl -> EnumTypeDefinitionByName(This,handle,type) )

#define IXCLRDataModule_EndEnumTypeDefinitionsByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumTypeDefinitionsByName(This,handle) )

#define IXCLRDataModule_StartEnumTypeInstancesByName(This,name,flags,appDomain,handle)	\
    ( (This)->lpVtbl -> StartEnumTypeInstancesByName(This,name,flags,appDomain,handle) )

#define IXCLRDataModule_EnumTypeInstanceByName(This,handle,type)	\
    ( (This)->lpVtbl -> EnumTypeInstanceByName(This,handle,type) )

#define IXCLRDataModule_EndEnumTypeInstancesByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumTypeInstancesByName(This,handle) )

#define IXCLRDataModule_GetTypeDefinitionByToken(This,token,typeDefinition)	\
    ( (This)->lpVtbl -> GetTypeDefinitionByToken(This,token,typeDefinition) )

#define IXCLRDataModule_StartEnumMethodDefinitionsByName(This,name,flags,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodDefinitionsByName(This,name,flags,handle) )

#define IXCLRDataModule_EnumMethodDefinitionByName(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodDefinitionByName(This,handle,method) )

#define IXCLRDataModule_EndEnumMethodDefinitionsByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodDefinitionsByName(This,handle) )

#define IXCLRDataModule_StartEnumMethodInstancesByName(This,name,flags,appDomain,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodInstancesByName(This,name,flags,appDomain,handle) )

#define IXCLRDataModule_EnumMethodInstanceByName(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodInstanceByName(This,handle,method) )

#define IXCLRDataModule_EndEnumMethodInstancesByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodInstancesByName(This,handle) )

#define IXCLRDataModule_GetMethodDefinitionByToken(This,token,methodDefinition)	\
    ( (This)->lpVtbl -> GetMethodDefinitionByToken(This,token,methodDefinition) )

#define IXCLRDataModule_StartEnumDataByName(This,name,flags,appDomain,tlsTask,handle)	\
    ( (This)->lpVtbl -> StartEnumDataByName(This,name,flags,appDomain,tlsTask,handle) )

#define IXCLRDataModule_EnumDataByName(This,handle,value)	\
    ( (This)->lpVtbl -> EnumDataByName(This,handle,value) )

#define IXCLRDataModule_EndEnumDataByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumDataByName(This,handle) )

#define IXCLRDataModule_GetName(This,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetName(This,bufLen,nameLen,name) )

#define IXCLRDataModule_GetFileName(This,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetFileName(This,bufLen,nameLen,name) )

#define IXCLRDataModule_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataModule_IsSameObject(This,mod)	\
    ( (This)->lpVtbl -> IsSameObject(This,mod) )

#define IXCLRDataModule_StartEnumExtents(This,handle)	\
    ( (This)->lpVtbl -> StartEnumExtents(This,handle) )

#define IXCLRDataModule_EnumExtent(This,handle,extent)	\
    ( (This)->lpVtbl -> EnumExtent(This,handle,extent) )

#define IXCLRDataModule_EndEnumExtents(This,handle)	\
    ( (This)->lpVtbl -> EndEnumExtents(This,handle) )

#define IXCLRDataModule_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataModule_StartEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> StartEnumAppDomains(This,handle) )

#define IXCLRDataModule_EnumAppDomain(This,handle,appDomain)	\
    ( (This)->lpVtbl -> EnumAppDomain(This,handle,appDomain) )

#define IXCLRDataModule_EndEnumAppDomains(This,handle)	\
    ( (This)->lpVtbl -> EndEnumAppDomains(This,handle) )

#define IXCLRDataModule_GetVersionId(This,vid)	\
    ( (This)->lpVtbl -> GetVersionId(This,vid) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataModule_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0009 */
/* [local] */

#pragma warning(pop)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0009_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0009_v0_0_s_ifspec;

#ifndef __IXCLRDataModule2_INTERFACE_DEFINED__
#define __IXCLRDataModule2_INTERFACE_DEFINED__

/* interface IXCLRDataModule2 */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataModule2;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("34625881-7EB3-4524-817B-8DB9D064C760")
    IXCLRDataModule2 : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE SetJITCompilerFlags(
            /* [in] */ DWORD dwFlags) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataModule2Vtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataModule2 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *SetJITCompilerFlags )(
            IXCLRDataModule2 * This,
            /* [in] */ DWORD dwFlags);

        END_INTERFACE
    } IXCLRDataModule2Vtbl;

    interface IXCLRDataModule2
    {
        CONST_VTBL struct IXCLRDataModule2Vtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataModule2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataModule2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataModule2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataModule2_SetJITCompilerFlags(This,dwFlags)	\
    ( (This)->lpVtbl -> SetJITCompilerFlags(This,dwFlags) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataModule2_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0010 */
/* [local] */

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0010_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0010_v0_0_s_ifspec;

#ifndef __IXCLRDataTypeDefinition_INTERFACE_DEFINED__
#define __IXCLRDataTypeDefinition_INTERFACE_DEFINED__

/* interface IXCLRDataTypeDefinition */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataTypeDefinition;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("4675666C-C275-45b8-9F6C-AB165D5C1E09")
    IXCLRDataTypeDefinition : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetModule(
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodDefinitions(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodDefinition(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodDefinitions(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodDefinitionsByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodDefinitionByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **method) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodDefinitionsByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetMethodDefinitionByToken(
            /* [in] */ mdMethodDef token,
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumInstances(
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumInstance(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeInstance **instance) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumInstances(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTokenAndScope(
            /* [out] */ mdTypeDef *token,
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetCorElementType(
            /* [out] */ CorElementType *type) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataTypeDefinition *type) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetArrayRank(
            /* [out] */ ULONG32 *rank) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetBase(
            /* [out] */ IXCLRDataTypeDefinition **base) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumFields(
            /* [in] */ ULONG32 flags,
            /* [out] */ ULONG32 *numFields) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumFields(
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumField(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumFields(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumFieldsByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 nameFlags,
            /* [in] */ ULONG32 fieldFlags,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumFieldByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumFieldsByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFieldByToken(
            /* [in] */ mdFieldDef token,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTypeNotification(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetTypeNotification(
            /* [in] */ ULONG32 flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumField2(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumFieldByName2(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFieldByToken2(
            /* [in] */ IXCLRDataModule *tokenScope,
            /* [in] */ mdFieldDef token,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataTypeDefinitionVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetModule )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodDefinitions )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodDefinition )(
            IXCLRDataTypeDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodDefinitions )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodDefinitionsByName )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodDefinitionByName )(
            IXCLRDataTypeDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodDefinition **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodDefinitionsByName )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetMethodDefinitionByToken )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ mdMethodDef token,
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition);

        HRESULT ( STDMETHODCALLTYPE *StartEnumInstances )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumInstance )(
            IXCLRDataTypeDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeInstance **instance);

        HRESULT ( STDMETHODCALLTYPE *EndEnumInstances )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetTokenAndScope )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ mdTypeDef *token,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *GetCorElementType )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ CorElementType *type);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ IXCLRDataTypeDefinition *type);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *GetArrayRank )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ ULONG32 *rank);

        HRESULT ( STDMETHODCALLTYPE *GetBase )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ IXCLRDataTypeDefinition **base);

        HRESULT ( STDMETHODCALLTYPE *GetNumFields )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ ULONG32 flags,
            /* [out] */ ULONG32 *numFields);

        HRESULT ( STDMETHODCALLTYPE *StartEnumFields )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumField )(
            IXCLRDataTypeDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *EndEnumFields )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumFieldsByName )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 nameFlags,
            /* [in] */ ULONG32 fieldFlags,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumFieldByName )(
            IXCLRDataTypeDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *EndEnumFieldsByName )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetFieldByToken )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ mdFieldDef token,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *GetTypeNotification )(
            IXCLRDataTypeDefinition * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *SetTypeNotification )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *EnumField2 )(
            IXCLRDataTypeDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *EnumFieldByName2 )(
            IXCLRDataTypeDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *GetFieldByToken2 )(
            IXCLRDataTypeDefinition * This,
            /* [in] */ IXCLRDataModule *tokenScope,
            /* [in] */ mdFieldDef token,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataTypeDefinition **type,
            /* [out] */ ULONG32 *flags);

        END_INTERFACE
    } IXCLRDataTypeDefinitionVtbl;

    interface IXCLRDataTypeDefinition
    {
        CONST_VTBL struct IXCLRDataTypeDefinitionVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataTypeDefinition_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataTypeDefinition_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataTypeDefinition_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataTypeDefinition_GetModule(This,mod)	\
    ( (This)->lpVtbl -> GetModule(This,mod) )

#define IXCLRDataTypeDefinition_StartEnumMethodDefinitions(This,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodDefinitions(This,handle) )

#define IXCLRDataTypeDefinition_EnumMethodDefinition(This,handle,methodDefinition)	\
    ( (This)->lpVtbl -> EnumMethodDefinition(This,handle,methodDefinition) )

#define IXCLRDataTypeDefinition_EndEnumMethodDefinitions(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodDefinitions(This,handle) )

#define IXCLRDataTypeDefinition_StartEnumMethodDefinitionsByName(This,name,flags,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodDefinitionsByName(This,name,flags,handle) )

#define IXCLRDataTypeDefinition_EnumMethodDefinitionByName(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodDefinitionByName(This,handle,method) )

#define IXCLRDataTypeDefinition_EndEnumMethodDefinitionsByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodDefinitionsByName(This,handle) )

#define IXCLRDataTypeDefinition_GetMethodDefinitionByToken(This,token,methodDefinition)	\
    ( (This)->lpVtbl -> GetMethodDefinitionByToken(This,token,methodDefinition) )

#define IXCLRDataTypeDefinition_StartEnumInstances(This,appDomain,handle)	\
    ( (This)->lpVtbl -> StartEnumInstances(This,appDomain,handle) )

#define IXCLRDataTypeDefinition_EnumInstance(This,handle,instance)	\
    ( (This)->lpVtbl -> EnumInstance(This,handle,instance) )

#define IXCLRDataTypeDefinition_EndEnumInstances(This,handle)	\
    ( (This)->lpVtbl -> EndEnumInstances(This,handle) )

#define IXCLRDataTypeDefinition_GetName(This,flags,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetName(This,flags,bufLen,nameLen,nameBuf) )

#define IXCLRDataTypeDefinition_GetTokenAndScope(This,token,mod)	\
    ( (This)->lpVtbl -> GetTokenAndScope(This,token,mod) )

#define IXCLRDataTypeDefinition_GetCorElementType(This,type)	\
    ( (This)->lpVtbl -> GetCorElementType(This,type) )

#define IXCLRDataTypeDefinition_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataTypeDefinition_IsSameObject(This,type)	\
    ( (This)->lpVtbl -> IsSameObject(This,type) )

#define IXCLRDataTypeDefinition_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataTypeDefinition_GetArrayRank(This,rank)	\
    ( (This)->lpVtbl -> GetArrayRank(This,rank) )

#define IXCLRDataTypeDefinition_GetBase(This,base)	\
    ( (This)->lpVtbl -> GetBase(This,base) )

#define IXCLRDataTypeDefinition_GetNumFields(This,flags,numFields)	\
    ( (This)->lpVtbl -> GetNumFields(This,flags,numFields) )

#define IXCLRDataTypeDefinition_StartEnumFields(This,flags,handle)	\
    ( (This)->lpVtbl -> StartEnumFields(This,flags,handle) )

#define IXCLRDataTypeDefinition_EnumField(This,handle,nameBufLen,nameLen,nameBuf,type,flags,token)	\
    ( (This)->lpVtbl -> EnumField(This,handle,nameBufLen,nameLen,nameBuf,type,flags,token) )

#define IXCLRDataTypeDefinition_EndEnumFields(This,handle)	\
    ( (This)->lpVtbl -> EndEnumFields(This,handle) )

#define IXCLRDataTypeDefinition_StartEnumFieldsByName(This,name,nameFlags,fieldFlags,handle)	\
    ( (This)->lpVtbl -> StartEnumFieldsByName(This,name,nameFlags,fieldFlags,handle) )

#define IXCLRDataTypeDefinition_EnumFieldByName(This,handle,type,flags,token)	\
    ( (This)->lpVtbl -> EnumFieldByName(This,handle,type,flags,token) )

#define IXCLRDataTypeDefinition_EndEnumFieldsByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumFieldsByName(This,handle) )

#define IXCLRDataTypeDefinition_GetFieldByToken(This,token,nameBufLen,nameLen,nameBuf,type,flags)	\
    ( (This)->lpVtbl -> GetFieldByToken(This,token,nameBufLen,nameLen,nameBuf,type,flags) )

#define IXCLRDataTypeDefinition_GetTypeNotification(This,flags)	\
    ( (This)->lpVtbl -> GetTypeNotification(This,flags) )

#define IXCLRDataTypeDefinition_SetTypeNotification(This,flags)	\
    ( (This)->lpVtbl -> SetTypeNotification(This,flags) )

#define IXCLRDataTypeDefinition_EnumField2(This,handle,nameBufLen,nameLen,nameBuf,type,flags,tokenScope,token)	\
    ( (This)->lpVtbl -> EnumField2(This,handle,nameBufLen,nameLen,nameBuf,type,flags,tokenScope,token) )

#define IXCLRDataTypeDefinition_EnumFieldByName2(This,handle,type,flags,tokenScope,token)	\
    ( (This)->lpVtbl -> EnumFieldByName2(This,handle,type,flags,tokenScope,token) )

#define IXCLRDataTypeDefinition_GetFieldByToken2(This,tokenScope,token,nameBufLen,nameLen,nameBuf,type,flags)	\
    ( (This)->lpVtbl -> GetFieldByToken2(This,tokenScope,token,nameBufLen,nameLen,nameBuf,type,flags) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataTypeDefinition_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0011 */
/* [local] */

#pragma warning(pop)
#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0011_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0011_v0_0_s_ifspec;

#ifndef __IXCLRDataTypeInstance_INTERFACE_DEFINED__
#define __IXCLRDataTypeInstance_INTERFACE_DEFINED__

/* interface IXCLRDataTypeInstance */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataTypeInstance;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("4D078D91-9CB3-4b0d-97AC-28C8A5A82597")
    IXCLRDataTypeInstance : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodInstances(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodInstance(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **methodInstance) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodInstances(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumMethodInstancesByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumMethodInstanceByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **method) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumMethodInstancesByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumStaticFields(
            /* [out] */ ULONG32 *numFields) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetStaticFieldByIndex(
            /* [in] */ ULONG32 index,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumStaticFieldsByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumStaticFieldByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumStaticFieldsByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumTypeArguments(
            /* [out] */ ULONG32 *numTypeArgs) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTypeArgumentByIndex(
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataTypeInstance **typeArg) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetModule(
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetDefinition(
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataTypeInstance *type) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumStaticFields2(
            /* [in] */ ULONG32 flags,
            /* [out] */ ULONG32 *numFields) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumStaticFields(
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumStaticField(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumStaticFields(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumStaticFieldsByName2(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 nameFlags,
            /* [in] */ ULONG32 fieldFlags,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumStaticFieldByName2(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumStaticFieldsByName2(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetStaticFieldByToken(
            /* [in] */ mdFieldDef token,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetBase(
            /* [out] */ IXCLRDataTypeInstance **base) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumStaticField2(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumStaticFieldByName3(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetStaticFieldByToken2(
            /* [in] */ IXCLRDataModule *tokenScope,
            /* [in] */ mdFieldDef token,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataTypeInstanceVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataTypeInstance * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodInstances )(
            IXCLRDataTypeInstance * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodInstance )(
            IXCLRDataTypeInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **methodInstance);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodInstances )(
            IXCLRDataTypeInstance * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumMethodInstancesByName )(
            IXCLRDataTypeInstance * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumMethodInstanceByName )(
            IXCLRDataTypeInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **method);

        HRESULT ( STDMETHODCALLTYPE *EndEnumMethodInstancesByName )(
            IXCLRDataTypeInstance * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetNumStaticFields )(
            IXCLRDataTypeInstance * This,
            /* [out] */ ULONG32 *numFields);

        HRESULT ( STDMETHODCALLTYPE *GetStaticFieldByIndex )(
            IXCLRDataTypeInstance * This,
            /* [in] */ ULONG32 index,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *StartEnumStaticFieldsByName )(
            IXCLRDataTypeInstance * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumStaticFieldByName )(
            IXCLRDataTypeInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *EndEnumStaticFieldsByName )(
            IXCLRDataTypeInstance * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetNumTypeArguments )(
            IXCLRDataTypeInstance * This,
            /* [out] */ ULONG32 *numTypeArgs);

        HRESULT ( STDMETHODCALLTYPE *GetTypeArgumentByIndex )(
            IXCLRDataTypeInstance * This,
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataTypeInstance **typeArg);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataTypeInstance * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetModule )(
            IXCLRDataTypeInstance * This,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *GetDefinition )(
            IXCLRDataTypeInstance * This,
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataTypeInstance * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataTypeInstance * This,
            /* [in] */ IXCLRDataTypeInstance *type);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataTypeInstance * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *GetNumStaticFields2 )(
            IXCLRDataTypeInstance * This,
            /* [in] */ ULONG32 flags,
            /* [out] */ ULONG32 *numFields);

        HRESULT ( STDMETHODCALLTYPE *StartEnumStaticFields )(
            IXCLRDataTypeInstance * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumStaticField )(
            IXCLRDataTypeInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *EndEnumStaticFields )(
            IXCLRDataTypeInstance * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumStaticFieldsByName2 )(
            IXCLRDataTypeInstance * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 nameFlags,
            /* [in] */ ULONG32 fieldFlags,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumStaticFieldByName2 )(
            IXCLRDataTypeInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *EndEnumStaticFieldsByName2 )(
            IXCLRDataTypeInstance * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetStaticFieldByToken )(
            IXCLRDataTypeInstance * This,
            /* [in] */ mdFieldDef token,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetBase )(
            IXCLRDataTypeInstance * This,
            /* [out] */ IXCLRDataTypeInstance **base);

        HRESULT ( STDMETHODCALLTYPE *EnumStaticField2 )(
            IXCLRDataTypeInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *EnumStaticFieldByName3 )(
            IXCLRDataTypeInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **value,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *GetStaticFieldByToken2 )(
            IXCLRDataTypeInstance * This,
            /* [in] */ IXCLRDataModule *tokenScope,
            /* [in] */ mdFieldDef token,
            /* [in] */ IXCLRDataTask *tlsTask,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        END_INTERFACE
    } IXCLRDataTypeInstanceVtbl;

    interface IXCLRDataTypeInstance
    {
        CONST_VTBL struct IXCLRDataTypeInstanceVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataTypeInstance_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataTypeInstance_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataTypeInstance_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataTypeInstance_StartEnumMethodInstances(This,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodInstances(This,handle) )

#define IXCLRDataTypeInstance_EnumMethodInstance(This,handle,methodInstance)	\
    ( (This)->lpVtbl -> EnumMethodInstance(This,handle,methodInstance) )

#define IXCLRDataTypeInstance_EndEnumMethodInstances(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodInstances(This,handle) )

#define IXCLRDataTypeInstance_StartEnumMethodInstancesByName(This,name,flags,handle)	\
    ( (This)->lpVtbl -> StartEnumMethodInstancesByName(This,name,flags,handle) )

#define IXCLRDataTypeInstance_EnumMethodInstanceByName(This,handle,method)	\
    ( (This)->lpVtbl -> EnumMethodInstanceByName(This,handle,method) )

#define IXCLRDataTypeInstance_EndEnumMethodInstancesByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumMethodInstancesByName(This,handle) )

#define IXCLRDataTypeInstance_GetNumStaticFields(This,numFields)	\
    ( (This)->lpVtbl -> GetNumStaticFields(This,numFields) )

#define IXCLRDataTypeInstance_GetStaticFieldByIndex(This,index,tlsTask,field,bufLen,nameLen,nameBuf,token)	\
    ( (This)->lpVtbl -> GetStaticFieldByIndex(This,index,tlsTask,field,bufLen,nameLen,nameBuf,token) )

#define IXCLRDataTypeInstance_StartEnumStaticFieldsByName(This,name,flags,tlsTask,handle)	\
    ( (This)->lpVtbl -> StartEnumStaticFieldsByName(This,name,flags,tlsTask,handle) )

#define IXCLRDataTypeInstance_EnumStaticFieldByName(This,handle,value)	\
    ( (This)->lpVtbl -> EnumStaticFieldByName(This,handle,value) )

#define IXCLRDataTypeInstance_EndEnumStaticFieldsByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumStaticFieldsByName(This,handle) )

#define IXCLRDataTypeInstance_GetNumTypeArguments(This,numTypeArgs)	\
    ( (This)->lpVtbl -> GetNumTypeArguments(This,numTypeArgs) )

#define IXCLRDataTypeInstance_GetTypeArgumentByIndex(This,index,typeArg)	\
    ( (This)->lpVtbl -> GetTypeArgumentByIndex(This,index,typeArg) )

#define IXCLRDataTypeInstance_GetName(This,flags,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetName(This,flags,bufLen,nameLen,nameBuf) )

#define IXCLRDataTypeInstance_GetModule(This,mod)	\
    ( (This)->lpVtbl -> GetModule(This,mod) )

#define IXCLRDataTypeInstance_GetDefinition(This,typeDefinition)	\
    ( (This)->lpVtbl -> GetDefinition(This,typeDefinition) )

#define IXCLRDataTypeInstance_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataTypeInstance_IsSameObject(This,type)	\
    ( (This)->lpVtbl -> IsSameObject(This,type) )

#define IXCLRDataTypeInstance_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataTypeInstance_GetNumStaticFields2(This,flags,numFields)	\
    ( (This)->lpVtbl -> GetNumStaticFields2(This,flags,numFields) )

#define IXCLRDataTypeInstance_StartEnumStaticFields(This,flags,tlsTask,handle)	\
    ( (This)->lpVtbl -> StartEnumStaticFields(This,flags,tlsTask,handle) )

#define IXCLRDataTypeInstance_EnumStaticField(This,handle,value)	\
    ( (This)->lpVtbl -> EnumStaticField(This,handle,value) )

#define IXCLRDataTypeInstance_EndEnumStaticFields(This,handle)	\
    ( (This)->lpVtbl -> EndEnumStaticFields(This,handle) )

#define IXCLRDataTypeInstance_StartEnumStaticFieldsByName2(This,name,nameFlags,fieldFlags,tlsTask,handle)	\
    ( (This)->lpVtbl -> StartEnumStaticFieldsByName2(This,name,nameFlags,fieldFlags,tlsTask,handle) )

#define IXCLRDataTypeInstance_EnumStaticFieldByName2(This,handle,value)	\
    ( (This)->lpVtbl -> EnumStaticFieldByName2(This,handle,value) )

#define IXCLRDataTypeInstance_EndEnumStaticFieldsByName2(This,handle)	\
    ( (This)->lpVtbl -> EndEnumStaticFieldsByName2(This,handle) )

#define IXCLRDataTypeInstance_GetStaticFieldByToken(This,token,tlsTask,field,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetStaticFieldByToken(This,token,tlsTask,field,bufLen,nameLen,nameBuf) )

#define IXCLRDataTypeInstance_GetBase(This,base)	\
    ( (This)->lpVtbl -> GetBase(This,base) )

#define IXCLRDataTypeInstance_EnumStaticField2(This,handle,value,bufLen,nameLen,nameBuf,tokenScope,token)	\
    ( (This)->lpVtbl -> EnumStaticField2(This,handle,value,bufLen,nameLen,nameBuf,tokenScope,token) )

#define IXCLRDataTypeInstance_EnumStaticFieldByName3(This,handle,value,tokenScope,token)	\
    ( (This)->lpVtbl -> EnumStaticFieldByName3(This,handle,value,tokenScope,token) )

#define IXCLRDataTypeInstance_GetStaticFieldByToken2(This,tokenScope,token,tlsTask,field,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetStaticFieldByToken2(This,tokenScope,token,tlsTask,field,bufLen,nameLen,nameBuf) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataTypeInstance_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0012 */
/* [local] */

#pragma warning(pop)
typedef /* [public][public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0012_0001
    {
        CLRDATA_SOURCE_TYPE_INVALID	= 0
    } 	CLRDataSourceType;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0012_0002
    {
        CLRDATA_IL_OFFSET_NO_MAPPING	= -1,
        CLRDATA_IL_OFFSET_PROLOG	= -2,
        CLRDATA_IL_OFFSET_EPILOG	= -3
    } 	CLRDATA_IL_OFFSET_MARKER;

typedef /* [public][public] */ struct __MIDL___MIDL_itf_xclrdata_0000_0012_0003
    {
    ULONG32 ilOffset;
    CLRDATA_ADDRESS startAddress;
    CLRDATA_ADDRESS endAddress;
    CLRDataSourceType type;
    } 	CLRDATA_IL_ADDRESS_MAP;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0012_0004
    {
        CLRDATA_METHOD_DEFAULT	= 0,
        CLRDATA_METHOD_HAS_THIS	= 0x1
    } 	CLRDataMethodFlag;

typedef /* [public][public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0012_0005
    {
        CLRDATA_METHDEF_IL	= 0
    } 	CLRDataMethodDefinitionExtentType;

typedef /* [public][public] */ struct __MIDL___MIDL_itf_xclrdata_0000_0012_0006
    {
    CLRDATA_ADDRESS startAddress;
    CLRDATA_ADDRESS endAddress;
    ULONG32 enCVersion;
    CLRDataMethodDefinitionExtentType type;
    } 	CLRDATA_METHDEF_EXTENT;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0012_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0012_v0_0_s_ifspec;

#ifndef __IXCLRDataMethodDefinition_INTERFACE_DEFINED__
#define __IXCLRDataMethodDefinition_INTERFACE_DEFINED__

/* interface IXCLRDataMethodDefinition */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataMethodDefinition;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("AAF60008-FB2C-420b-8FB1-42D244A54A97")
    IXCLRDataMethodDefinition : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetTypeDefinition(
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumInstances(
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumInstance(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **instance) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumInstances(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTokenAndScope(
            /* [out] */ mdMethodDef *token,
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataMethodDefinition *method) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetLatestEnCVersion(
            /* [out] */ ULONG32 *version) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumExtents(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumExtent(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ CLRDATA_METHDEF_EXTENT *extent) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumExtents(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetCodeNotification(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetCodeNotification(
            /* [in] */ ULONG32 flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetRepresentativeEntryAddress(
            /* [out] */ CLRDATA_ADDRESS *addr) = 0;

        virtual HRESULT STDMETHODCALLTYPE HasClassOrMethodInstantiation(
            /* [out] */ BOOL *bGeneric) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataMethodDefinitionVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetTypeDefinition )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ IXCLRDataTypeDefinition **typeDefinition);

        HRESULT ( STDMETHODCALLTYPE *StartEnumInstances )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ IXCLRDataAppDomain *appDomain,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumInstance )(
            IXCLRDataMethodDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataMethodInstance **instance);

        HRESULT ( STDMETHODCALLTYPE *EndEnumInstances )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetTokenAndScope )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ mdMethodDef *token,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ IXCLRDataMethodDefinition *method);

        HRESULT ( STDMETHODCALLTYPE *GetLatestEnCVersion )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ ULONG32 *version);

        HRESULT ( STDMETHODCALLTYPE *StartEnumExtents )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumExtent )(
            IXCLRDataMethodDefinition * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ CLRDATA_METHDEF_EXTENT *extent);

        HRESULT ( STDMETHODCALLTYPE *EndEnumExtents )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetCodeNotification )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *SetCodeNotification )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ ULONG32 flags);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataMethodDefinition * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *GetRepresentativeEntryAddress )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ CLRDATA_ADDRESS *addr);

        HRESULT ( STDMETHODCALLTYPE *HasClassOrMethodInstantiation )(
            IXCLRDataMethodDefinition * This,
            /* [out] */ BOOL *bGeneric);

        END_INTERFACE
    } IXCLRDataMethodDefinitionVtbl;

    interface IXCLRDataMethodDefinition
    {
        CONST_VTBL struct IXCLRDataMethodDefinitionVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataMethodDefinition_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataMethodDefinition_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataMethodDefinition_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataMethodDefinition_GetTypeDefinition(This,typeDefinition)	\
    ( (This)->lpVtbl -> GetTypeDefinition(This,typeDefinition) )

#define IXCLRDataMethodDefinition_StartEnumInstances(This,appDomain,handle)	\
    ( (This)->lpVtbl -> StartEnumInstances(This,appDomain,handle) )

#define IXCLRDataMethodDefinition_EnumInstance(This,handle,instance)	\
    ( (This)->lpVtbl -> EnumInstance(This,handle,instance) )

#define IXCLRDataMethodDefinition_EndEnumInstances(This,handle)	\
    ( (This)->lpVtbl -> EndEnumInstances(This,handle) )

#define IXCLRDataMethodDefinition_GetName(This,flags,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetName(This,flags,bufLen,nameLen,name) )

#define IXCLRDataMethodDefinition_GetTokenAndScope(This,token,mod)	\
    ( (This)->lpVtbl -> GetTokenAndScope(This,token,mod) )

#define IXCLRDataMethodDefinition_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataMethodDefinition_IsSameObject(This,method)	\
    ( (This)->lpVtbl -> IsSameObject(This,method) )

#define IXCLRDataMethodDefinition_GetLatestEnCVersion(This,version)	\
    ( (This)->lpVtbl -> GetLatestEnCVersion(This,version) )

#define IXCLRDataMethodDefinition_StartEnumExtents(This,handle)	\
    ( (This)->lpVtbl -> StartEnumExtents(This,handle) )

#define IXCLRDataMethodDefinition_EnumExtent(This,handle,extent)	\
    ( (This)->lpVtbl -> EnumExtent(This,handle,extent) )

#define IXCLRDataMethodDefinition_EndEnumExtents(This,handle)	\
    ( (This)->lpVtbl -> EndEnumExtents(This,handle) )

#define IXCLRDataMethodDefinition_GetCodeNotification(This,flags)	\
    ( (This)->lpVtbl -> GetCodeNotification(This,flags) )

#define IXCLRDataMethodDefinition_SetCodeNotification(This,flags)	\
    ( (This)->lpVtbl -> SetCodeNotification(This,flags) )

#define IXCLRDataMethodDefinition_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataMethodDefinition_GetRepresentativeEntryAddress(This,addr)	\
    ( (This)->lpVtbl -> GetRepresentativeEntryAddress(This,addr) )

#define IXCLRDataMethodDefinition_HasClassOrMethodInstantiation(This,bGeneric)	\
    ( (This)->lpVtbl -> HasClassOrMethodInstantiation(This,bGeneric) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataMethodDefinition_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0013 */
/* [local] */

#pragma warning(pop)
#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0013_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0013_v0_0_s_ifspec;

#ifndef __IXCLRDataMethodInstance_INTERFACE_DEFINED__
#define __IXCLRDataMethodInstance_INTERFACE_DEFINED__

/* interface IXCLRDataMethodInstance */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataMethodInstance;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("ECD73800-22CA-4b0d-AB55-E9BA7E6318A5")
    IXCLRDataMethodInstance : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetTypeInstance(
            /* [out] */ IXCLRDataTypeInstance **typeInstance) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetDefinition(
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTokenAndScope(
            /* [out] */ mdMethodDef *token,
            /* [out] */ IXCLRDataModule **mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataMethodInstance *method) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetEnCVersion(
            /* [out] */ ULONG32 *version) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumTypeArguments(
            /* [out] */ ULONG32 *numTypeArgs) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTypeArgumentByIndex(
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataTypeInstance **typeArg) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetILOffsetsByAddress(
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 offsetsLen,
            /* [out] */ ULONG32 *offsetsNeeded,
            /* [size_is][out] */ ULONG32 ilOffsets[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetAddressRangesByILOffset(
            /* [in] */ ULONG32 ilOffset,
            /* [in] */ ULONG32 rangesLen,
            /* [out] */ ULONG32 *rangesNeeded,
            /* [size_is][out] */ CLRDATA_ADDRESS_RANGE addressRanges[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetILAddressMap(
            /* [in] */ ULONG32 mapLen,
            /* [out] */ ULONG32 *mapNeeded,
            /* [size_is][out] */ CLRDATA_IL_ADDRESS_MAP maps[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumExtents(
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumExtent(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ CLRDATA_ADDRESS_RANGE *extent) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumExtents(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetRepresentativeEntryAddress(
            /* [out] */ CLRDATA_ADDRESS *addr) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataMethodInstanceVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataMethodInstance * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetTypeInstance )(
            IXCLRDataMethodInstance * This,
            /* [out] */ IXCLRDataTypeInstance **typeInstance);

        HRESULT ( STDMETHODCALLTYPE *GetDefinition )(
            IXCLRDataMethodInstance * This,
            /* [out] */ IXCLRDataMethodDefinition **methodDefinition);

        HRESULT ( STDMETHODCALLTYPE *GetTokenAndScope )(
            IXCLRDataMethodInstance * This,
            /* [out] */ mdMethodDef *token,
            /* [out] */ IXCLRDataModule **mod);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataMethodInstance * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataMethodInstance * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataMethodInstance * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *GetEnCVersion )(
            IXCLRDataMethodInstance * This,
            /* [out] */ ULONG32 *version);

        HRESULT ( STDMETHODCALLTYPE *GetNumTypeArguments )(
            IXCLRDataMethodInstance * This,
            /* [out] */ ULONG32 *numTypeArgs);

        HRESULT ( STDMETHODCALLTYPE *GetTypeArgumentByIndex )(
            IXCLRDataMethodInstance * This,
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataTypeInstance **typeArg);

        HRESULT ( STDMETHODCALLTYPE *GetILOffsetsByAddress )(
            IXCLRDataMethodInstance * This,
            /* [in] */ CLRDATA_ADDRESS address,
            /* [in] */ ULONG32 offsetsLen,
            /* [out] */ ULONG32 *offsetsNeeded,
            /* [size_is][out] */ ULONG32 ilOffsets[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetAddressRangesByILOffset )(
            IXCLRDataMethodInstance * This,
            /* [in] */ ULONG32 ilOffset,
            /* [in] */ ULONG32 rangesLen,
            /* [out] */ ULONG32 *rangesNeeded,
            /* [size_is][out] */ CLRDATA_ADDRESS_RANGE addressRanges[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetILAddressMap )(
            IXCLRDataMethodInstance * This,
            /* [in] */ ULONG32 mapLen,
            /* [out] */ ULONG32 *mapNeeded,
            /* [size_is][out] */ CLRDATA_IL_ADDRESS_MAP maps[  ]);

        HRESULT ( STDMETHODCALLTYPE *StartEnumExtents )(
            IXCLRDataMethodInstance * This,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumExtent )(
            IXCLRDataMethodInstance * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ CLRDATA_ADDRESS_RANGE *extent);

        HRESULT ( STDMETHODCALLTYPE *EndEnumExtents )(
            IXCLRDataMethodInstance * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataMethodInstance * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *GetRepresentativeEntryAddress )(
            IXCLRDataMethodInstance * This,
            /* [out] */ CLRDATA_ADDRESS *addr);

        END_INTERFACE
    } IXCLRDataMethodInstanceVtbl;

    interface IXCLRDataMethodInstance
    {
        CONST_VTBL struct IXCLRDataMethodInstanceVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataMethodInstance_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataMethodInstance_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataMethodInstance_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataMethodInstance_GetTypeInstance(This,typeInstance)	\
    ( (This)->lpVtbl -> GetTypeInstance(This,typeInstance) )

#define IXCLRDataMethodInstance_GetDefinition(This,methodDefinition)	\
    ( (This)->lpVtbl -> GetDefinition(This,methodDefinition) )

#define IXCLRDataMethodInstance_GetTokenAndScope(This,token,mod)	\
    ( (This)->lpVtbl -> GetTokenAndScope(This,token,mod) )

#define IXCLRDataMethodInstance_GetName(This,flags,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetName(This,flags,bufLen,nameLen,nameBuf) )

#define IXCLRDataMethodInstance_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataMethodInstance_IsSameObject(This,method)	\
    ( (This)->lpVtbl -> IsSameObject(This,method) )

#define IXCLRDataMethodInstance_GetEnCVersion(This,version)	\
    ( (This)->lpVtbl -> GetEnCVersion(This,version) )

#define IXCLRDataMethodInstance_GetNumTypeArguments(This,numTypeArgs)	\
    ( (This)->lpVtbl -> GetNumTypeArguments(This,numTypeArgs) )

#define IXCLRDataMethodInstance_GetTypeArgumentByIndex(This,index,typeArg)	\
    ( (This)->lpVtbl -> GetTypeArgumentByIndex(This,index,typeArg) )

#define IXCLRDataMethodInstance_GetILOffsetsByAddress(This,address,offsetsLen,offsetsNeeded,ilOffsets)	\
    ( (This)->lpVtbl -> GetILOffsetsByAddress(This,address,offsetsLen,offsetsNeeded,ilOffsets) )

#define IXCLRDataMethodInstance_GetAddressRangesByILOffset(This,ilOffset,rangesLen,rangesNeeded,addressRanges)	\
    ( (This)->lpVtbl -> GetAddressRangesByILOffset(This,ilOffset,rangesLen,rangesNeeded,addressRanges) )

#define IXCLRDataMethodInstance_GetILAddressMap(This,mapLen,mapNeeded,maps)	\
    ( (This)->lpVtbl -> GetILAddressMap(This,mapLen,mapNeeded,maps) )

#define IXCLRDataMethodInstance_StartEnumExtents(This,handle)	\
    ( (This)->lpVtbl -> StartEnumExtents(This,handle) )

#define IXCLRDataMethodInstance_EnumExtent(This,handle,extent)	\
    ( (This)->lpVtbl -> EnumExtent(This,handle,extent) )

#define IXCLRDataMethodInstance_EndEnumExtents(This,handle)	\
    ( (This)->lpVtbl -> EndEnumExtents(This,handle) )

#define IXCLRDataMethodInstance_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataMethodInstance_GetRepresentativeEntryAddress(This,addr)	\
    ( (This)->lpVtbl -> GetRepresentativeEntryAddress(This,addr) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataMethodInstance_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0014 */
/* [local] */

#pragma warning(pop)
typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0014_0001
    {
        CLRDATA_TASK_DEFAULT	= 0,
        CLRDATA_TASK_WAITING_FOR_GC	= 0x1
    } 	CLRDataTaskFlag;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0014_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0014_v0_0_s_ifspec;

#ifndef __IXCLRDataTask_INTERFACE_DEFINED__
#define __IXCLRDataTask_INTERFACE_DEFINED__

/* interface IXCLRDataTask */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataTask;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("A5B0BEEA-EC62-4618-8012-A24FFC23934C")
    IXCLRDataTask : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetProcess(
            /* [out] */ IXCLRDataProcess **process) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetCurrentAppDomain(
            /* [out] */ IXCLRDataAppDomain **appDomain) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetUniqueID(
            /* [out] */ ULONG64 *id) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameObject(
            /* [in] */ IXCLRDataTask *task) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetManagedObject(
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetDesiredExecutionState(
            /* [out] */ ULONG32 *state) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetDesiredExecutionState(
            /* [in] */ ULONG32 state) = 0;

        virtual HRESULT STDMETHODCALLTYPE CreateStackWalk(
            /* [in] */ ULONG32 flags,
            /* [out] */ IXCLRDataStackWalk **stackWalk) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetOSThreadID(
            /* [out] */ ULONG32 *id) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetContext(
            /* [in] */ ULONG32 contextFlags,
            /* [in] */ ULONG32 contextBufSize,
            /* [out] */ ULONG32 *contextSize,
            /* [size_is][out] */ BYTE contextBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetContext(
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE context[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetCurrentExceptionState(
            /* [out] */ IXCLRDataExceptionState **exception) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetName(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetLastExceptionState(
            /* [out] */ IXCLRDataExceptionState **exception) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataTaskVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataTask * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetProcess )(
            IXCLRDataTask * This,
            /* [out] */ IXCLRDataProcess **process);

        HRESULT ( STDMETHODCALLTYPE *GetCurrentAppDomain )(
            IXCLRDataTask * This,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *GetUniqueID )(
            IXCLRDataTask * This,
            /* [out] */ ULONG64 *id);

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataTask * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *IsSameObject )(
            IXCLRDataTask * This,
            /* [in] */ IXCLRDataTask *task);

        HRESULT ( STDMETHODCALLTYPE *GetManagedObject )(
            IXCLRDataTask * This,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *GetDesiredExecutionState )(
            IXCLRDataTask * This,
            /* [out] */ ULONG32 *state);

        HRESULT ( STDMETHODCALLTYPE *SetDesiredExecutionState )(
            IXCLRDataTask * This,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *CreateStackWalk )(
            IXCLRDataTask * This,
            /* [in] */ ULONG32 flags,
            /* [out] */ IXCLRDataStackWalk **stackWalk);

        HRESULT ( STDMETHODCALLTYPE *GetOSThreadID )(
            IXCLRDataTask * This,
            /* [out] */ ULONG32 *id);

        HRESULT ( STDMETHODCALLTYPE *GetContext )(
            IXCLRDataTask * This,
            /* [in] */ ULONG32 contextFlags,
            /* [in] */ ULONG32 contextBufSize,
            /* [out] */ ULONG32 *contextSize,
            /* [size_is][out] */ BYTE contextBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *SetContext )(
            IXCLRDataTask * This,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE context[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetCurrentExceptionState )(
            IXCLRDataTask * This,
            /* [out] */ IXCLRDataExceptionState **exception);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataTask * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *GetName )(
            IXCLRDataTask * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetLastExceptionState )(
            IXCLRDataTask * This,
            /* [out] */ IXCLRDataExceptionState **exception);

        END_INTERFACE
    } IXCLRDataTaskVtbl;

    interface IXCLRDataTask
    {
        CONST_VTBL struct IXCLRDataTaskVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataTask_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataTask_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataTask_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataTask_GetProcess(This,process)	\
    ( (This)->lpVtbl -> GetProcess(This,process) )

#define IXCLRDataTask_GetCurrentAppDomain(This,appDomain)	\
    ( (This)->lpVtbl -> GetCurrentAppDomain(This,appDomain) )

#define IXCLRDataTask_GetUniqueID(This,id)	\
    ( (This)->lpVtbl -> GetUniqueID(This,id) )

#define IXCLRDataTask_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataTask_IsSameObject(This,task)	\
    ( (This)->lpVtbl -> IsSameObject(This,task) )

#define IXCLRDataTask_GetManagedObject(This,value)	\
    ( (This)->lpVtbl -> GetManagedObject(This,value) )

#define IXCLRDataTask_GetDesiredExecutionState(This,state)	\
    ( (This)->lpVtbl -> GetDesiredExecutionState(This,state) )

#define IXCLRDataTask_SetDesiredExecutionState(This,state)	\
    ( (This)->lpVtbl -> SetDesiredExecutionState(This,state) )

#define IXCLRDataTask_CreateStackWalk(This,flags,stackWalk)	\
    ( (This)->lpVtbl -> CreateStackWalk(This,flags,stackWalk) )

#define IXCLRDataTask_GetOSThreadID(This,id)	\
    ( (This)->lpVtbl -> GetOSThreadID(This,id) )

#define IXCLRDataTask_GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf)	\
    ( (This)->lpVtbl -> GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf) )

#define IXCLRDataTask_SetContext(This,contextSize,context)	\
    ( (This)->lpVtbl -> SetContext(This,contextSize,context) )

#define IXCLRDataTask_GetCurrentExceptionState(This,exception)	\
    ( (This)->lpVtbl -> GetCurrentExceptionState(This,exception) )

#define IXCLRDataTask_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataTask_GetName(This,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetName(This,bufLen,nameLen,name) )

#define IXCLRDataTask_GetLastExceptionState(This,exception)	\
    ( (This)->lpVtbl -> GetLastExceptionState(This,exception) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataTask_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0015 */
/* [local] */

#pragma warning(pop)
typedef /* [public][public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0015_0001
    {
        CLRDATA_SIMPFRAME_UNRECOGNIZED	= 0x1,
        CLRDATA_SIMPFRAME_MANAGED_METHOD	= 0x2,
        CLRDATA_SIMPFRAME_RUNTIME_MANAGED_CODE	= 0x4,
        CLRDATA_SIMPFRAME_RUNTIME_UNMANAGED_CODE	= 0x8
    } 	CLRDataSimpleFrameType;

typedef /* [public][public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0015_0002
    {
        CLRDATA_DETFRAME_UNRECOGNIZED	= 0,
        CLRDATA_DETFRAME_UNKNOWN_STUB	= ( CLRDATA_DETFRAME_UNRECOGNIZED + 1 ) ,
        CLRDATA_DETFRAME_CLASS_INIT	= ( CLRDATA_DETFRAME_UNKNOWN_STUB + 1 ) ,
        CLRDATA_DETFRAME_EXCEPTION_FILTER	= ( CLRDATA_DETFRAME_CLASS_INIT + 1 ) ,
        CLRDATA_DETFRAME_SECURITY	= ( CLRDATA_DETFRAME_EXCEPTION_FILTER + 1 ) ,
        CLRDATA_DETFRAME_CONTEXT_POLICY	= ( CLRDATA_DETFRAME_SECURITY + 1 ) ,
        CLRDATA_DETFRAME_INTERCEPTION	= ( CLRDATA_DETFRAME_CONTEXT_POLICY + 1 ) ,
        CLRDATA_DETFRAME_PROCESS_START	= ( CLRDATA_DETFRAME_INTERCEPTION + 1 ) ,
        CLRDATA_DETFRAME_THREAD_START	= ( CLRDATA_DETFRAME_PROCESS_START + 1 ) ,
        CLRDATA_DETFRAME_TRANSITION_TO_MANAGED	= ( CLRDATA_DETFRAME_THREAD_START + 1 ) ,
        CLRDATA_DETFRAME_TRANSITION_TO_UNMANAGED	= ( CLRDATA_DETFRAME_TRANSITION_TO_MANAGED + 1 ) ,
        CLRDATA_DETFRAME_COM_INTEROP_STUB	= ( CLRDATA_DETFRAME_TRANSITION_TO_UNMANAGED + 1 ) ,
        CLRDATA_DETFRAME_DEBUGGER_EVAL	= ( CLRDATA_DETFRAME_COM_INTEROP_STUB + 1 ) ,
        CLRDATA_DETFRAME_CONTEXT_SWITCH	= ( CLRDATA_DETFRAME_DEBUGGER_EVAL + 1 ) ,
        CLRDATA_DETFRAME_FUNC_EVAL	= ( CLRDATA_DETFRAME_CONTEXT_SWITCH + 1 ) ,
        CLRDATA_DETFRAME_FINALLY	= ( CLRDATA_DETFRAME_FUNC_EVAL + 1 )
    } 	CLRDataDetailedFrameType;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0015_0003
    {
        CLRDATA_STACK_WALK_REQUEST_SET_FIRST_FRAME	= 0xe1000000
    } 	CLRDataStackWalkRequest;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0015_0004
    {
        CLRDATA_STACK_SET_UNWIND_CONTEXT	= 0,
        CLRDATA_STACK_SET_CURRENT_CONTEXT	= 0x1
    } 	CLRDataStackSetContextFlag;

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0015_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0015_v0_0_s_ifspec;

#ifndef __IXCLRDataStackWalk_INTERFACE_DEFINED__
#define __IXCLRDataStackWalk_INTERFACE_DEFINED__

/* interface IXCLRDataStackWalk */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataStackWalk;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("E59D8D22-ADA7-49a2-89B5-A415AFCFC95F")
    IXCLRDataStackWalk : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetContext(
            /* [in] */ ULONG32 contextFlags,
            /* [in] */ ULONG32 contextBufSize,
            /* [out] */ ULONG32 *contextSize,
            /* [size_is][out] */ BYTE contextBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetContext(
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE context[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE Next( void) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetStackSizeSkipped(
            /* [out] */ ULONG64 *stackSizeSkipped) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFrameType(
            /* [out] */ CLRDataSimpleFrameType *simpleType,
            /* [out] */ CLRDataDetailedFrameType *detailedType) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFrame(
            /* [out] */ IXCLRDataFrame **frame) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetContext2(
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE context[  ]) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataStackWalkVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataStackWalk * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetContext )(
            IXCLRDataStackWalk * This,
            /* [in] */ ULONG32 contextFlags,
            /* [in] */ ULONG32 contextBufSize,
            /* [out] */ ULONG32 *contextSize,
            /* [size_is][out] */ BYTE contextBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *SetContext )(
            IXCLRDataStackWalk * This,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE context[  ]);

        HRESULT ( STDMETHODCALLTYPE *Next )(
            IXCLRDataStackWalk * This);

        HRESULT ( STDMETHODCALLTYPE *GetStackSizeSkipped )(
            IXCLRDataStackWalk * This,
            /* [out] */ ULONG64 *stackSizeSkipped);

        HRESULT ( STDMETHODCALLTYPE *GetFrameType )(
            IXCLRDataStackWalk * This,
            /* [out] */ CLRDataSimpleFrameType *simpleType,
            /* [out] */ CLRDataDetailedFrameType *detailedType);

        HRESULT ( STDMETHODCALLTYPE *GetFrame )(
            IXCLRDataStackWalk * This,
            /* [out] */ IXCLRDataFrame **frame);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataStackWalk * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *SetContext2 )(
            IXCLRDataStackWalk * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE context[  ]);

        END_INTERFACE
    } IXCLRDataStackWalkVtbl;

    interface IXCLRDataStackWalk
    {
        CONST_VTBL struct IXCLRDataStackWalkVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataStackWalk_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataStackWalk_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataStackWalk_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataStackWalk_GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf)	\
    ( (This)->lpVtbl -> GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf) )

#define IXCLRDataStackWalk_SetContext(This,contextSize,context)	\
    ( (This)->lpVtbl -> SetContext(This,contextSize,context) )

#define IXCLRDataStackWalk_Next(This)	\
    ( (This)->lpVtbl -> Next(This) )

#define IXCLRDataStackWalk_GetStackSizeSkipped(This,stackSizeSkipped)	\
    ( (This)->lpVtbl -> GetStackSizeSkipped(This,stackSizeSkipped) )

#define IXCLRDataStackWalk_GetFrameType(This,simpleType,detailedType)	\
    ( (This)->lpVtbl -> GetFrameType(This,simpleType,detailedType) )

#define IXCLRDataStackWalk_GetFrame(This,frame)	\
    ( (This)->lpVtbl -> GetFrame(This,frame) )

#define IXCLRDataStackWalk_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataStackWalk_SetContext2(This,flags,contextSize,context)	\
    ( (This)->lpVtbl -> SetContext2(This,flags,contextSize,context) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataStackWalk_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0016 */
/* [local] */

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0016_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0016_v0_0_s_ifspec;

#ifndef __IXCLRDataFrame_INTERFACE_DEFINED__
#define __IXCLRDataFrame_INTERFACE_DEFINED__

/* interface IXCLRDataFrame */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataFrame;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("271498C2-4085-4766-BC3A-7F8ED188A173")
    IXCLRDataFrame : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetFrameType(
            /* [out] */ CLRDataSimpleFrameType *simpleType,
            /* [out] */ CLRDataDetailedFrameType *detailedType) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetContext(
            /* [in] */ ULONG32 contextFlags,
            /* [in] */ ULONG32 contextBufSize,
            /* [out] */ ULONG32 *contextSize,
            /* [size_is][out] */ BYTE contextBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetAppDomain(
            /* [out] */ IXCLRDataAppDomain **appDomain) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumArguments(
            /* [out] */ ULONG32 *numArgs) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetArgumentByIndex(
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataValue **arg,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumLocalVariables(
            /* [out] */ ULONG32 *numLocals) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetLocalVariableByIndex(
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataValue **localVariable,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetCodeName(
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetMethodInstance(
            /* [out] */ IXCLRDataMethodInstance **method) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumTypeArguments(
            /* [out] */ ULONG32 *numTypeArgs) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTypeArgumentByIndex(
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataTypeInstance **typeArg) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataFrameVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataFrame * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetFrameType )(
            IXCLRDataFrame * This,
            /* [out] */ CLRDataSimpleFrameType *simpleType,
            /* [out] */ CLRDataDetailedFrameType *detailedType);

        HRESULT ( STDMETHODCALLTYPE *GetContext )(
            IXCLRDataFrame * This,
            /* [in] */ ULONG32 contextFlags,
            /* [in] */ ULONG32 contextBufSize,
            /* [out] */ ULONG32 *contextSize,
            /* [size_is][out] */ BYTE contextBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetAppDomain )(
            IXCLRDataFrame * This,
            /* [out] */ IXCLRDataAppDomain **appDomain);

        HRESULT ( STDMETHODCALLTYPE *GetNumArguments )(
            IXCLRDataFrame * This,
            /* [out] */ ULONG32 *numArgs);

        HRESULT ( STDMETHODCALLTYPE *GetArgumentByIndex )(
            IXCLRDataFrame * This,
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataValue **arg,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetNumLocalVariables )(
            IXCLRDataFrame * This,
            /* [out] */ ULONG32 *numLocals);

        HRESULT ( STDMETHODCALLTYPE *GetLocalVariableByIndex )(
            IXCLRDataFrame * This,
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataValue **localVariable,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR name[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetCodeName )(
            IXCLRDataFrame * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetMethodInstance )(
            IXCLRDataFrame * This,
            /* [out] */ IXCLRDataMethodInstance **method);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataFrame * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *GetNumTypeArguments )(
            IXCLRDataFrame * This,
            /* [out] */ ULONG32 *numTypeArgs);

        HRESULT ( STDMETHODCALLTYPE *GetTypeArgumentByIndex )(
            IXCLRDataFrame * This,
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataTypeInstance **typeArg);

        END_INTERFACE
    } IXCLRDataFrameVtbl;

    interface IXCLRDataFrame
    {
        CONST_VTBL struct IXCLRDataFrameVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataFrame_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataFrame_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataFrame_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataFrame_GetFrameType(This,simpleType,detailedType)	\
    ( (This)->lpVtbl -> GetFrameType(This,simpleType,detailedType) )

#define IXCLRDataFrame_GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf)	\
    ( (This)->lpVtbl -> GetContext(This,contextFlags,contextBufSize,contextSize,contextBuf) )

#define IXCLRDataFrame_GetAppDomain(This,appDomain)	\
    ( (This)->lpVtbl -> GetAppDomain(This,appDomain) )

#define IXCLRDataFrame_GetNumArguments(This,numArgs)	\
    ( (This)->lpVtbl -> GetNumArguments(This,numArgs) )

#define IXCLRDataFrame_GetArgumentByIndex(This,index,arg,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetArgumentByIndex(This,index,arg,bufLen,nameLen,name) )

#define IXCLRDataFrame_GetNumLocalVariables(This,numLocals)	\
    ( (This)->lpVtbl -> GetNumLocalVariables(This,numLocals) )

#define IXCLRDataFrame_GetLocalVariableByIndex(This,index,localVariable,bufLen,nameLen,name)	\
    ( (This)->lpVtbl -> GetLocalVariableByIndex(This,index,localVariable,bufLen,nameLen,name) )

#define IXCLRDataFrame_GetCodeName(This,flags,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetCodeName(This,flags,bufLen,nameLen,nameBuf) )

#define IXCLRDataFrame_GetMethodInstance(This,method)	\
    ( (This)->lpVtbl -> GetMethodInstance(This,method) )

#define IXCLRDataFrame_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataFrame_GetNumTypeArguments(This,numTypeArgs)	\
    ( (This)->lpVtbl -> GetNumTypeArguments(This,numTypeArgs) )

#define IXCLRDataFrame_GetTypeArgumentByIndex(This,index,typeArg)	\
    ( (This)->lpVtbl -> GetTypeArgumentByIndex(This,index,typeArg) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataFrame_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0017 */
/* [local] */

#pragma warning(pop)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0017_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0017_v0_0_s_ifspec;

#ifndef __IXCLRDataFrame2_INTERFACE_DEFINED__
#define __IXCLRDataFrame2_INTERFACE_DEFINED__

/* interface IXCLRDataFrame2 */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataFrame2;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("1C4D9A4B-702D-4CF6-B290-1DB6F43050D0")
    IXCLRDataFrame2 : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetExactGenericArgsToken(
            /* [out] */ IXCLRDataValue **genericToken) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataFrame2Vtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataFrame2 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetExactGenericArgsToken )(
            IXCLRDataFrame2 * This,
            /* [out] */ IXCLRDataValue **genericToken);

        END_INTERFACE
    } IXCLRDataFrame2Vtbl;

    interface IXCLRDataFrame2
    {
        CONST_VTBL struct IXCLRDataFrame2Vtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataFrame2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataFrame2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataFrame2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataFrame2_GetExactGenericArgsToken(This,genericToken)	\
    ( (This)->lpVtbl -> GetExactGenericArgsToken(This,genericToken) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataFrame2_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0018 */
/* [local] */

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0018_0001
    {
        CLRDATA_EXCEPTION_DEFAULT	= 0,
        CLRDATA_EXCEPTION_NESTED	= 0x1,
        CLRDATA_EXCEPTION_PARTIAL	= 0x2
    } 	CLRDataExceptionStateFlag;

typedef /* [public][public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0018_0002
    {
        CLRDATA_EXBASE_EXCEPTION	= 0,
        CLRDATA_EXBASE_OUT_OF_MEMORY	= ( CLRDATA_EXBASE_EXCEPTION + 1 ) ,
        CLRDATA_EXBASE_INVALID_ARGUMENT	= ( CLRDATA_EXBASE_OUT_OF_MEMORY + 1 )
    } 	CLRDataBaseExceptionType;

typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0018_0003
    {
        CLRDATA_EXSAME_SECOND_CHANCE	= 0,
        CLRDATA_EXSAME_FIRST_CHANCE	= 0x1
    } 	CLRDataExceptionSameFlag;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0018_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0018_v0_0_s_ifspec;

#ifndef __IXCLRDataExceptionState_INTERFACE_DEFINED__
#define __IXCLRDataExceptionState_INTERFACE_DEFINED__

/* interface IXCLRDataExceptionState */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataExceptionState;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("75DA9E4C-BD33-43C8-8F5C-96E8A5241F57")
    IXCLRDataExceptionState : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetPrevious(
            /* [out] */ IXCLRDataExceptionState **exState) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetManagedObject(
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetBaseType(
            /* [out] */ CLRDataBaseExceptionType *type) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetCode(
            /* [out] */ ULONG32 *code) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetString(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *strLen,
            /* [size_is][out] */ WCHAR str[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameState(
            /* [in] */ EXCEPTION_RECORD64 *exRecord,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE cxRecord[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE IsSameState2(
            /* [in] */ ULONG32 flags,
            /* [in] */ EXCEPTION_RECORD64 *exRecord,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE cxRecord[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetTask(
            /* [out] */ IXCLRDataTask **task) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataExceptionStateVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataExceptionState * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataExceptionState * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *GetPrevious )(
            IXCLRDataExceptionState * This,
            /* [out] */ IXCLRDataExceptionState **exState);

        HRESULT ( STDMETHODCALLTYPE *GetManagedObject )(
            IXCLRDataExceptionState * This,
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *GetBaseType )(
            IXCLRDataExceptionState * This,
            /* [out] */ CLRDataBaseExceptionType *type);

        HRESULT ( STDMETHODCALLTYPE *GetCode )(
            IXCLRDataExceptionState * This,
            /* [out] */ ULONG32 *code);

        HRESULT ( STDMETHODCALLTYPE *GetString )(
            IXCLRDataExceptionState * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *strLen,
            /* [size_is][out] */ WCHAR str[  ]);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataExceptionState * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *IsSameState )(
            IXCLRDataExceptionState * This,
            /* [in] */ EXCEPTION_RECORD64 *exRecord,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE cxRecord[  ]);

        HRESULT ( STDMETHODCALLTYPE *IsSameState2 )(
            IXCLRDataExceptionState * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ EXCEPTION_RECORD64 *exRecord,
            /* [in] */ ULONG32 contextSize,
            /* [size_is][in] */ BYTE cxRecord[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetTask )(
            IXCLRDataExceptionState * This,
            /* [out] */ IXCLRDataTask **task);

        END_INTERFACE
    } IXCLRDataExceptionStateVtbl;

    interface IXCLRDataExceptionState
    {
        CONST_VTBL struct IXCLRDataExceptionStateVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataExceptionState_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataExceptionState_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataExceptionState_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataExceptionState_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataExceptionState_GetPrevious(This,exState)	\
    ( (This)->lpVtbl -> GetPrevious(This,exState) )

#define IXCLRDataExceptionState_GetManagedObject(This,value)	\
    ( (This)->lpVtbl -> GetManagedObject(This,value) )

#define IXCLRDataExceptionState_GetBaseType(This,type)	\
    ( (This)->lpVtbl -> GetBaseType(This,type) )

#define IXCLRDataExceptionState_GetCode(This,code)	\
    ( (This)->lpVtbl -> GetCode(This,code) )

#define IXCLRDataExceptionState_GetString(This,bufLen,strLen,str)	\
    ( (This)->lpVtbl -> GetString(This,bufLen,strLen,str) )

#define IXCLRDataExceptionState_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataExceptionState_IsSameState(This,exRecord,contextSize,cxRecord)	\
    ( (This)->lpVtbl -> IsSameState(This,exRecord,contextSize,cxRecord) )

#define IXCLRDataExceptionState_IsSameState2(This,flags,exRecord,contextSize,cxRecord)	\
    ( (This)->lpVtbl -> IsSameState2(This,flags,exRecord,contextSize,cxRecord) )

#define IXCLRDataExceptionState_GetTask(This,task)	\
    ( (This)->lpVtbl -> GetTask(This,task) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataExceptionState_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0019 */
/* [local] */

#pragma warning(pop)
typedef /* [public] */
enum __MIDL___MIDL_itf_xclrdata_0000_0019_0001
    {
        CLRDATA_VLOC_MEMORY	= 0,
        CLRDATA_VLOC_REGISTER	= 0x1
    } 	ClrDataValueLocationFlag;

#pragma warning(push)
#pragma warning(disable:28718)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0019_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0019_v0_0_s_ifspec;

#ifndef __IXCLRDataValue_INTERFACE_DEFINED__
#define __IXCLRDataValue_INTERFACE_DEFINED__

/* interface IXCLRDataValue */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataValue;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("96EC93C7-1000-4e93-8991-98D8766E6666")
    IXCLRDataValue : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE GetFlags(
            /* [out] */ ULONG32 *flags) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetAddress(
            /* [out] */ CLRDATA_ADDRESS *address) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetSize(
            /* [out] */ ULONG64 *size) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetBytes(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *dataSize,
            /* [size_is][out] */ BYTE buffer[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE SetBytes(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *dataSize,
            /* [size_is][in] */ BYTE buffer[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetType(
            /* [out] */ IXCLRDataTypeInstance **typeInstance) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumFields(
            /* [out] */ ULONG32 *numFields) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFieldByIndex(
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE Request(
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumFields2(
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTypeInstance *fromType,
            /* [out] */ ULONG32 *numFields) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumFields(
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTypeInstance *fromType,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumField(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumFields(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE StartEnumFieldsByName(
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 nameFlags,
            /* [in] */ ULONG32 fieldFlags,
            /* [in] */ IXCLRDataTypeInstance *fromType,
            /* [out] */ CLRDATA_ENUM *handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumFieldByName(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE EndEnumFieldsByName(
            /* [in] */ CLRDATA_ENUM handle) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFieldByToken(
            /* [in] */ mdFieldDef token,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetAssociatedValue(
            /* [out] */ IXCLRDataValue **assocValue) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetAssociatedType(
            /* [out] */ IXCLRDataTypeInstance **assocType) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetString(
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *strLen,
            /* [size_is][out] */ WCHAR str[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetArrayProperties(
            /* [out] */ ULONG32 *rank,
            /* [out] */ ULONG32 *totalElements,
            /* [in] */ ULONG32 numDim,
            /* [size_is][out] */ ULONG32 dims[  ],
            /* [in] */ ULONG32 numBases,
            /* [size_is][out] */ LONG32 bases[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetArrayElement(
            /* [in] */ ULONG32 numInd,
            /* [size_is][in] */ LONG32 indices[  ],
            /* [out] */ IXCLRDataValue **value) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumField2(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE EnumFieldByName2(
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetFieldByToken2(
            /* [in] */ IXCLRDataModule *tokenScope,
            /* [in] */ mdFieldDef token,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetNumLocations(
            /* [out] */ ULONG32 *numLocs) = 0;

        virtual HRESULT STDMETHODCALLTYPE GetLocationByIndex(
            /* [in] */ ULONG32 loc,
            /* [out] */ ULONG32 *flags,
            /* [out] */ CLRDATA_ADDRESS *arg) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataValueVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataValue * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *GetFlags )(
            IXCLRDataValue * This,
            /* [out] */ ULONG32 *flags);

        HRESULT ( STDMETHODCALLTYPE *GetAddress )(
            IXCLRDataValue * This,
            /* [out] */ CLRDATA_ADDRESS *address);

        HRESULT ( STDMETHODCALLTYPE *GetSize )(
            IXCLRDataValue * This,
            /* [out] */ ULONG64 *size);

        HRESULT ( STDMETHODCALLTYPE *GetBytes )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *dataSize,
            /* [size_is][out] */ BYTE buffer[  ]);

        HRESULT ( STDMETHODCALLTYPE *SetBytes )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *dataSize,
            /* [size_is][in] */ BYTE buffer[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetType )(
            IXCLRDataValue * This,
            /* [out] */ IXCLRDataTypeInstance **typeInstance);

        HRESULT ( STDMETHODCALLTYPE *GetNumFields )(
            IXCLRDataValue * This,
            /* [out] */ ULONG32 *numFields);

        HRESULT ( STDMETHODCALLTYPE *GetFieldByIndex )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 index,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *Request )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 reqCode,
            /* [in] */ ULONG32 inBufferSize,
            /* [size_is][in] */ BYTE *inBuffer,
            /* [in] */ ULONG32 outBufferSize,
            /* [size_is][out] */ BYTE *outBuffer);

        HRESULT ( STDMETHODCALLTYPE *GetNumFields2 )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTypeInstance *fromType,
            /* [out] */ ULONG32 *numFields);

        HRESULT ( STDMETHODCALLTYPE *StartEnumFields )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 flags,
            /* [in] */ IXCLRDataTypeInstance *fromType,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumField )(
            IXCLRDataValue * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *EndEnumFields )(
            IXCLRDataValue * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *StartEnumFieldsByName )(
            IXCLRDataValue * This,
            /* [in] */ LPCWSTR name,
            /* [in] */ ULONG32 nameFlags,
            /* [in] */ ULONG32 fieldFlags,
            /* [in] */ IXCLRDataTypeInstance *fromType,
            /* [out] */ CLRDATA_ENUM *handle);

        HRESULT ( STDMETHODCALLTYPE *EnumFieldByName )(
            IXCLRDataValue * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *EndEnumFieldsByName )(
            IXCLRDataValue * This,
            /* [in] */ CLRDATA_ENUM handle);

        HRESULT ( STDMETHODCALLTYPE *GetFieldByToken )(
            IXCLRDataValue * This,
            /* [in] */ mdFieldDef token,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetAssociatedValue )(
            IXCLRDataValue * This,
            /* [out] */ IXCLRDataValue **assocValue);

        HRESULT ( STDMETHODCALLTYPE *GetAssociatedType )(
            IXCLRDataValue * This,
            /* [out] */ IXCLRDataTypeInstance **assocType);

        HRESULT ( STDMETHODCALLTYPE *GetString )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *strLen,
            /* [size_is][out] */ WCHAR str[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetArrayProperties )(
            IXCLRDataValue * This,
            /* [out] */ ULONG32 *rank,
            /* [out] */ ULONG32 *totalElements,
            /* [in] */ ULONG32 numDim,
            /* [size_is][out] */ ULONG32 dims[  ],
            /* [in] */ ULONG32 numBases,
            /* [size_is][out] */ LONG32 bases[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetArrayElement )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 numInd,
            /* [size_is][in] */ LONG32 indices[  ],
            /* [out] */ IXCLRDataValue **value);

        HRESULT ( STDMETHODCALLTYPE *EnumField2 )(
            IXCLRDataValue * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 nameBufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ],
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *EnumFieldByName2 )(
            IXCLRDataValue * This,
            /* [out][in] */ CLRDATA_ENUM *handle,
            /* [out] */ IXCLRDataValue **field,
            /* [out] */ IXCLRDataModule **tokenScope,
            /* [out] */ mdFieldDef *token);

        HRESULT ( STDMETHODCALLTYPE *GetFieldByToken2 )(
            IXCLRDataValue * This,
            /* [in] */ IXCLRDataModule *tokenScope,
            /* [in] */ mdFieldDef token,
            /* [out] */ IXCLRDataValue **field,
            /* [in] */ ULONG32 bufLen,
            /* [out] */ ULONG32 *nameLen,
            /* [size_is][out] */ WCHAR nameBuf[  ]);

        HRESULT ( STDMETHODCALLTYPE *GetNumLocations )(
            IXCLRDataValue * This,
            /* [out] */ ULONG32 *numLocs);

        HRESULT ( STDMETHODCALLTYPE *GetLocationByIndex )(
            IXCLRDataValue * This,
            /* [in] */ ULONG32 loc,
            /* [out] */ ULONG32 *flags,
            /* [out] */ CLRDATA_ADDRESS *arg);

        END_INTERFACE
    } IXCLRDataValueVtbl;

    interface IXCLRDataValue
    {
        CONST_VTBL struct IXCLRDataValueVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataValue_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataValue_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataValue_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataValue_GetFlags(This,flags)	\
    ( (This)->lpVtbl -> GetFlags(This,flags) )

#define IXCLRDataValue_GetAddress(This,address)	\
    ( (This)->lpVtbl -> GetAddress(This,address) )

#define IXCLRDataValue_GetSize(This,size)	\
    ( (This)->lpVtbl -> GetSize(This,size) )

#define IXCLRDataValue_GetBytes(This,bufLen,dataSize,buffer)	\
    ( (This)->lpVtbl -> GetBytes(This,bufLen,dataSize,buffer) )

#define IXCLRDataValue_SetBytes(This,bufLen,dataSize,buffer)	\
    ( (This)->lpVtbl -> SetBytes(This,bufLen,dataSize,buffer) )

#define IXCLRDataValue_GetType(This,typeInstance)	\
    ( (This)->lpVtbl -> GetType(This,typeInstance) )

#define IXCLRDataValue_GetNumFields(This,numFields)	\
    ( (This)->lpVtbl -> GetNumFields(This,numFields) )

#define IXCLRDataValue_GetFieldByIndex(This,index,field,bufLen,nameLen,nameBuf,token)	\
    ( (This)->lpVtbl -> GetFieldByIndex(This,index,field,bufLen,nameLen,nameBuf,token) )

#define IXCLRDataValue_Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer)	\
    ( (This)->lpVtbl -> Request(This,reqCode,inBufferSize,inBuffer,outBufferSize,outBuffer) )

#define IXCLRDataValue_GetNumFields2(This,flags,fromType,numFields)	\
    ( (This)->lpVtbl -> GetNumFields2(This,flags,fromType,numFields) )

#define IXCLRDataValue_StartEnumFields(This,flags,fromType,handle)	\
    ( (This)->lpVtbl -> StartEnumFields(This,flags,fromType,handle) )

#define IXCLRDataValue_EnumField(This,handle,field,nameBufLen,nameLen,nameBuf,token)	\
    ( (This)->lpVtbl -> EnumField(This,handle,field,nameBufLen,nameLen,nameBuf,token) )

#define IXCLRDataValue_EndEnumFields(This,handle)	\
    ( (This)->lpVtbl -> EndEnumFields(This,handle) )

#define IXCLRDataValue_StartEnumFieldsByName(This,name,nameFlags,fieldFlags,fromType,handle)	\
    ( (This)->lpVtbl -> StartEnumFieldsByName(This,name,nameFlags,fieldFlags,fromType,handle) )

#define IXCLRDataValue_EnumFieldByName(This,handle,field,token)	\
    ( (This)->lpVtbl -> EnumFieldByName(This,handle,field,token) )

#define IXCLRDataValue_EndEnumFieldsByName(This,handle)	\
    ( (This)->lpVtbl -> EndEnumFieldsByName(This,handle) )

#define IXCLRDataValue_GetFieldByToken(This,token,field,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetFieldByToken(This,token,field,bufLen,nameLen,nameBuf) )

#define IXCLRDataValue_GetAssociatedValue(This,assocValue)	\
    ( (This)->lpVtbl -> GetAssociatedValue(This,assocValue) )

#define IXCLRDataValue_GetAssociatedType(This,assocType)	\
    ( (This)->lpVtbl -> GetAssociatedType(This,assocType) )

#define IXCLRDataValue_GetString(This,bufLen,strLen,str)	\
    ( (This)->lpVtbl -> GetString(This,bufLen,strLen,str) )

#define IXCLRDataValue_GetArrayProperties(This,rank,totalElements,numDim,dims,numBases,bases)	\
    ( (This)->lpVtbl -> GetArrayProperties(This,rank,totalElements,numDim,dims,numBases,bases) )

#define IXCLRDataValue_GetArrayElement(This,numInd,indices,value)	\
    ( (This)->lpVtbl -> GetArrayElement(This,numInd,indices,value) )

#define IXCLRDataValue_EnumField2(This,handle,field,nameBufLen,nameLen,nameBuf,tokenScope,token)	\
    ( (This)->lpVtbl -> EnumField2(This,handle,field,nameBufLen,nameLen,nameBuf,tokenScope,token) )

#define IXCLRDataValue_EnumFieldByName2(This,handle,field,tokenScope,token)	\
    ( (This)->lpVtbl -> EnumFieldByName2(This,handle,field,tokenScope,token) )

#define IXCLRDataValue_GetFieldByToken2(This,tokenScope,token,field,bufLen,nameLen,nameBuf)	\
    ( (This)->lpVtbl -> GetFieldByToken2(This,tokenScope,token,field,bufLen,nameLen,nameBuf) )

#define IXCLRDataValue_GetNumLocations(This,numLocs)	\
    ( (This)->lpVtbl -> GetNumLocations(This,numLocs) )

#define IXCLRDataValue_GetLocationByIndex(This,loc,flags,arg)	\
    ( (This)->lpVtbl -> GetLocationByIndex(This,loc,flags,arg) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataValue_INTERFACE_DEFINED__ */

/* interface __MIDL_itf_xclrdata_0000_0020 */
/* [local] */

#pragma warning(pop)

extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0020_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0020_v0_0_s_ifspec;

#ifndef __IXCLRDataExceptionNotification_INTERFACE_DEFINED__
#define __IXCLRDataExceptionNotification_INTERFACE_DEFINED__

/* interface IXCLRDataExceptionNotification */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataExceptionNotification;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("2D95A079-42A1-4837-818F-0B97D7048E0E")
    IXCLRDataExceptionNotification : public IUnknown
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE OnCodeGenerated(
            /* [in] */ IXCLRDataMethodInstance *method) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnCodeDiscarded(
            /* [in] */ IXCLRDataMethodInstance *method) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnProcessExecution(
            /* [in] */ ULONG32 state) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnTaskExecution(
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 state) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnModuleLoaded(
            /* [in] */ IXCLRDataModule *mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnModuleUnloaded(
            /* [in] */ IXCLRDataModule *mod) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnTypeLoaded(
            /* [in] */ IXCLRDataTypeInstance *typeInst) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnTypeUnloaded(
            /* [in] */ IXCLRDataTypeInstance *typeInst) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataExceptionNotificationVtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *OnCodeGenerated )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnCodeDiscarded )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnProcessExecution )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnTaskExecution )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnModuleLoaded )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnModuleUnloaded )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnTypeLoaded )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        HRESULT ( STDMETHODCALLTYPE *OnTypeUnloaded )(
            IXCLRDataExceptionNotification * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        END_INTERFACE
    } IXCLRDataExceptionNotificationVtbl;

    interface IXCLRDataExceptionNotification
    {
        CONST_VTBL struct IXCLRDataExceptionNotificationVtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataExceptionNotification_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataExceptionNotification_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataExceptionNotification_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataExceptionNotification_OnCodeGenerated(This,method)	\
    ( (This)->lpVtbl -> OnCodeGenerated(This,method) )

#define IXCLRDataExceptionNotification_OnCodeDiscarded(This,method)	\
    ( (This)->lpVtbl -> OnCodeDiscarded(This,method) )

#define IXCLRDataExceptionNotification_OnProcessExecution(This,state)	\
    ( (This)->lpVtbl -> OnProcessExecution(This,state) )

#define IXCLRDataExceptionNotification_OnTaskExecution(This,task,state)	\
    ( (This)->lpVtbl -> OnTaskExecution(This,task,state) )

#define IXCLRDataExceptionNotification_OnModuleLoaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleLoaded(This,mod) )

#define IXCLRDataExceptionNotification_OnModuleUnloaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleUnloaded(This,mod) )

#define IXCLRDataExceptionNotification_OnTypeLoaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeLoaded(This,typeInst) )

#define IXCLRDataExceptionNotification_OnTypeUnloaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeUnloaded(This,typeInst) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataExceptionNotification_INTERFACE_DEFINED__ */

#ifndef __IXCLRDataExceptionNotification2_INTERFACE_DEFINED__
#define __IXCLRDataExceptionNotification2_INTERFACE_DEFINED__

/* interface IXCLRDataExceptionNotification2 */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataExceptionNotification2;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("31201a94-4337-49b7-aef7-0c755054091f")
    IXCLRDataExceptionNotification2 : public IXCLRDataExceptionNotification
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE OnAppDomainLoaded(
            /* [in] */ IXCLRDataAppDomain *domain) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnAppDomainUnloaded(
            /* [in] */ IXCLRDataAppDomain *domain) = 0;

        virtual HRESULT STDMETHODCALLTYPE OnException(
            /* [in] */ IXCLRDataExceptionState *exception) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataExceptionNotification2Vtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *OnCodeGenerated )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnCodeDiscarded )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnProcessExecution )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnTaskExecution )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnModuleLoaded )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnModuleUnloaded )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnTypeLoaded )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        HRESULT ( STDMETHODCALLTYPE *OnTypeUnloaded )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        HRESULT ( STDMETHODCALLTYPE *OnAppDomainLoaded )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataAppDomain *domain);

        HRESULT ( STDMETHODCALLTYPE *OnAppDomainUnloaded )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataAppDomain *domain);

        HRESULT ( STDMETHODCALLTYPE *OnException )(
            IXCLRDataExceptionNotification2 * This,
            /* [in] */ IXCLRDataExceptionState *exception);

        END_INTERFACE
    } IXCLRDataExceptionNotification2Vtbl;

    interface IXCLRDataExceptionNotification2
    {
        CONST_VTBL struct IXCLRDataExceptionNotification2Vtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataExceptionNotification2_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataExceptionNotification2_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataExceptionNotification2_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataExceptionNotification2_OnCodeGenerated(This,method)	\
    ( (This)->lpVtbl -> OnCodeGenerated(This,method) )

#define IXCLRDataExceptionNotification2_OnCodeDiscarded(This,method)	\
    ( (This)->lpVtbl -> OnCodeDiscarded(This,method) )

#define IXCLRDataExceptionNotification2_OnProcessExecution(This,state)	\
    ( (This)->lpVtbl -> OnProcessExecution(This,state) )

#define IXCLRDataExceptionNotification2_OnTaskExecution(This,task,state)	\
    ( (This)->lpVtbl -> OnTaskExecution(This,task,state) )

#define IXCLRDataExceptionNotification2_OnModuleLoaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleLoaded(This,mod) )

#define IXCLRDataExceptionNotification2_OnModuleUnloaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleUnloaded(This,mod) )

#define IXCLRDataExceptionNotification2_OnTypeLoaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeLoaded(This,typeInst) )

#define IXCLRDataExceptionNotification2_OnTypeUnloaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeUnloaded(This,typeInst) )

#define IXCLRDataExceptionNotification2_OnAppDomainLoaded(This,domain)	\
    ( (This)->lpVtbl -> OnAppDomainLoaded(This,domain) )

#define IXCLRDataExceptionNotification2_OnAppDomainUnloaded(This,domain)	\
    ( (This)->lpVtbl -> OnAppDomainUnloaded(This,domain) )

#define IXCLRDataExceptionNotification2_OnException(This,exception)	\
    ( (This)->lpVtbl -> OnException(This,exception) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataExceptionNotification2_INTERFACE_DEFINED__ */

#ifndef __IXCLRDataExceptionNotification3_INTERFACE_DEFINED__
#define __IXCLRDataExceptionNotification3_INTERFACE_DEFINED__

/* interface IXCLRDataExceptionNotification3 */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataExceptionNotification3;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("31201a94-4337-49b7-aef7-0c7550540920")
    IXCLRDataExceptionNotification3 : public IXCLRDataExceptionNotification2
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE OnGcEvent(
            /* [in] */ GcEvtArgs gcEvtArgs) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataExceptionNotification3Vtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *OnCodeGenerated )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnCodeDiscarded )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnProcessExecution )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnTaskExecution )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnModuleLoaded )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnModuleUnloaded )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnTypeLoaded )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        HRESULT ( STDMETHODCALLTYPE *OnTypeUnloaded )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        HRESULT ( STDMETHODCALLTYPE *OnAppDomainLoaded )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataAppDomain *domain);

        HRESULT ( STDMETHODCALLTYPE *OnAppDomainUnloaded )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataAppDomain *domain);

        HRESULT ( STDMETHODCALLTYPE *OnException )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ IXCLRDataExceptionState *exception);

        HRESULT ( STDMETHODCALLTYPE *OnGcEvent )(
            IXCLRDataExceptionNotification3 * This,
            /* [in] */ GcEvtArgs gcEvtArgs);

        END_INTERFACE
    } IXCLRDataExceptionNotification3Vtbl;

    interface IXCLRDataExceptionNotification3
    {
        CONST_VTBL struct IXCLRDataExceptionNotification3Vtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataExceptionNotification3_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataExceptionNotification3_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataExceptionNotification3_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataExceptionNotification3_OnCodeGenerated(This,method)	\
    ( (This)->lpVtbl -> OnCodeGenerated(This,method) )

#define IXCLRDataExceptionNotification3_OnCodeDiscarded(This,method)	\
    ( (This)->lpVtbl -> OnCodeDiscarded(This,method) )

#define IXCLRDataExceptionNotification3_OnProcessExecution(This,state)	\
    ( (This)->lpVtbl -> OnProcessExecution(This,state) )

#define IXCLRDataExceptionNotification3_OnTaskExecution(This,task,state)	\
    ( (This)->lpVtbl -> OnTaskExecution(This,task,state) )

#define IXCLRDataExceptionNotification3_OnModuleLoaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleLoaded(This,mod) )

#define IXCLRDataExceptionNotification3_OnModuleUnloaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleUnloaded(This,mod) )

#define IXCLRDataExceptionNotification3_OnTypeLoaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeLoaded(This,typeInst) )

#define IXCLRDataExceptionNotification3_OnTypeUnloaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeUnloaded(This,typeInst) )

#define IXCLRDataExceptionNotification3_OnAppDomainLoaded(This,domain)	\
    ( (This)->lpVtbl -> OnAppDomainLoaded(This,domain) )

#define IXCLRDataExceptionNotification3_OnAppDomainUnloaded(This,domain)	\
    ( (This)->lpVtbl -> OnAppDomainUnloaded(This,domain) )

#define IXCLRDataExceptionNotification3_OnException(This,exception)	\
    ( (This)->lpVtbl -> OnException(This,exception) )

#define IXCLRDataExceptionNotification3_OnGcEvent(This,gcEvtArgs)	\
    ( (This)->lpVtbl -> OnGcEvent(This,gcEvtArgs) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataExceptionNotification3_INTERFACE_DEFINED__ */

#ifndef __IXCLRDataExceptionNotification4_INTERFACE_DEFINED__
#define __IXCLRDataExceptionNotification4_INTERFACE_DEFINED__

/* interface IXCLRDataExceptionNotification4 */
/* [uuid][local][object] */

EXTERN_C const IID IID_IXCLRDataExceptionNotification4;

#if defined(__cplusplus) && !defined(CINTERFACE)

    MIDL_INTERFACE("C25E926E-5F09-4AA2-BBAD-B7FC7F10CFD7")
    IXCLRDataExceptionNotification4 : public IXCLRDataExceptionNotification3
    {
    public:
        virtual HRESULT STDMETHODCALLTYPE ExceptionCatcherEnter(
            /* [in] */ IXCLRDataMethodInstance *catchingMethod,
            DWORD catcherNativeOffset) = 0;

    };

#else 	/* C style interface */

    typedef struct IXCLRDataExceptionNotification4Vtbl
    {
        BEGIN_INTERFACE

        HRESULT ( STDMETHODCALLTYPE *QueryInterface )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ REFIID riid,
            /* [annotation][iid_is][out] */
            _COM_Outptr_  void **ppvObject);

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

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

        HRESULT ( STDMETHODCALLTYPE *OnCodeGenerated )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnCodeDiscarded )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataMethodInstance *method);

        HRESULT ( STDMETHODCALLTYPE *OnProcessExecution )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnTaskExecution )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataTask *task,
            /* [in] */ ULONG32 state);

        HRESULT ( STDMETHODCALLTYPE *OnModuleLoaded )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnModuleUnloaded )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataModule *mod);

        HRESULT ( STDMETHODCALLTYPE *OnTypeLoaded )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        HRESULT ( STDMETHODCALLTYPE *OnTypeUnloaded )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataTypeInstance *typeInst);

        HRESULT ( STDMETHODCALLTYPE *OnAppDomainLoaded )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataAppDomain *domain);

        HRESULT ( STDMETHODCALLTYPE *OnAppDomainUnloaded )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataAppDomain *domain);

        HRESULT ( STDMETHODCALLTYPE *OnException )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataExceptionState *exception);

        HRESULT ( STDMETHODCALLTYPE *OnGcEvent )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ GcEvtArgs gcEvtArgs);

        HRESULT ( STDMETHODCALLTYPE *ExceptionCatcherEnter )(
            IXCLRDataExceptionNotification4 * This,
            /* [in] */ IXCLRDataMethodInstance *catchingMethod,
            DWORD catcherNativeOffset);

        END_INTERFACE
    } IXCLRDataExceptionNotification4Vtbl;

    interface IXCLRDataExceptionNotification4
    {
        CONST_VTBL struct IXCLRDataExceptionNotification4Vtbl *lpVtbl;
    };

#ifdef COBJMACROS

#define IXCLRDataExceptionNotification4_QueryInterface(This,riid,ppvObject)	\
    ( (This)->lpVtbl -> QueryInterface(This,riid,ppvObject) )

#define IXCLRDataExceptionNotification4_AddRef(This)	\
    ( (This)->lpVtbl -> AddRef(This) )

#define IXCLRDataExceptionNotification4_Release(This)	\
    ( (This)->lpVtbl -> Release(This) )

#define IXCLRDataExceptionNotification4_OnCodeGenerated(This,method)	\
    ( (This)->lpVtbl -> OnCodeGenerated(This,method) )

#define IXCLRDataExceptionNotification4_OnCodeDiscarded(This,method)	\
    ( (This)->lpVtbl -> OnCodeDiscarded(This,method) )

#define IXCLRDataExceptionNotification4_OnProcessExecution(This,state)	\
    ( (This)->lpVtbl -> OnProcessExecution(This,state) )

#define IXCLRDataExceptionNotification4_OnTaskExecution(This,task,state)	\
    ( (This)->lpVtbl -> OnTaskExecution(This,task,state) )

#define IXCLRDataExceptionNotification4_OnModuleLoaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleLoaded(This,mod) )

#define IXCLRDataExceptionNotification4_OnModuleUnloaded(This,mod)	\
    ( (This)->lpVtbl -> OnModuleUnloaded(This,mod) )

#define IXCLRDataExceptionNotification4_OnTypeLoaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeLoaded(This,typeInst) )

#define IXCLRDataExceptionNotification4_OnTypeUnloaded(This,typeInst)	\
    ( (This)->lpVtbl -> OnTypeUnloaded(This,typeInst) )

#define IXCLRDataExceptionNotification4_OnAppDomainLoaded(This,domain)	\
    ( (This)->lpVtbl -> OnAppDomainLoaded(This,domain) )

#define IXCLRDataExceptionNotification4_OnAppDomainUnloaded(This,domain)	\
    ( (This)->lpVtbl -> OnAppDomainUnloaded(This,domain) )

#define IXCLRDataExceptionNotification4_OnException(This,exception)	\
    ( (This)->lpVtbl -> OnException(This,exception) )

#define IXCLRDataExceptionNotification4_OnGcEvent(This,gcEvtArgs)	\
    ( (This)->lpVtbl -> OnGcEvent(This,gcEvtArgs) )

#define IXCLRDataExceptionNotification4_ExceptionCatcherEnter(This,catchingMethod,catcherNativeOffset)	\
    ( (This)->lpVtbl -> ExceptionCatcherEnter(This,catchingMethod,catcherNativeOffset) )

#endif /* COBJMACROS */

#endif 	/* C style interface */

#endif 	/* __IXCLRDataExceptionNotification4_INTERFACE_DEFINED__ */

/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif

redpajama_set_name: RedPajamaGithub