Alistair Leslie-Hughes : mscoree: Add support for ICLRMetaHostPolicy interface.
Alexandre Julliard
julliard at winehq.org
Thu Oct 17 13:51:51 CDT 2013
Module: wine
Branch: master
Commit: 3988ee946509478f39f8aa0af123f3709133a5ff
URL: http://source.winehq.org/git/wine.git/?a=commit;h=3988ee946509478f39f8aa0af123f3709133a5ff
Author: Alistair Leslie-Hughes <leslie_alistair at hotmail.com>
Date: Wed Oct 2 15:48:32 2013 +1000
mscoree: Add support for ICLRMetaHostPolicy interface.
---
dlls/mscoree/metahost.c | 64 ++++++++++++++++++++++++++++++++++++++++
dlls/mscoree/mscoree_main.c | 2 +
dlls/mscoree/mscoree_private.h | 1 +
3 files changed, 67 insertions(+), 0 deletions(-)
diff --git a/dlls/mscoree/metahost.c b/dlls/mscoree/metahost.c
index f84e455..fc00522 100644
--- a/dlls/mscoree/metahost.c
+++ b/dlls/mscoree/metahost.c
@@ -1220,6 +1220,70 @@ HRESULT CLRMetaHost_CreateInstance(REFIID riid, void **ppobj)
return ICLRMetaHost_QueryInterface(&GlobalCLRMetaHost.ICLRMetaHost_iface, riid, ppobj);
}
+struct CLRMetaHostPolicy
+{
+ ICLRMetaHostPolicy ICLRMetaHostPolicy_iface;
+};
+
+static struct CLRMetaHostPolicy GlobalCLRMetaHostPolicy;
+
+static HRESULT WINAPI metahostpolicy_QueryInterface(ICLRMetaHostPolicy *iface, REFIID riid, void **obj)
+{
+ TRACE("%s %p\n", debugstr_guid(riid), obj);
+
+ if ( IsEqualGUID( riid, &IID_ICLRMetaHostPolicy ) ||
+ IsEqualGUID( riid, &IID_IUnknown ) )
+ {
+ ICLRMetaHostPolicy_AddRef( iface );
+ *obj = iface;
+ return S_OK;
+ }
+
+ FIXME("Unsupported interface %s\n", debugstr_guid(riid));
+
+ *obj = NULL;
+ return E_NOINTERFACE;
+}
+
+static ULONG WINAPI metahostpolicy_AddRef(ICLRMetaHostPolicy *iface)
+{
+ return 2;
+}
+
+static ULONG WINAPI metahostpolicy_Release(ICLRMetaHostPolicy *iface)
+{
+ return 1;
+}
+
+static HRESULT WINAPI metahostpolicy_GetRequestedRuntime(ICLRMetaHostPolicy *iface, METAHOST_POLICY_FLAGS dwPolicyFlags,
+ LPCWSTR pwzBinary, IStream *pCfgStream, LPWSTR pwzVersion, DWORD *pcchVersion,
+ LPWSTR pwzImageVersion, DWORD *pcchImageVersion, DWORD *pdwConfigFlags, REFIID riid,
+ LPVOID *ppRuntime)
+{
+ FIXME("%d %p %p %p %p %p %p %p %s %p\n", dwPolicyFlags, pwzBinary, pCfgStream,
+ pwzVersion, pcchVersion, pwzImageVersion, pcchImageVersion, pdwConfigFlags,
+ debugstr_guid(riid), ppRuntime);
+
+ return E_NOTIMPL;
+}
+
+static const struct ICLRMetaHostPolicyVtbl CLRMetaHostPolicy_vtbl =
+{
+ metahostpolicy_QueryInterface,
+ metahostpolicy_AddRef,
+ metahostpolicy_Release,
+ metahostpolicy_GetRequestedRuntime
+};
+
+static struct CLRMetaHostPolicy GlobalCLRMetaHostPolicy = {
+ { &CLRMetaHostPolicy_vtbl }
+};
+
+HRESULT CLRMetaHostPolicy_CreateInstance(REFIID riid, void **ppobj)
+{
+ return ICLRMetaHostPolicy_QueryInterface(&GlobalCLRMetaHostPolicy.ICLRMetaHostPolicy_iface, riid, ppobj);
+}
+
HRESULT get_file_from_strongname(WCHAR* stringnameW, WCHAR* assemblies_path, int path_length)
{
HRESULT hr=S_OK;
diff --git a/dlls/mscoree/mscoree_main.c b/dlls/mscoree/mscoree_main.c
index 772ba01..2ca0ce7 100644
--- a/dlls/mscoree/mscoree_main.c
+++ b/dlls/mscoree/mscoree_main.c
@@ -588,6 +588,8 @@ HRESULT WINAPI CLRCreateInstance(REFCLSID clsid, REFIID riid, LPVOID *ppInterfac
if (IsEqualGUID(clsid, &CLSID_CLRMetaHost))
return CLRMetaHost_CreateInstance(riid, ppInterface);
+ if (IsEqualGUID(clsid, &CLSID_CLRMetaHostPolicy))
+ return CLRMetaHostPolicy_CreateInstance(riid, ppInterface);
FIXME("not implemented for class %s\n", debugstr_guid(clsid));
diff --git a/dlls/mscoree/mscoree_private.h b/dlls/mscoree/mscoree_private.h
index b66669c..dd5b1af 100644
--- a/dlls/mscoree/mscoree_private.h
+++ b/dlls/mscoree/mscoree_private.h
@@ -23,6 +23,7 @@
extern char *WtoA(LPCWSTR wstr) DECLSPEC_HIDDEN;
extern HRESULT CLRMetaHost_CreateInstance(REFIID riid, void **ppobj) DECLSPEC_HIDDEN;
+extern HRESULT CLRMetaHostPolicy_CreateInstance(REFIID riid, void **ppobj) DECLSPEC_HIDDEN;
extern HRESULT WINAPI CLRMetaHost_GetVersionFromFile(ICLRMetaHost* iface,
LPCWSTR pwzFilePath, LPWSTR pwzBuffer, DWORD *pcchBuffer) DECLSPEC_HIDDEN;
More information about the wine-cvs
mailing list