Signed-off-by: Nikolay Sivov nsivov@codeweavers.com --- dlls/combase/combase.spec | 2 +- dlls/combase/marshal.c | 19 +++++++++++++++++++ dlls/ole32/marshal.c | 30 ------------------------------ dlls/ole32/ole32.spec | 2 +- 4 files changed, 21 insertions(+), 32 deletions(-)
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec index 56dc63c4f72..8c471f5ef69 100644 --- a/dlls/combase/combase.spec +++ b/dlls/combase/combase.spec @@ -109,7 +109,7 @@ @ stub CoGetErrorInfo @ stdcall CoGetInstanceFromFile(ptr ptr ptr long long wstr long ptr) @ stdcall CoGetInstanceFromIStorage(ptr ptr ptr long ptr long ptr) -@ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr) ole32.CoGetInterfaceAndReleaseStream +@ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr) @ stdcall CoGetMalloc(long ptr) @ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long) ole32.CoGetMarshalSizeMax @ stub CoGetModuleType diff --git a/dlls/combase/marshal.c b/dlls/combase/marshal.c index dfe6426db9a..54151e21c8e 100644 --- a/dlls/combase/marshal.c +++ b/dlls/combase/marshal.c @@ -21,6 +21,10 @@ #define COBJMACROS #include "objbase.h"
+#include "wine/debug.h" + +WINE_DEFAULT_DEBUG_CHANNEL(ole); + /*********************************************************************** * CoMarshalHresult (combase.@) */ @@ -36,3 +40,18 @@ HRESULT WINAPI CoUnmarshalHresult(IStream *stream, HRESULT *phresult) { return IStream_Read(stream, phresult, sizeof(*phresult), NULL); } + +/*********************************************************************** + * CoGetInterfaceAndReleaseStream (combase.@) + */ +HRESULT WINAPI CoGetInterfaceAndReleaseStream(IStream *stream, REFIID riid, void **obj) +{ + HRESULT hr; + + TRACE("%p, %s, %p\n", stream, debugstr_guid(riid), obj); + + if (!stream) return E_INVALIDARG; + hr = CoUnmarshalInterface(stream, riid, obj); + IStream_Release(stream); + return hr; +} diff --git a/dlls/ole32/marshal.c b/dlls/ole32/marshal.c index 90d24805952..51db5a7e699 100644 --- a/dlls/ole32/marshal.c +++ b/dlls/ole32/marshal.c @@ -2124,36 +2124,6 @@ HRESULT WINAPI CoMarshalInterThreadInterfaceInStream( return hres; }
-/*********************************************************************** - * CoGetInterfaceAndReleaseStream [OLE32.@] - * - * Unmarshalls an interface from a stream and then releases the stream. - * - * PARAMS - * pStm [I] Stream that contains the marshalled interface. - * riid [I] Interface identifier of the object to unmarshall. - * ppv [O] Address of pointer where the requested interface object will be stored. - * - * RETURNS - * Success: S_OK - * Failure: A COM error code - * - * SEE ALSO - * CoMarshalInterThreadInterfaceInStream() and CoUnmarshalInterface() - */ -HRESULT WINAPI CoGetInterfaceAndReleaseStream(LPSTREAM pStm, REFIID riid, - LPVOID *ppv) -{ - HRESULT hres; - - TRACE("(%p, %s, %p)\n", pStm, debugstr_guid(riid), ppv); - - if(!pStm) return E_INVALIDARG; - hres = CoUnmarshalInterface(pStm, riid, ppv); - IStream_Release(pStm); - return hres; -} - static HRESULT WINAPI StdMarshalCF_QueryInterface(LPCLASSFACTORY iface, REFIID riid, LPVOID *ppv) { diff --git a/dlls/ole32/ole32.spec b/dlls/ole32/ole32.spec index 001e7b7ad2b..d5e5607e036 100644 --- a/dlls/ole32/ole32.spec +++ b/dlls/ole32/ole32.spec @@ -37,7 +37,7 @@ @ stdcall CoGetDefaultContext(long ptr ptr) combase.CoGetDefaultContext @ stdcall CoGetInstanceFromFile(ptr ptr ptr long long wstr long ptr) combase.CoGetInstanceFromFile @ stdcall CoGetInstanceFromIStorage(ptr ptr ptr long ptr long ptr) combase.CoGetInstanceFromIStorage -@ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr) +@ stdcall CoGetInterfaceAndReleaseStream(ptr ptr ptr) combase.CoGetInterfaceAndReleaseStream @ stdcall CoGetMalloc(long ptr) combase.CoGetMalloc @ stdcall CoGetMarshalSizeMax(ptr ptr ptr long ptr long) @ stdcall CoGetObject(wstr ptr ptr ptr)