mirror of
https://github.com/boku7/Loki
synced 2026-06-06 15:24:27 +00:00
270 lines
7.9 KiB
C
270 lines
7.9 KiB
C
#pragma once
|
|
#include <windows.h>
|
|
#include <metahost.h>
|
|
|
|
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;
|
|
|