Click here to Skip to main content
15,894,539 members
Articles / General Programming / Debugging

A Mixed-Mode Stackwalk with the IDebugClient Interface

Rate me:
Please Sign up or sign in to vote.
4.90/5 (14 votes)
22 Apr 2012Ms-PL12 min read 42.1K   1.4K   30  
A native stackwalk funtion like Stackwalk64 cannot handle mixed-mode stacks, since managed code does not use the stack in the same way as native code does. There is an API called IDebugClient, that does walk a mixed-mode stack correctly, which we will explore.

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


 /* File created by MIDL compiler version 7.00.0500 */
/* at Fri Jan 06 11:05:40 2012
 */
/* Compiler settings for xclrdata.idl:
    Oicf, W1, Zp8, env=Win32 (32b run)
    protocol : dce , ms_ext, c_ext, robust
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
         __declspec(uuid()), __declspec(selectany), __declspec(novtable)
         DECLSPEC_UUID(), MIDL_INTERFACE()
*/
//@@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 __IXCLRDataProcess_FWD_DEFINED__
#define __IXCLRDataProcess_FWD_DEFINED__
typedef interface IXCLRDataProcess IXCLRDataProcess;
#endif 	/* __IXCLRDataProcess_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 __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 __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__ */


/* 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















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][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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
    } 	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;



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 __IXCLRDataProcess_INTERFACE_DEFINED__
#define __IXCLRDataProcess_INTERFACE_DEFINED__

/* interface IXCLRDataProcess */
/* [uuid][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;
        
    };
    
#else 	/* C style interface */

    typedef struct IXCLRDataProcessVtbl
    {
        BEGIN_INTERFACE
        
        HRESULT ( STDMETHODCALLTYPE *QueryInterface )( 
            IXCLRDataProcess * This,
            /* [in] */ REFIID riid,
            /* [iid_is][out] */ 
            __RPC__deref_out  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);
        
        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) ) 

#endif /* COBJMACROS */


#endif 	/* C style interface */




#endif 	/* __IXCLRDataProcess_INTERFACE_DEFINED__ */


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

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



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 __IXCLRDataAppDomain_INTERFACE_DEFINED__
#define __IXCLRDataAppDomain_INTERFACE_DEFINED__

/* interface IXCLRDataAppDomain */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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_0003 */
/* [local] */ 

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0003_0001
    {	CLRDATA_ASSEMBLY_DEFAULT	= 0
    } 	CLRDataAssemblyFlag;



extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0003_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0003_v0_0_s_ifspec;

#ifndef __IXCLRDataAssembly_INTERFACE_DEFINED__
#define __IXCLRDataAssembly_INTERFACE_DEFINED__

/* interface IXCLRDataAssembly */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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_0004 */
/* [local] */ 

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0004_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_0004_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_0004_0003
    {
    CLRDATA_ADDRESS base;
    ULONG32 length;
    CLRDataModuleExtentType type;
    } 	CLRDATA_MODULE_EXTENT;

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

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



extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0004_v0_0_c_ifspec;
extern RPC_IF_HANDLE __MIDL_itf_xclrdata_0000_0004_v0_0_s_ifspec;

#ifndef __IXCLRDataModule_INTERFACE_DEFINED__
#define __IXCLRDataModule_INTERFACE_DEFINED__

/* interface IXCLRDataModule */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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__ */


#ifndef __IXCLRDataTypeDefinition_INTERFACE_DEFINED__
#define __IXCLRDataTypeDefinition_INTERFACE_DEFINED__

/* interface IXCLRDataTypeDefinition */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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__ */


#ifndef __IXCLRDataTypeInstance_INTERFACE_DEFINED__
#define __IXCLRDataTypeInstance_INTERFACE_DEFINED__

/* interface IXCLRDataTypeInstance */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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_0007 */
/* [local] */ 

typedef /* [public][public][public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0007_0001
    {	CLRDATA_SOURCE_TYPE_INVALID	= 0
    } 	CLRDataSourceType;

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0007_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_0007_0003
    {
    ULONG32 ilOffset;
    CLRDATA_ADDRESS startAddress;
    CLRDATA_ADDRESS endAddress;
    CLRDataSourceType type;
    } 	CLRDATA_IL_ADDRESS_MAP;

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0007_0004
    {	CLRDATA_METHOD_DEFAULT	= 0,
	CLRDATA_METHOD_HAS_THIS	= 0x1
    } 	CLRDataMethodFlag;

typedef /* [public][public][public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0007_0005
    {	CLRDATA_METHDEF_IL	= 0
    } 	CLRDataMethodDefinitionExtentType;

typedef /* [public][public] */ struct __MIDL___MIDL_itf_xclrdata_0000_0007_0006
    {
    CLRDATA_ADDRESS startAddress;
    CLRDATA_ADDRESS endAddress;
    ULONG32 enCVersion;
    CLRDataMethodDefinitionExtentType type;
    } 	CLRDATA_METHDEF_EXTENT;



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 __IXCLRDataMethodDefinition_INTERFACE_DEFINED__
#define __IXCLRDataMethodDefinition_INTERFACE_DEFINED__

/* interface IXCLRDataMethodDefinition */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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__ */


#ifndef __IXCLRDataMethodInstance_INTERFACE_DEFINED__
#define __IXCLRDataMethodInstance_INTERFACE_DEFINED__

/* interface IXCLRDataMethodInstance */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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_0009 */
/* [local] */ 

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0009_0001
    {	CLRDATA_TASK_DEFAULT	= 0,
	CLRDATA_TASK_WAITING_FOR_GC	= 0x1
    } 	CLRDataTaskFlag;



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 __IXCLRDataTask_INTERFACE_DEFINED__
#define __IXCLRDataTask_INTERFACE_DEFINED__

/* interface IXCLRDataTask */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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_0010 */
/* [local] */ 

typedef /* [public][public][public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0010_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_0010_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_0010_0003
    {	CLRDATA_STACK_WALK_REQUEST_SET_FIRST_FRAME	= 0xe1000000
    } 	CLRDataStackWalkRequest;

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0010_0004
    {	CLRDATA_STACK_SET_UNWIND_CONTEXT	= 0,
	CLRDATA_STACK_SET_CURRENT_CONTEXT	= 0x1
    } 	CLRDataStackSetContextFlag;



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 __IXCLRDataStackWalk_INTERFACE_DEFINED__
#define __IXCLRDataStackWalk_INTERFACE_DEFINED__

/* interface IXCLRDataStackWalk */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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__ */


#ifndef __IXCLRDataFrame_INTERFACE_DEFINED__
#define __IXCLRDataFrame_INTERFACE_DEFINED__

/* interface IXCLRDataFrame */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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_0012 */
/* [local] */ 

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0012_0001
    {	CLRDATA_EXCEPTION_DEFAULT	= 0,
	CLRDATA_EXCEPTION_NESTED	= 0x1,
	CLRDATA_EXCEPTION_PARTIAL	= 0x2
    } 	CLRDataExceptionStateFlag;

typedef /* [public][public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0012_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_0012_0003
    {	CLRDATA_EXSAME_SECOND_CHANCE	= 0,
	CLRDATA_EXSAME_FIRST_CHANCE	= 0x1
    } 	CLRDataExceptionSameFlag;



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 __IXCLRDataExceptionState_INTERFACE_DEFINED__
#define __IXCLRDataExceptionState_INTERFACE_DEFINED__

/* interface IXCLRDataExceptionState */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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_0013 */
/* [local] */ 

typedef /* [public] */ 
enum __MIDL___MIDL_itf_xclrdata_0000_0013_0001
    {	CLRDATA_VLOC_MEMORY	= 0,
	CLRDATA_VLOC_REGISTER	= 0x1
    } 	ClrDataValueLocationFlag;



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 __IXCLRDataValue_INTERFACE_DEFINED__
#define __IXCLRDataValue_INTERFACE_DEFINED__

/* interface IXCLRDataValue */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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__ */


#ifndef __IXCLRDataExceptionNotification_INTERFACE_DEFINED__
#define __IXCLRDataExceptionNotification_INTERFACE_DEFINED__

/* interface IXCLRDataExceptionNotification */
/* [uuid][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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][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,
            /* [iid_is][out] */ 
            __RPC__deref_out  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__ */


/* Additional Prototypes for ALL interfaces */

/* end of Additional Prototypes */

#ifdef __cplusplus
}
#endif

#endif


By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.

If a file you wish to view isn't highlighted, and is a text file (not binary), please let us know and we'll add colourisation support for it.

License

This article, along with any associated source code and files, is licensed under The Microsoft Public License (Ms-PL)


Written By
Architect Visma Software AB
Sweden Sweden
Mattias works at Visma, a leading Nordic ERP solution provider. He has good knowledge in C++/.Net development, test tool development, and debugging. His great passion is memory dump analysis. He likes giving talks and courses.

Comments and Discussions