From 17bfeaf85d29ebf4d7e0e3e555c9587b5fc92067 Mon Sep 17 00:00:00 2001 From: Vincent Povirk Date: Sun, 3 Oct 2010 11:11:24 -0500 Subject: [PATCH 02/13] mscoree: Add stub implementation of ICLRRuntimeHost. --- dlls/mscoree/corruntimehost.c | 124 +++++++++++++++++++++++++++++++++++++++++ 1 files changed, 124 insertions(+), 0 deletions(-) diff --git a/dlls/mscoree/corruntimehost.c b/dlls/mscoree/corruntimehost.c index 1e9cc7f..cac9991 100644 --- a/dlls/mscoree/corruntimehost.c +++ b/dlls/mscoree/corruntimehost.c @@ -39,11 +39,17 @@ WINE_DEFAULT_DEBUG_CHANNEL( mscoree ); struct RuntimeHost { const struct ICorRuntimeHostVtbl *lpVtbl; + const struct ICLRRuntimeHostVtbl *lpCLRHostVtbl; const CLRRuntimeInfo *version; const loaded_mono *mono; LONG ref; }; +static inline RuntimeHost *impl_from_ICLRRuntimeHost( ICLRRuntimeHost *iface ) +{ + return (RuntimeHost *)((char*)iface - FIELD_OFFSET(RuntimeHost, lpCLRHostVtbl)); +} + static inline RuntimeHost *impl_from_ICorRuntimeHost( ICorRuntimeHost *iface ) { return (RuntimeHost *)((char*)iface - FIELD_OFFSET(RuntimeHost, lpVtbl)); @@ -271,6 +277,121 @@ static const struct ICorRuntimeHostVtbl corruntimehost_vtbl = corruntimehost_CurrentDomain }; +static HRESULT WINAPI CLRRuntimeHost_QueryInterface(ICLRRuntimeHost* iface, + REFIID riid, + void **ppvObject) +{ + RuntimeHost *This = impl_from_ICLRRuntimeHost( iface ); + TRACE("%p %s %p\n", This, debugstr_guid(riid), ppvObject); + + if ( IsEqualGUID( riid, &IID_ICLRRuntimeHost ) || + IsEqualGUID( riid, &IID_IUnknown ) ) + { + *ppvObject = iface; + } + else + { + FIXME("Unsupported interface %s\n", debugstr_guid(riid)); + return E_NOINTERFACE; + } + + ICLRRuntimeHost_AddRef( iface ); + + return S_OK; +} + +static ULONG WINAPI CLRRuntimeHost_AddRef(ICLRRuntimeHost* iface) +{ + RuntimeHost *This = impl_from_ICLRRuntimeHost( iface ); + return IUnknown_AddRef((IUnknown*)&This->lpVtbl); +} + +static ULONG WINAPI CLRRuntimeHost_Release(ICLRRuntimeHost* iface) +{ + RuntimeHost *This = impl_from_ICLRRuntimeHost( iface ); + return IUnknown_Release((IUnknown*)&This->lpVtbl); +} + +static HRESULT WINAPI CLRRuntimeHost_Start(ICLRRuntimeHost* iface) +{ + FIXME("(%p)\n", iface); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_Stop(ICLRRuntimeHost* iface) +{ + FIXME("(%p)\n", iface); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_SetHostControl(ICLRRuntimeHost* iface, + IHostControl *pHostControl) +{ + FIXME("(%p,%p)\n", iface, pHostControl); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_GetCLRControl(ICLRRuntimeHost* iface, + ICLRControl **pCLRControl) +{ + FIXME("(%p,%p)\n", iface, pCLRControl); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_UnloadAppDomain(ICLRRuntimeHost* iface, + DWORD dwAppDomainId, BOOL fWaitUntilDone) +{ + FIXME("(%p,%u,%i)\n", iface, dwAppDomainId, fWaitUntilDone); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_ExecuteInAppDomain(ICLRRuntimeHost* iface, + DWORD dwAppDomainId, FExecuteInAppDomainCallback pCallback, void *cookie) +{ + FIXME("(%p,%u,%p,%p)\n", iface, dwAppDomainId, pCallback, cookie); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_GetCurrentAppDomainId(ICLRRuntimeHost* iface, + DWORD *pdwAppDomainId) +{ + FIXME("(%p,%p)\n", iface, pdwAppDomainId); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_ExecuteApplication(ICLRRuntimeHost* iface, + LPCWSTR pwzAppFullName, DWORD dwManifestPaths, LPCWSTR *ppwzManifestPaths, + DWORD dwActivationData, LPCWSTR *ppwzActivationData, int *pReturnValue) +{ + FIXME("(%p,%s,%u,%u)\n", iface, debugstr_w(pwzAppFullName), dwManifestPaths, dwActivationData); + return E_NOTIMPL; +} + +static HRESULT WINAPI CLRRuntimeHost_ExecuteInDefaultAppDomain(ICLRRuntimeHost* iface, + LPCWSTR pwzAssemblyPath, LPCWSTR pwzTypeName, LPCWSTR pwzMethodName, + LPCWSTR pwzArgument, DWORD *pReturnValue) +{ + FIXME("(%p,%s,%s,%s,%s)\n", iface, debugstr_w(pwzAssemblyPath), + debugstr_w(pwzTypeName), debugstr_w(pwzMethodName), debugstr_w(pwzArgument)); + return E_NOTIMPL; +} + +static const struct ICLRRuntimeHostVtbl CLRHostVtbl = +{ + CLRRuntimeHost_QueryInterface, + CLRRuntimeHost_AddRef, + CLRRuntimeHost_Release, + CLRRuntimeHost_Start, + CLRRuntimeHost_Stop, + CLRRuntimeHost_SetHostControl, + CLRRuntimeHost_GetCLRControl, + CLRRuntimeHost_UnloadAppDomain, + CLRRuntimeHost_ExecuteInAppDomain, + CLRRuntimeHost_GetCurrentAppDomainId, + CLRRuntimeHost_ExecuteApplication, + CLRRuntimeHost_ExecuteInDefaultAppDomain +}; + HRESULT RuntimeHost_Construct(const CLRRuntimeInfo *runtime_version, const loaded_mono *loaded_mono, RuntimeHost** result) { @@ -281,6 +402,7 @@ HRESULT RuntimeHost_Construct(const CLRRuntimeInfo *runtime_version, return E_OUTOFMEMORY; This->lpVtbl = &corruntimehost_vtbl; + This->lpCLRHostVtbl = &CLRHostVtbl; This->ref = 1; This->version = runtime_version; This->mono = loaded_mono; @@ -296,6 +418,8 @@ HRESULT RuntimeHost_GetInterface(RuntimeHost *This, REFCLSID clsid, REFIID riid, if (IsEqualGUID(clsid, &CLSID_CorRuntimeHost)) unk = (IUnknown*)&This->lpVtbl; + else if (IsEqualGUID(clsid, &CLSID_CLRRuntimeHost)) + unk = (IUnknown*)&This->lpCLRHostVtbl; else unk = NULL; -- 1.7.1