Huw Davies : oleaut32: Implement proxy / stub for ITypeInfo_GetDllEntry.
Alexandre Julliard
julliard at winehq.org
Fri Feb 11 11:16:35 CST 2011
Module: wine
Branch: master
Commit: 7cdc8bb418b5213e9ecb5786479de49cb051febd
URL: http://source.winehq.org/git/wine.git/?a=commit;h=7cdc8bb418b5213e9ecb5786479de49cb051febd
Author: Huw Davies <huw at codeweavers.com>
Date: Fri Feb 11 10:08:43 2011 +0000
oleaut32: Implement proxy / stub for ITypeInfo_GetDllEntry.
---
dlls/oleaut32/usrmarshal.c | 56 +++++++++++++++++++++++++++++---------------
1 files changed, 37 insertions(+), 19 deletions(-)
diff --git a/dlls/oleaut32/usrmarshal.c b/dlls/oleaut32/usrmarshal.c
index f83b908..d6e4bdd 100644
--- a/dlls/oleaut32/usrmarshal.c
+++ b/dlls/oleaut32/usrmarshal.c
@@ -1696,29 +1696,47 @@ HRESULT __RPC_STUB ITypeInfo_GetDocumentation_Stub(ITypeInfo *This, MEMBERID mem
return ITypeInfo_GetDocumentation(This, memid, name, doc_string, help_context, help_file);
}
-HRESULT CALLBACK ITypeInfo_GetDllEntry_Proxy(
- ITypeInfo* This,
- MEMBERID memid,
- INVOKEKIND invKind,
- BSTR* pBstrDllName,
- BSTR* pBstrName,
- WORD* pwOrdinal)
+HRESULT CALLBACK ITypeInfo_GetDllEntry_Proxy(ITypeInfo *This, MEMBERID memid,
+ INVOKEKIND invkind, BSTR *dll_name,
+ BSTR* name, WORD *ordinal)
{
- FIXME("not implemented\n");
- return E_FAIL;
+ DWORD flags = 0;
+ BSTR dummy_dll_name, dummy_name;
+ WORD dummy_ordinal;
+ HRESULT hr;
+ TRACE("(%p, %08x, %x, %p, %p, %p)\n", This, memid, invkind, dll_name, name, ordinal);
+
+ if(!dll_name) dll_name = &dummy_dll_name;
+ else flags = 1;
+
+ if(!name) name = &dummy_name;
+ else flags |= 2;
+
+ if(!ordinal) ordinal = &dummy_ordinal;
+ else flags |= 4;
+
+ hr = ITypeInfo_RemoteGetDllEntry_Proxy(This, memid, invkind, flags, dll_name, name, ordinal);
+
+ /* We don't need to free the dummy BSTRs since the stub ensures that these will be NULLs. */
+
+ return hr;
}
-HRESULT __RPC_STUB ITypeInfo_GetDllEntry_Stub(
- ITypeInfo* This,
- MEMBERID memid,
- INVOKEKIND invKind,
- DWORD refPtrFlags,
- BSTR* pBstrDllName,
- BSTR* pBstrName,
- WORD* pwOrdinal)
+HRESULT __RPC_STUB ITypeInfo_GetDllEntry_Stub(ITypeInfo *This, MEMBERID memid,
+ INVOKEKIND invkind, DWORD flags,
+ BSTR *dll_name, BSTR *name,
+ WORD *ordinal)
{
- FIXME("not implemented\n");
- return E_FAIL;
+ TRACE("(%p, %08x, %x, %p, %p, %p)\n", This, memid, invkind, dll_name, name, ordinal);
+
+ *dll_name = *name = NULL;
+ *ordinal = 0;
+
+ if(!(flags & 1)) dll_name = NULL;
+ if(!(flags & 2)) name = NULL;
+ if(!(flags & 4)) ordinal = NULL;
+
+ return ITypeInfo_GetDllEntry(This, memid, invkind, dll_name, name, ordinal);
}
HRESULT CALLBACK ITypeInfo_AddressOfMember_Proxy(
More information about the wine-cvs
mailing list