ITypeInfo::CreateInstance

HRESULT CreateInstance( 
  IUnknown FAR*  pUnkOuter,  
  REFIID  riid,           
  VOID FAR* FAR*  ppvObj  
);
 

Creates a new instance of a type that describes a component object class (coclass).

Parameters

pUnkOuter
A pointer to the controlling IUnknown. If Null, then a stand-alone instance is created. If valid, then an aggregate object is created.
riid
An ID for the interface that the caller will use to communicate with the resulting object.
ppvObj
On return, points to a pointer to an instance of the created object.

Return Value

The return value obtained from the returned HRESULT is one of the following:

Return value Meaning
S_OK Success.
E_OUTOFMEMORY Out of memory.
TYPE_E_WRONGTYPEKIND Type mismatch.
E_INVALIDARG One or more of the arguments is invalid.
E_NOINTERFACE OLE could not find an implementation of one or more required interfaces.
TYPE_E_UNSUPFORMAT The type library has an older format.
TYPE_E_INVALIDSTATE The type library could not be opened.
Other return codes Additional errors may be returned from GetActiveObject or CoCreateInstance.

Comments

For types that describe a component object class (coclass), CreateInstance creates a new instance of the class. Normally, CreateInstance calls CoCreateInstance with the type description's GUID. For an Application object, it first calls GetActiveObject. If the application is active, GetActiveObject returns the active object; otherwise, if GetActiveObject fails, CreateInstance calls CoCreateInstance.