Vincent Povirk : mscoree: Use the . NET 4 interfaces to implement CorBindToRuntimeEx.
Alexandre Julliard
julliard at winehq.org
Tue Nov 9 13:13:24 CST 2010
Module: wine
Branch: master
Commit: 601b240f1e3649afac64d48e4966d16cf59c165d
URL: http://source.winehq.org/git/wine.git/?a=commit;h=601b240f1e3649afac64d48e4966d16cf59c165d
Author: Vincent Povirk <vincent at codeweavers.com>
Date: Fri Oct 1 15:37:25 2010 -0500
mscoree: Use the .NET 4 interfaces to implement CorBindToRuntimeEx.
---
dlls/mscoree/corruntimehost.c | 27 ---------------------------
dlls/mscoree/mscoree_main.c | 20 ++++++++++++++------
dlls/mscoree/mscoree_private.h | 2 --
3 files changed, 14 insertions(+), 35 deletions(-)
diff --git a/dlls/mscoree/corruntimehost.c b/dlls/mscoree/corruntimehost.c
index 831f6de..1e9cc7f 100644
--- a/dlls/mscoree/corruntimehost.c
+++ b/dlls/mscoree/corruntimehost.c
@@ -42,7 +42,6 @@ struct RuntimeHost
const CLRRuntimeInfo *version;
const loaded_mono *mono;
LONG ref;
- BOOL legacy; /* if True, this was created by create_corruntimehost, and Release frees it */
};
static inline RuntimeHost *impl_from_ICorRuntimeHost( ICorRuntimeHost *iface )
@@ -86,10 +85,6 @@ static ULONG WINAPI corruntimehost_Release(ICorRuntimeHost* iface)
ULONG ref;
ref = InterlockedDecrement( &This->ref );
- if ( ref == 0 && This->legacy )
- {
- RuntimeHost_Destroy(This);
- }
return ref;
}
@@ -289,7 +284,6 @@ HRESULT RuntimeHost_Construct(const CLRRuntimeInfo *runtime_version,
This->ref = 1;
This->version = runtime_version;
This->mono = loaded_mono;
- This->legacy = FALSE;
*result = This;
@@ -318,24 +312,3 @@ HRESULT RuntimeHost_Destroy(RuntimeHost *This)
HeapFree( GetProcessHeap(), 0, This );
return S_OK;
}
-
-IUnknown* create_corruntimehost(void)
-{
- RuntimeHost *This;
- IUnknown *result;
-
- if (FAILED(RuntimeHost_Construct(NULL, NULL, &This)))
- return NULL;
-
- This->legacy = TRUE;
-
- if (FAILED(RuntimeHost_GetInterface(This, &CLSID_CorRuntimeHost, &IID_IUnknown, (void**)&result)))
- {
- RuntimeHost_Destroy(This);
- return NULL;
- }
-
- FIXME("return iface %p\n", result);
-
- return result;
-}
diff --git a/dlls/mscoree/mscoree_main.c b/dlls/mscoree/mscoree_main.c
index d2d7445..e528360 100644
--- a/dlls/mscoree/mscoree_main.c
+++ b/dlls/mscoree/mscoree_main.c
@@ -628,16 +628,24 @@ HRESULT WINAPI LoadStringRC(UINT resId, LPWSTR pBuffer, int iBufLen, int bQuiet)
HRESULT WINAPI CorBindToRuntimeEx(LPWSTR szVersion, LPWSTR szBuildFlavor, DWORD nflags, REFCLSID rslsid,
REFIID riid, LPVOID *ppv)
{
- FIXME("%s %s %d %s %s %p\n", debugstr_w(szVersion), debugstr_w(szBuildFlavor), nflags, debugstr_guid( rslsid ),
+ HRESULT ret;
+ ICLRRuntimeInfo *info;
+
+ TRACE("%s %s %d %s %s %p\n", debugstr_w(szVersion), debugstr_w(szBuildFlavor), nflags, debugstr_guid( rslsid ),
debugstr_guid( riid ), ppv);
- if(IsEqualGUID( riid, &IID_ICorRuntimeHost ))
+ *ppv = NULL;
+
+ ret = get_runtime_info(NULL, szVersion, NULL, nflags, 0, TRUE, &info);
+
+ if (SUCCEEDED(ret))
{
- *ppv = create_corruntimehost();
- return S_OK;
+ ret = ICLRRuntimeInfo_GetInterface(info, rslsid, riid, ppv);
+
+ ICLRRuntimeInfo_Release(info);
}
- *ppv = NULL;
- return E_NOTIMPL;
+
+ return ret;
}
HRESULT WINAPI CorBindToCurrentRuntime(LPCWSTR filename, REFCLSID rclsid, REFIID riid, LPVOID *ppv)
diff --git a/dlls/mscoree/mscoree_private.h b/dlls/mscoree/mscoree_private.h
index 62fa0bf..a77de0a 100644
--- a/dlls/mscoree/mscoree_private.h
+++ b/dlls/mscoree/mscoree_private.h
@@ -20,8 +20,6 @@
#ifndef __MSCOREE_PRIVATE__
#define __MSCOREE_PRIVATE__
-extern IUnknown* create_corruntimehost(void);
-
extern HRESULT CLRMetaHost_CreateInstance(REFIID riid, void **ppobj);
typedef struct tagASSEMBLY ASSEMBLY;
More information about the wine-cvs
mailing list