Partager via


CoGetDefaultContext, fonction (combaseapi.h)

Récupère une référence au contexte par défaut de l’appartement spécifié.

Syntaxe

HRESULT CoGetDefaultContext(
  [in]  APTTYPE aptType,
  [in]  REFIID  riid,
  [out] void    **ppv
);

Paramètres

[in] aptType

Type d’appartement du contexte par défaut demandé. Ce paramètre peut prendre les valeurs suivantes.

Valeur Signification
APTTYPE_CURRENT
-1
L’appartement de l’appelant.
APTTYPE_MTA
1
L’appartement multithread pour le processus actuel.
APTTYPE_NA
2
Appartement neutre pour le processus actuel.
APTTYPE_MAINSTA
3
Le main appartement monothread pour le processus actuel.
 

La valeur APTTYPE APTTYPE_STA (0) n’est pas prise en charge. Un processus peut contenir plusieurs appartements à thread unique, chacun avec son propre contexte, de sorte que CoGetDefaultContext n’a pas pu déterminer quel sta est intéressant. Par conséquent, cette fonction retourne E_INVALIDARG si APTTYPE_STA est spécifié.

[in] riid

Identificateur d’interface (IID) de l’interface demandée sur le contexte par défaut. En règle générale, l’appelant demande IID_IObjectContext. Le contexte par défaut ne prend pas en charge toutes les interfaces de contexte d’objet normales.

[out] ppv

Référence à l’interface spécifiée par riid sur le contexte par défaut. Si le composant de l’objet n’est pas configuré (autrement dit, le composant de l’objet n’a pas été importé dans une application COM+), ou si la fonction CoGetDefaultContext est appelée à partir d’un constructeur ou d’une méthode IUnknown , ce paramètre est défini sur un pointeur 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.
E_INVALIDARG
L’un des paramètres n’est pas valide.
CO_E_NOTINITIALIZED
L’appelant n’est pas dans un appartement initialisé.
E_NOINTERFACE
Le contexte de l’objet ne prend pas en charge l’interface spécifiée par riid.

Remarques

Chaque appartement COM a un contexte spécial appelé contexte par défaut. Un contexte par défaut est différent de tous les autres contextes non par défaut d’un appartement, car il ne fournit pas de services d’exécution. Il ne prend pas en charge toutes les interfaces de contexte d’objet normales.

Le contexte par défaut est également utilisé par les instances de composants COM non configurés (c’est-à-dire les composants qui n’ont pas fait partie d’une application COM+), lorsqu’ils sont créés à partir d’un appartement qui ne prend pas en charge leur modèle de threading. En d’autres termes, si un objet COM crée une instance d’un composant non configuré et que le nouvel objet ne peut pas être ajouté au contexte de son créateur en raison de son modèle de threading, le nouvel objet est ajouté au contexte par défaut d’un appartement qui prend en charge son modèle de threading.

Un objet ne doit jamais passer une référence IObjectContext à un autre objet. Si vous passez une référence IObjectContext à un autre objet, il ne s’agit plus d’une référence valide.

Lorsqu’un objet obtient une référence à un IObjectContext, il doit libérer l’objet IObjectContext lorsqu’il est terminé.

Configuration requise

   
Client minimal pris en charge Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
Plateforme cible Windows
En-tête combaseapi.h
Bibliothèque Ole32.lib
DLL Ole32.dll

Voir aussi

Contextes COM+ et modèles de threading