Nikolay Sivov : combase: Move CoCreateInstance().

Alexandre Julliard julliard at winehq.org
Mon Aug 10 16:16:29 CDT 2020


Module: wine
Branch: master
Commit: 9fa68c5d298274bd2aba47a0062ccffbf73259ef
URL:    https://source.winehq.org/git/wine.git/?a=commit;h=9fa68c5d298274bd2aba47a0062ccffbf73259ef

Author: Nikolay Sivov <nsivov at codeweavers.com>
Date:   Mon Aug 10 11:12:48 2020 +0300

combase: Move CoCreateInstance().

Signed-off-by: Nikolay Sivov <nsivov at codeweavers.com>
Signed-off-by: Huw Davies <huw at codeweavers.com>
Signed-off-by: Alexandre Julliard <julliard at winehq.org>

---

 dlls/combase/combase.c    | 19 +++++++++++++++++
 dlls/combase/combase.spec |  2 +-
 dlls/ole32/compobj.c      | 52 -----------------------------------------------
 dlls/ole32/ole32.spec     |  2 +-
 4 files changed, 21 insertions(+), 54 deletions(-)

diff --git a/dlls/combase/combase.c b/dlls/combase/combase.c
index 88da5fb888..bcf9912cbc 100644
--- a/dlls/combase/combase.c
+++ b/dlls/combase/combase.c
@@ -775,3 +775,22 @@ HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO *server_info, CLSID *rclsi
 
     return return_multi_qi(obj, count, results, FALSE);
 }
+
+/***********************************************************************
+ *           CoCreateInstance        (combase.@)
+ */
+HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(REFCLSID rclsid, IUnknown *outer, DWORD cls_context,
+        REFIID riid, void **obj)
+{
+    MULTI_QI multi_qi = { .pIID = riid };
+    HRESULT hr;
+
+    TRACE("%s, %p, %#x, %s, %p.\n", debugstr_guid(rclsid), outer, cls_context, debugstr_guid(riid), obj);
+
+    if (!obj)
+        return E_POINTER;
+
+    hr = CoCreateInstanceEx(rclsid, outer, cls_context, NULL, 1, &multi_qi);
+    *obj = multi_qi.pItf;
+    return hr;
+}
diff --git a/dlls/combase/combase.spec b/dlls/combase/combase.spec
index de0ebe7cd3..b8e374924a 100644
--- a/dlls/combase/combase.spec
+++ b/dlls/combase/combase.spec
@@ -79,7 +79,7 @@
 @ stdcall CoCreateErrorInfo(ptr) CreateErrorInfo
 @ stdcall CoCreateFreeThreadedMarshaler(ptr ptr) ole32.CoCreateFreeThreadedMarshaler
 @ stdcall CoCreateGuid(ptr)
-@ stdcall CoCreateInstance(ptr ptr long ptr ptr) ole32.CoCreateInstance
+@ stdcall CoCreateInstance(ptr ptr long ptr ptr)
 @ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr) ole32.CoCreateInstanceEx
 @ stub CoCreateInstanceFromApp
 @ stub CoCreateObjectInContext
diff --git a/dlls/ole32/compobj.c b/dlls/ole32/compobj.c
index e63759c060..cc64d7c036 100644
--- a/dlls/ole32/compobj.c
+++ b/dlls/ole32/compobj.c
@@ -3263,58 +3263,6 @@ HRESULT WINAPI CoResumeClassObjects(void)
 	return S_OK;
 }
 
-/***********************************************************************
- *           CoCreateInstance [OLE32.@]
- *
- * Creates an instance of the specified class.
- *
- * PARAMS
- *  rclsid       [I] Class ID to create an instance of.
- *  pUnkOuter    [I] Optional outer unknown to allow aggregation with another object.
- *  dwClsContext [I] Flags to restrict the location of the created instance.
- *  iid          [I] The ID of the interface of the instance to return.
- *  ppv          [O] On returns, contains a pointer to the specified interface of the instance.
- *
- * RETURNS
- *  Success: S_OK
- *  Failure: HRESULT code.
- *
- * NOTES
- *  The dwClsContext parameter can be one or more of the following:
- *| CLSCTX_INPROC_SERVER - Use an in-process server, such as from a DLL.
- *| CLSCTX_INPROC_HANDLER - Use an in-process object which handles certain functions for an object running in another process.
- *| CLSCTX_LOCAL_SERVER - Connect to an object running in another process.
- *| CLSCTX_REMOTE_SERVER - Connect to an object running on another machine.
- *
- * Aggregation is the concept of deferring the IUnknown of an object to another
- * object. This allows a separate object to behave as though it was part of
- * the object and to allow this the pUnkOuter parameter can be set. Note that
- * not all objects support having an outer of unknown.
- *
- * SEE ALSO
- *  CoGetClassObject()
- */
-HRESULT WINAPI DECLSPEC_HOTPATCH CoCreateInstance(
-    REFCLSID rclsid,
-    LPUNKNOWN pUnkOuter,
-    DWORD dwClsContext,
-    REFIID iid,
-    LPVOID *ppv)
-{
-    MULTI_QI multi_qi = { iid };
-    HRESULT hres;
-
-    TRACE("(rclsid=%s, pUnkOuter=%p, dwClsContext=%08x, riid=%s, ppv=%p)\n", debugstr_guid(rclsid),
-          pUnkOuter, dwClsContext, debugstr_guid(iid), ppv);
-
-    if (ppv==0)
-        return E_POINTER;
-
-    hres = CoCreateInstanceEx(rclsid, pUnkOuter, dwClsContext, NULL, 1, &multi_qi);
-    *ppv = multi_qi.pItf;
-    return hres;
-}
-
 static void init_multi_qi(DWORD count, MULTI_QI *mqi, HRESULT hr)
 {
   ULONG i;
diff --git a/dlls/ole32/ole32.spec b/dlls/ole32/ole32.spec
index 6f44e298af..550b3149d4 100644
--- a/dlls/ole32/ole32.spec
+++ b/dlls/ole32/ole32.spec
@@ -12,7 +12,7 @@
 @ stdcall CoCopyProxy(ptr ptr) combase.CoCopyProxy
 @ stdcall CoCreateFreeThreadedMarshaler(ptr ptr)
 @ stdcall CoCreateGuid(ptr) combase.CoCreateGuid
-@ stdcall CoCreateInstance(ptr ptr long ptr ptr)
+@ stdcall CoCreateInstance(ptr ptr long ptr ptr) combase.CoCreateInstance
 @ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr)
 @ stdcall CoDecrementMTAUsage(ptr)
 @ stdcall CoDisableCallCancellation(ptr)




More information about the wine-cvs mailing list