#pragma once #include #include typedef struct _AppDomain IAppDomain; typedef struct _Assembly IAssembly; typedef struct _Type IType; typedef struct _MethodInfo IMethodInfo; static GUID xIID_AppDomain = { 0x05F696DC, 0x2B29, 0x3663, { 0xAD, 0x8B, 0xC4,0x38, 0x9C, 0xF2, 0xA7, 0x13 } }; static GUID xCLSID_CLRMetaHost = { 0x9280188d, 0xe8e, 0x4867, { 0xb3, 0xc, 0x7f, 0xa8, 0x38, 0x84, 0xe8, 0xde } }; static GUID xIID_ICLRMetaHost = { 0xD332DB9E, 0xB9B3, 0x4125, { 0x82, 0x07, 0xA1, 0x48, 0x84, 0xF5, 0x32, 0x16 } }; static GUID xIID_ICLRRuntimeInfo = { 0xBD39D1D2, 0xBA2F, 0x486a, { 0x89, 0xB0, 0xB4, 0xB0, 0xCB, 0x46, 0x68, 0x91 } }; static GUID xIID_ICorRuntimeHost = { 0xcb2f6722, 0xab3a, 0x11d2, { 0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e } }; static GUID xCLSID_CorRuntimeHost = { 0xcb2f6723, 0xab3a, 0x11d2, { 0x9c, 0x40, 0x00, 0xc0, 0x4f, 0xa3, 0x0a, 0x3e } }; #define DUMMY_METHOD(x) HRESULT ( STDMETHODCALLTYPE *dummy_##x )(IAppDomain *This) typedef struct _AppDomainVtbl { BEGIN_INTERFACE HRESULT(STDMETHODCALLTYPE* QueryInterface)( IAppDomain* This, /* [in] */ REFIID riid, /* [iid_is][out] */ void** ppvObject); ULONG(STDMETHODCALLTYPE* AddRef)( IAppDomain* This); ULONG(STDMETHODCALLTYPE* Release)( IAppDomain* This); DUMMY_METHOD(GetTypeInfoCount); DUMMY_METHOD(GetTypeInfo); DUMMY_METHOD(GetIDsOfNames); DUMMY_METHOD(Invoke); DUMMY_METHOD(ToString); DUMMY_METHOD(Equals); DUMMY_METHOD(GetHashCode); DUMMY_METHOD(GetType); DUMMY_METHOD(InitializeLifetimeService); DUMMY_METHOD(GetLifetimeService); DUMMY_METHOD(Evidence); DUMMY_METHOD(add_DomainUnload); DUMMY_METHOD(remove_DomainUnload); DUMMY_METHOD(add_AssemblyLoad); DUMMY_METHOD(remove_AssemblyLoad); DUMMY_METHOD(add_ProcessExit); DUMMY_METHOD(remove_ProcessExit); DUMMY_METHOD(add_TypeResolve); DUMMY_METHOD(remove_TypeResolve); DUMMY_METHOD(add_ResourceResolve); DUMMY_METHOD(remove_ResourceResolve); DUMMY_METHOD(add_AssemblyResolve); DUMMY_METHOD(remove_AssemblyResolve); DUMMY_METHOD(add_UnhandledException); DUMMY_METHOD(remove_UnhandledException); DUMMY_METHOD(DefineDynamicAssembly); DUMMY_METHOD(DefineDynamicAssembly_2); DUMMY_METHOD(DefineDynamicAssembly_3); DUMMY_METHOD(DefineDynamicAssembly_4); DUMMY_METHOD(DefineDynamicAssembly_5); DUMMY_METHOD(DefineDynamicAssembly_6); DUMMY_METHOD(DefineDynamicAssembly_7); DUMMY_METHOD(DefineDynamicAssembly_8); DUMMY_METHOD(DefineDynamicAssembly_9); DUMMY_METHOD(CreateInstance); DUMMY_METHOD(CreateInstanceFrom); DUMMY_METHOD(CreateInstance_2); DUMMY_METHOD(CreateInstanceFrom_2); DUMMY_METHOD(CreateInstance_3); DUMMY_METHOD(CreateInstanceFrom_3); DUMMY_METHOD(Load); DUMMY_METHOD(Load_2); HRESULT(STDMETHODCALLTYPE* Load_3)( IAppDomain* This, SAFEARRAY* rawAssembly, IAssembly** pRetVal); DUMMY_METHOD(Load_4); DUMMY_METHOD(Load_5); DUMMY_METHOD(Load_6); DUMMY_METHOD(Load_7); DUMMY_METHOD(ExecuteAssembly); DUMMY_METHOD(ExecuteAssembly_2); DUMMY_METHOD(ExecuteAssembly_3); DUMMY_METHOD(FriendlyName); DUMMY_METHOD(BaseDirectory); DUMMY_METHOD(RelativeSearchPath); DUMMY_METHOD(ShadowCopyFiles); DUMMY_METHOD(GetAssemblies); DUMMY_METHOD(AppendPrivatePath); DUMMY_METHOD(ClearPrivatePath); DUMMY_METHOD(SetShadowCopyPath); DUMMY_METHOD(ClearShadowCopyPath); DUMMY_METHOD(SetCachePath); DUMMY_METHOD(SetData); DUMMY_METHOD(GetData); DUMMY_METHOD(SetAppDomainPolicy); DUMMY_METHOD(SetThreadPrincipal); DUMMY_METHOD(SetPrincipalPolicy); DUMMY_METHOD(DoCallBack); DUMMY_METHOD(DynamicDirectory); END_INTERFACE } AppDomainVtbl; typedef struct _AppDomain { AppDomainVtbl* lpVtbl; } AppDomain; typedef struct _AssemblyVtbl { BEGIN_INTERFACE HRESULT(STDMETHODCALLTYPE* QueryInterface)( IAssembly* This, REFIID riid, void** ppvObject); ULONG(STDMETHODCALLTYPE* AddRef)( IAssembly* This); ULONG(STDMETHODCALLTYPE* Release)( IAssembly* This); DUMMY_METHOD(GetTypeInfoCount); DUMMY_METHOD(GetTypeInfo); DUMMY_METHOD(GetIDsOfNames); DUMMY_METHOD(Invoke); DUMMY_METHOD(ToString); DUMMY_METHOD(Equals); DUMMY_METHOD(GetHashCode); DUMMY_METHOD(GetType); DUMMY_METHOD(CodeBase); DUMMY_METHOD(EscapedCodeBase); DUMMY_METHOD(GetName); DUMMY_METHOD(GetName_2); DUMMY_METHOD(FullName); HRESULT(STDMETHODCALLTYPE* EntryPoint)( IAssembly* This, IMethodInfo** pRetVal); HRESULT(STDMETHODCALLTYPE* GetType_2)( IAssembly* This, BSTR name, IType** pRetVal); DUMMY_METHOD(GetType_3); DUMMY_METHOD(GetExportedTypes); DUMMY_METHOD(GetTypes); DUMMY_METHOD(GetManifestResourceStream); DUMMY_METHOD(GetManifestResourceStream_2); DUMMY_METHOD(GetFile); DUMMY_METHOD(GetFiles); DUMMY_METHOD(GetFiles_2); DUMMY_METHOD(GetManifestResourceNames); DUMMY_METHOD(GetManifestResourceInfo); DUMMY_METHOD(Location); DUMMY_METHOD(Evidence); DUMMY_METHOD(GetCustomAttributes); DUMMY_METHOD(GetCustomAttributes_2); DUMMY_METHOD(IsDefined); DUMMY_METHOD(GetObjectData); DUMMY_METHOD(add_ModuleResolve); DUMMY_METHOD(remove_ModuleResolve); DUMMY_METHOD(GetType_4); DUMMY_METHOD(GetSatelliteAssembly); DUMMY_METHOD(GetSatelliteAssembly_2); DUMMY_METHOD(LoadModule); DUMMY_METHOD(LoadModule_2); DUMMY_METHOD(CreateInstance); DUMMY_METHOD(CreateInstance_2); DUMMY_METHOD(CreateInstance_3); DUMMY_METHOD(GetLoadedModules); DUMMY_METHOD(GetLoadedModules_2); DUMMY_METHOD(GetModules); DUMMY_METHOD(GetModules_2); DUMMY_METHOD(GetModule); DUMMY_METHOD(GetReferencedAssemblies); DUMMY_METHOD(GlobalAssemblyCache); END_INTERFACE } AssemblyVtbl; typedef struct _Assembly { AssemblyVtbl* lpVtbl; } Assembly; typedef struct _MethodInfoVtbl { BEGIN_INTERFACE HRESULT(STDMETHODCALLTYPE* QueryInterface)( IMethodInfo* This, /* [in] */ REFIID riid, /* [iid_is][out] */ __RPC__deref_out void** ppvObject); ULONG(STDMETHODCALLTYPE* AddRef)( IMethodInfo* This); ULONG(STDMETHODCALLTYPE* Release)( IMethodInfo* This); DUMMY_METHOD(GetTypeInfoCount); DUMMY_METHOD(GetTypeInfo); DUMMY_METHOD(GetIDsOfNames); DUMMY_METHOD(Invoke); DUMMY_METHOD(ToString); DUMMY_METHOD(Equals); DUMMY_METHOD(GetHashCode); DUMMY_METHOD(GetType); DUMMY_METHOD(MemberType); DUMMY_METHOD(name); DUMMY_METHOD(DeclaringType); DUMMY_METHOD(ReflectedType); DUMMY_METHOD(GetCustomAttributes); DUMMY_METHOD(GetCustomAttributes_2); DUMMY_METHOD(IsDefined); HRESULT(STDMETHODCALLTYPE* GetParameters)( IMethodInfo* This, SAFEARRAY** pRetVal); DUMMY_METHOD(GetMethodImplementationFlags); DUMMY_METHOD(MethodHandle); DUMMY_METHOD(Attributes); DUMMY_METHOD(CallingConvention); DUMMY_METHOD(Invoke_2); DUMMY_METHOD(IsPublic); DUMMY_METHOD(IsPrivate); DUMMY_METHOD(IsFamily); DUMMY_METHOD(IsAssembly); DUMMY_METHOD(IsFamilyAndAssembly); DUMMY_METHOD(IsFamilyOrAssembly); DUMMY_METHOD(IsStatic); DUMMY_METHOD(IsFinal); DUMMY_METHOD(IsVirtual); DUMMY_METHOD(IsHideBySig); DUMMY_METHOD(IsAbstract); DUMMY_METHOD(IsSpecialName); DUMMY_METHOD(IsConstructor); HRESULT(STDMETHODCALLTYPE* Invoke_3)( IMethodInfo* This, VARIANT obj, SAFEARRAY* parameters, VARIANT* ret); DUMMY_METHOD(returnType); DUMMY_METHOD(ReturnTypeCustomAttributes); DUMMY_METHOD(GetBaseDefinition); END_INTERFACE } MethodInfoVtbl; typedef struct _MethodInfo { MethodInfoVtbl* lpVtbl; } MethodInfo;