Creates an instance of a specific class on a specific machine.
HRESULT CoCreateInstanceEx(
REFCLSID rclsid, |
//CLSID of the object to be created |
IUnknown * punkOuter, |
//If part of an aggregate, the controlling IUnknown |
DWORD dwClsCtx, |
//CLSCTX values |
COSERVERINFO* pServerInfo, |
//Machine on which the object is to be instantiated |
ULONG cmq, |
//Number of MULTI_QI structures in rgmqResults |
MULTI_QI rgmqResults |
//Array of MULTI_QI structures |
); |
Parameters
Return Values
This function supports the standard return value E_INVALIDARG, as well as the following:
Remarks
CoCreateInstanceEx creates a single uninitialized object associated with the given CLSID on a specified remote machine. This is an extension of the function CoCreateInstance, which creates an object on the local machine only. In addition, rather than requesting a single interface and obtaining a single pointer to that interface, CoCreateInstanceEx makes it possible to specify an array of structures, each pointing to an interface identifier (IID) on input, and, on return, containing (if available) a pointer to the requested interface and the return value of the QueryInterface call for that interface. This permits fewer round trips between machines.
The CoCreateInstanceEx helper function encapsulates three calls: first, to CoGetClassObject to connect to the class object associated with the specified CLSID, specifying the machine location of the class; second, to IClassFactory::CreateInstance to create an uninitialized instance, and finally, to IClassFactory::Release, to release the class object.
The object so created must still be initialized through a call to one of the initialization interfaces (such as IPersistStorage:::Load). The two helper functions, CoGetInstanceFromFile and CoGetInstanceFromIStorage encapsulate both the instance creation and initialization from the obvious sources.
See Also
CoGetInstanceFromFile, CoGetInstanceFromIStorage, CLSCTX, COSERVERINFO, Instance Creation Helper Functions