combase: Move CoCreateInstance().
Signed-off-by: Nikolay Sivov <nsivov@codeweavers.com> Signed-off-by: Huw Davies <huw@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
This commit is contained in:
parent
93e7afb41f
commit
9fa68c5d29
|
@ -775,3 +775,22 @@ HRESULT WINAPI CoGetInstanceFromIStorage(COSERVERINFO *server_info, CLSID *rclsi
|
||||||
|
|
||||||
return return_multi_qi(obj, count, results, FALSE);
|
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;
|
||||||
|
}
|
||||||
|
|
|
@ -79,7 +79,7 @@
|
||||||
@ stdcall CoCreateErrorInfo(ptr) CreateErrorInfo
|
@ stdcall CoCreateErrorInfo(ptr) CreateErrorInfo
|
||||||
@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr) ole32.CoCreateFreeThreadedMarshaler
|
@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr) ole32.CoCreateFreeThreadedMarshaler
|
||||||
@ stdcall CoCreateGuid(ptr)
|
@ 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
|
@ stdcall CoCreateInstanceEx(ptr ptr long ptr long ptr) ole32.CoCreateInstanceEx
|
||||||
@ stub CoCreateInstanceFromApp
|
@ stub CoCreateInstanceFromApp
|
||||||
@ stub CoCreateObjectInContext
|
@ stub CoCreateObjectInContext
|
||||||
|
|
|
@ -3263,58 +3263,6 @@ HRESULT WINAPI CoResumeClassObjects(void)
|
||||||
return S_OK;
|
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)
|
static void init_multi_qi(DWORD count, MULTI_QI *mqi, HRESULT hr)
|
||||||
{
|
{
|
||||||
ULONG i;
|
ULONG i;
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
@ stdcall CoCopyProxy(ptr ptr) combase.CoCopyProxy
|
@ stdcall CoCopyProxy(ptr ptr) combase.CoCopyProxy
|
||||||
@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr)
|
@ stdcall CoCreateFreeThreadedMarshaler(ptr ptr)
|
||||||
@ stdcall CoCreateGuid(ptr) combase.CoCreateGuid
|
@ 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 CoCreateInstanceEx(ptr ptr long ptr long ptr)
|
||||||
@ stdcall CoDecrementMTAUsage(ptr)
|
@ stdcall CoDecrementMTAUsage(ptr)
|
||||||
@ stdcall CoDisableCallCancellation(ptr)
|
@ stdcall CoDisableCallCancellation(ptr)
|
||||||
|
|
Loading…
Reference in New Issue