CoCreateInstance
Creates a
single uninitialized object of the class associated with a specified CLSID.
Call CoCreateInstance when you want to create only one object on the local
system. To create a single object on a remote system, call CoCreateInstanceEx
STDAPI CoCreateInstance(
REFCLSID rclsid, |
//Class identifier (CLSID) of the object |
LPUNKNOWN pUnkOuter, |
//Pointer to whether object is or isn t part of an
aggregate |
DWORD dwClsContext, |
//Context for running executable code |
REFIID riid, |
//Reference to the identifier of the interface |
LPVOID * ppv |
//Indirect pointer to requested interface |
); |
|
Parameters
rclsid
[in] CLSID
associated with the data and code that will be used to create the object.
pUnkOuter
[in] If NULL,
indicates that the object is not being created as part of an aggregate. If non-NULL,
pointer to the aggregate object s IUnknown interface (the controlling IUnknown).
dwClsContext
[in] Context
in which the code that manages the newly created object will run. The values
are taken from the enumeration CLSCTX
riid
[in]
Reference to the identifier of the interface to be used to communicate with the
object.
ppv
[out]
Indirect pointer to the requested interface.
Return Values
S_OK
An instance
of the specified object class was successfully created.
REGDB_E_CLASSNOTREG
A specified
class is not registered in the registration database. Also can indicate that
the type of server you requested in the CLSCTX enumeration is not
registered or the values for the server types in the registry are corrupt.
CLASS_E_NOAGGREGATION
This class
cannot be created as part of an aggregate.
Remarks
The CoCreateInstance
helper function provides a convenient shortcut by connecting to the class
object associated with the specified CLSID, creating an uninitialized instance,
and releasing the class object. As such, it encapsulates the following
functionality:
CoGetClassObject(rclsid, dwClsContext, NULL,
IID_IClassFactory, &pCF);
hresult = pCF->CreateInstance(pUnkOuter, riid,
ppvObj)
pCF->Release();
It is
convenient to use CoCreateInstance when you need to create only a single
instance of an object on the local machine. If you are creating an instance on
remote machine, call CoCreateInstanceEx
In the CLSCTX
See Also