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 |
---|---|
|
La commande s'est correctement terminée. |
|
Le composant spécifié par clsid n’est pas inscrit en tant que composant COM. |
|
Il n’y a pas assez de mémoire disponible pour instancier l’objet. |
|
L’argument transmis dans le paramètre ppvObj n’est pas valide. |
|
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 |