Creates a data source object; analogous to CoCreateInstanceEx.

HRESULT CreateDBInstanceEx(
   REFCLSID         clsidProvider,
   IUnknown *       pUnkOuter,
   DWORD            dwClsCtx,
   LPOLESTR         pwszReserved,
   COSERVERINFO *   pServerInfo,
   ULONG            cmq,
   MULTI_QI *       rgmqResults);

clsidProvider [in]

The CLSID of the provider to instantiate.

pUnkOuter [in]

A pointer to the controlling IUnknown interface if the data source object is being created as a part of an aggregate; otherwise, it is a null pointer.

dwClsCtx [in]

CLSCTX values. CLSCTX_ALL, CLSCTX_SERVER, and CLSCTX_INPROC_SERVER are acceptable values, but the service components will always attempt to load the provider in-process. Ignored if *ppDataSource is not NULL.

pwszReserved [in]

Reserved for future use; must be NULL.

pServerInfo [in]

Machine on which the data source objects are to be instantiated.

cmq [in]

Number of MULTI_QI structures in rgmqResults.

rgmqResults [in, out]

Array of MULTI_QI structures.


The method succeeded.


A provider-specific error occurred.


At least one, but not all, of the interfaces requested in the rgmqResults array were successfully retrieved.

The hr field of each of the MULTI_QI structures in rgmqResults indicates with S_OK or E_NOINTERFACE whether the specific interface was returned.


The data source did not support the interface specified in riid.

riid was IID_NULL.

The object indicated by clsidProvider was not an OLE DB provider.


The data source object cannot return the requested interface because the data source object is not initialized.


pUnkOuter was not a null pointer, and riid was something other than IID_IUnknown.

pUnkOuter was not a null pointer, and the provider does not support aggregation.

dwClsCtx required out-of-process operation, which is not supported.

The provider does not support in-process operation and cannot be aggregated.


dwClsCtx was not a valid value.

ppDataSource was a null pointer.


The provider indicated by clsidProvider was not found.

dwClsCtx indicated a server type not supported by the provider.