Partager via


IObjectContext ::CreateInstance, méthode (comsvcs.h)

Crée un objet à l’aide du contexte de l’objet actuel.

Syntaxe

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

Paramètres

[in] rclsid

CLSID du type d’objet à instancier.

[in] riid

Toute interface implémentée par l’objet que vous souhaitez instancier.

[out] ppv

Référence à l’interface demandée sur le nouvel objet. Si l’instanciation échoue, ce paramètre est défini sur NULL.

Valeur retournée

Cette méthode peut retourner les valeurs suivantes.

Code de retour Description
S_OK
La commande s'est correctement terminée.
REGDB_E_CLASSNOTREG
Le composant spécifié par clsid n’est pas inscrit en tant que composant COM.
E_OUTOFMEMORY
Il n’y a pas assez de mémoire disponible pour instancier l’objet.
E_INVALIDARG
L’argument transmis dans le paramètre ppvObj n’est pas valide.
E_UNEXPECTED
Une erreur inattendue s’est produite. Cela peut se produire si un objet transmet son pointeur IObjectContext à un autre objet et si l’autre objet appelle CreateInstance à l’aide de ce pointeur. Un pointeur IObjectContext n’est pas valide en dehors du contexte de l’objet qui l’a obtenu à l’origine.

Remarques

CreateInstance crée un objet COM. Toutefois, l’objet n’aura de contexte que si son composant est inscrit auprès de COM+.

Lorsque vous créez un objet à l’aide de CreateInstance, le contexte du nouvel objet est dérivé du IObjectContext de l’objet actuel et des propriétés déclaratives du composant du nouvel objet. Le nouvel objet s’exécute toujours dans la même activité que l’objet qui l’a créé. Si l’objet actuel a une transaction, l’attribut de transaction du composant du nouvel objet détermine si le nouvel objet s’exécute dans l’étendue de cette transaction.

Si le paramètre d’attribut de transaction du composant nécessite une transaction ou prend en charge des transactions, le nouvel objet hérite de la transaction de son créateur. Si l’attribut de transaction du composant nécessite une nouvelle transaction, COM+ lance une nouvelle transaction pour le nouvel objet. Si l’attribut de transaction du composant ne prend pas en charge les transactions, le nouvel objet ne s’exécute sous aucune transaction.

CreateInstance retourne toujours l’interface IUnknown sur l’objet nouvellement instancié. Vous devez immédiatement caster la valeur retournée dans l’interface via laquelle vous souhaitez communiquer avec le nouvel objet. L’ID d’interface que vous transmettez au paramètre riid n’a pas besoin d’être la même interface que celle sur laquelle vous castez la valeur retournée, mais il doit s’agir d’une interface implémentée par l’objet que vous instanciez.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau uniquement]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau uniquement]
Plateforme cible Windows
En-tête comsvcs.h

Voir aussi

IObjectContext