Module: wine Branch: master Commit: 7cdc8bb418b5213e9ecb5786479de49cb051febd URL: http://source.winehq.org/git/wine.git/?a=commit;h=7cdc8bb418b5213e9ecb578647...
Author: Huw Davies huw@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(