Metodo IObjectContext::CreateInstance (comsvcs.h)

Crea un oggetto utilizzando il contesto dell'oggetto corrente.

Sintassi

HRESULT CreateInstance(
  [in]  REFCLSID rclsid,
  [in]  REFIID   riid,
  [out] LPVOID   *ppv
);

Parametri

[in] rclsid

CLSID del tipo di oggetto da creare.

[in] riid

Qualsiasi interfaccia implementata dall'oggetto di cui si vuole creare un'istanza.

[out] ppv

Riferimento all'interfaccia richiesta nel nuovo oggetto . Se l'istanza ha esito negativo, questo parametro viene impostato su NULL.

Valore restituito

Questo metodo può restituire i valori seguenti.

Codice restituito Descrizione
S_OK
Metodo completato correttamente.
REGDB_E_CLASSNOTREG
Il componente specificato da clsid non è registrato come componente COM.
E_OUTOFMEMORY
Memoria insufficiente per creare un'istanza dell'oggetto.
E_INVALIDARG
L'argomento passato nel parametro ppvObj non è valido.
E_UNEXPECTED
Si è verificato un errore imprevisto. Ciò può verificarsi se un oggetto passa il puntatore IObjectContext a un altro oggetto e l'altro oggetto chiama CreateInstance usando questo puntatore. Un puntatore IObjectContext non è valido al di fuori del contesto dell'oggetto che lo ha originariamente ottenuto.

Commenti

CreateInstance crea un oggetto COM. Tuttavia, l'oggetto avrà contesto solo se il relativo componente è registrato con COM+.

Quando si crea un oggetto utilizzando CreateInstance, il contesto del nuovo oggetto viene derivato dal IObjectContext dell'oggetto corrente e dalle proprietà dichiarative del componente del nuovo oggetto. Il nuovo oggetto viene sempre eseguito all'interno della stessa attività dell'oggetto che lo ha creato. Se l'oggetto corrente dispone di una transazione, l'attributo della transazione del componente del nuovo oggetto determina se il nuovo oggetto viene eseguito nell'ambito di tale transazione.

Se l'impostazione dell'attributo della transazione del componente richiede una transazione o supporta le transazioni, il nuovo oggetto eredita la transazione dell'autore. Se l'attributo di transazione del componente richiede una nuova transazione, COM+ avvia una nuova transazione per il nuovo oggetto. Se l'attributo di transazione del componente non supporta le transazioni, il nuovo oggetto non viene eseguito in alcuna transazione.

CreateInstance restituisce sempre l'interfaccia IUnknown nell'oggetto appena creato. È necessario eseguire immediatamente il cast del valore restituito all'interfaccia tramite cui si desidera comunicare con il nuovo oggetto. L'ID di interfaccia passato nel parametro riid non deve essere la stessa interfaccia di quella in cui è stato eseguito il cast del valore restituito, ma deve essere un'interfaccia implementata dall'oggetto di cui si sta creando un'istanza.

Requisiti

Requisito Valore
Client minimo supportato Windows 2000 Professional [solo app desktop]
Server minimo supportato Windows 2000 Server [solo app desktop]
Piattaforma di destinazione Windows
Intestazione comsvcs.h

Vedi anche

IObjectContext