- Add some function declarations to objbase.h.
- Add stubs for server ref counting.
- Implement HRESULT marshaling.
diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index 046242f..c2f4fe4 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -2249,3 +2249,21 @@
FIXME("\n");
return S_OK;
}
+
+/***********************************************************************
+ * CoAddRefServerProcess [OLE32.@]
+ */
+ULONG WINAPI CoAddRefServerProcess(void)
+{
+ FIXME("\n");
+ return 2;
+}
+
+/***********************************************************************
+ * CoReleaseServerProcess [OLE32.@]
+ */
+ULONG WINAPI CoReleaseServerProcess(void)
+{
+ FIXME("\n");
+ return 1;
+}
diff --git a/dlls/ole32/marshal.c b/dlls/ole32/marshal.c
index 9753809..b733028 100644
--- a/dlls/ole32/marshal.c
+++ b/dlls/ole32/marshal.c
@@ -763,3 +763,47 @@
*ppv = &pdfmarshalcfvtbl;
return S_OK;
}
+
+/***********************************************************************
+ * CoMarshalHresult [OLE32.@]
+ *
+ * Marshals an HRESULT value into a stream.
+ *
+ * PARAMS
+ * pStm [I] Stream that hresult will be marshaled into.
+ * hresult [I] HRESULT to be marshaled.
+ *
+ * RETURNS
+ * Success: S_OK
+ * Failure: A COM error code
+ *
+ * SEE
+ * CoUnmarshalHresult().
+ */
+HRESULT WINAPI
+CoMarshalHresult(LPSTREAM pStm, HRESULT hresult)
+{
+ return IStream_Write(pStm, &hresult, sizeof(hresult), NULL);
+}
+
+/***********************************************************************
+ * CoUnmarshalHresult [OLE32.@]
+ *
+ * Unmarshals an HRESULT value from a stream.
+ *
+ * PARAMS
+ * pStm [I] Stream that hresult will be unmarshaled from.
+ * phresult [I] Pointer to HRESULT where the value will be unmarshaled to.
+ *
+ * RETURNS
+ * Success: S_OK
+ * Failure: A COM error code
+ *
+ * SEE
+ * CoMarshalHresult().
+ */
+HRESULT WINAPI
+CoUnmarshalHresult(LPSTREAM pStm, HRESULT * phresult)
+{
+ return IStream_Read(pStm, phresult, sizeof(*phresult), NULL);
+}
diff --git a/dlls/ole32/ole32.spec b/dlls/ole32/ole32.spec
index eeff473..2dcb5cb 100644
--- a/dlls/ole32/ole32.spec
+++ b/dlls/ole32/ole32.spec
@@ -5,7 +5,7 @@
@ stub CLIPFORMAT_UserUnmarshal
@ stdcall CLSIDFromProgID(wstr ptr)
@ stdcall CLSIDFromString(wstr ptr)
-@ stub CoAddRefServerProcess
+@ stdcall CoAddRefServerProcess()
@ stdcall CoBuildVersion()
@ stub CoCopyProxy #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr)
@@ -44,7 +44,7 @@
@ stdcall CoIsOle1Class (ptr)
@ stdcall CoLoadLibrary(wstr long)
@ stdcall CoLockObjectExternal(ptr long long)
-@ stub CoMarshalHresult #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
+@ stdcall CoMarshalHresult(ptr long)
@ stdcall CoMarshalInterThreadInterfaceInStream(ptr ptr ptr)
@ stdcall CoMarshalInterface(ptr ptr ptr long ptr long)
@ stub CoQueryAuthenticationServices
@@ -58,7 +58,7 @@
@ stub CoRegisterPSClsid #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
@ stub CoRegisterSurrogate
@ stdcall CoReleaseMarshalData(ptr)
-@ stub CoReleaseServerProcess #@ stdcall () return 0,ERR_NOTIMPLEMENTED
+@ stdcall CoReleaseServerProcess()
@ stdcall CoResumeClassObjects()
@ stub CoRevertToSelf #@ stdcall () return 0,ERR_NOTIMPLEMENTED
@ stdcall CoRevokeClassObject(long)
@@ -73,7 +73,7 @@
@ stdcall CoTreatAsClass(ptr ptr)
@ stdcall CoUninitialize()
@ stub CoUnloadingWOW
-@ stub CoUnmarshalHresult #@ stdcall (ptr ptr) return 0,ERR_NOTIMPLEMENTED
+@ stdcall CoUnmarshalHresult(ptr ptr)
@ stdcall CoUnmarshalInterface(ptr ptr ptr)
@ stdcall CreateAntiMoniker(ptr)
@ stdcall CreateBindCtx(long ptr)
diff --git a/include/objbase.h b/include/objbase.h
index e5171e3..f46374d 100644
--- a/include/objbase.h
+++ b/include/objbase.h
@@ -350,7 +350,7 @@
HRESULT WINAPI CoSuspendClassObjects(void);
HRESULT WINAPI CoResumeClassObjects(void);
ULONG WINAPI CoAddRefServerProcess(void);
-HRESULT WINAPI CoReleaseServerProcess(void);
+ULONG WINAPI CoReleaseServerProcess(void);
/* marshalling */
HRESULT WINAPI CoCreateFreeThreadedMarshaler(LPUNKNOWN punkOuter, LPUNKNOWN* ppunkMarshal);
@@ -417,27 +417,22 @@
/*****************************************************************************
* Moniker API
*/
-HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid);
-
-HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC* ppbc);
-
-HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER* ppmk);
-
-HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER* ppmk);
-
-HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk);
-
-HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite);
-
HRESULT WINAPI BindMoniker(LPMONIKER pmk, DWORD grfOpt, REFIID iidResult, LPVOID* ppvResult);
-
+HRESULT WINAPI CoGetObject(LPCWSTR pszName, BIND_OPTS *pBindOptions, REFIID riid, void **ppv);
+HRESULT WINAPI CreateAntiMoniker(LPMONIKER * ppmk);
+HRESULT WINAPI CreateBindCtx(DWORD reserved, LPBC* ppbc);
HRESULT WINAPI CreateClassMoniker(REFCLSID rclsid, LPMONIKER* ppmk);
-
+HRESULT WINAPI CreateFileMoniker(LPCOLESTR lpszPathName, LPMONIKER* ppmk);
+HRESULT WINAPI CreateGenericComposite(LPMONIKER pmkFirst, LPMONIKER pmkRest, LPMONIKER* ppmkComposite);
+HRESULT WINAPI CreateItemMoniker(LPCOLESTR lpszDelim, LPCOLESTR lpszItem, LPMONIKER* ppmk);
+HRESULT WINAPI CreateObjrefMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
+HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER * ppmk);
HRESULT WINAPI CreatePointerMoniker(LPUNKNOWN punk, LPMONIKER* ppmk);
-
-HRESULT WINAPI MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkCommon);
-
+HRESULT WINAPI GetClassFile(LPCOLESTR filePathName,CLSID *pclsid);
HRESULT WINAPI GetRunningObjectTable(DWORD reserved, LPRUNNINGOBJECTTABLE *pprot);
+HRESULT WINAPI MkParseDisplayName(LPBC pbc, LPCOLESTR szUserName, ULONG * pchEaten, LPMONIKER * ppmk);
+HRESULT WINAPI MonikerCommonPrefixWith(IMoniker* pmkThis,IMoniker* pmkOther,IMoniker** ppmkCommon);
+HRESULT WINAPI MonikerRelativePathTo(LPMONIKER pmkSrc, LPMONIKER pmkDest, LPMONIKER * ppmkRelPath, BOOL dwReserved);
/*****************************************************************************
* Storage API