Función CoGetDefaultContext (combaseapi.h)

Recupera una referencia al contexto predeterminado del apartamento especificado.

Sintaxis

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

Parámetros

[in] aptType

Tipo de apartamento del contexto predeterminado que se solicita. Este parámetro puede ser uno de los valores siguientes.

Valor Significado
APTTYPE_CURRENT
-1
El apartamento del autor de la llamada.
APTTYPE_MTA
1
El apartamento multiproceso para el proceso actual.
APTTYPE_NA
2
Apartamento neutro para el proceso actual.
APTTYPE_MAINSTA
3
El apartamento principal de un solo subproceso para el proceso actual.
 

No se admite el valor APTTYPE APTTYPE_STA (0). Un proceso puede contener varios apartamentos de un solo subproceso, cada uno con su propio contexto, por lo que CoGetDefaultContext no pudo determinar qué STA es de interés. Por lo tanto, esta función devuelve E_INVALIDARG si se especifica APTTYPE_STA.

[in] riid

Identificador de interfaz (IID) de la interfaz que se solicita en el contexto predeterminado. Normalmente, el autor de la llamada solicita IID_IObjectContext. El contexto predeterminado no admite todas las interfaces de contexto de objeto normales.

[out] ppv

Referencia a la interfaz especificada por riid en el contexto predeterminado. Si el componente del objeto no está configurado (es decir, el componente del objeto no se ha importado en una aplicación COM+), o si se llama a la función CoGetDefaultContext desde un constructor o un método IUnknown , este parámetro se establece en un puntero NULL .

Valor devuelto

Este método puede devolver los valores siguientes.

Código devuelto Descripción
S_OK
El método se completó correctamente.
E_INVALIDARG
Uno de los parámetros no es válido.
CO_E_NOTINITIALIZED
El autor de la llamada no está en un apartamento inicializado.
E_NOINTERFACE
El contexto del objeto no admite la interfaz especificada por riid.

Comentarios

Cada apartamento COM tiene un contexto especial denominado contexto predeterminado. Un contexto predeterminado es diferente del resto de contextos no predeterminados de un apartamento porque no proporciona servicios en tiempo de ejecución. No admite todas las interfaces de contexto de objeto normales.

Las instancias de componentes COM no configurados también usan el contexto predeterminado (es decir, los componentes que no han sido parte de una aplicación COM+), cuando se crean a partir de un apartamento que no admite su modelo de subprocesos. En otras palabras, si un objeto COM crea una instancia de un componente no configurado y el nuevo objeto no se puede agregar al contexto de su creador debido a su modelo de subprocesos, el nuevo objeto se agrega en su lugar al contexto predeterminado de un apartamento que admite su modelo de subprocesos.

Un objeto nunca debe pasar una referencia de IObjectContext a otro objeto. Si pasa una referencia IObjectContext a otro objeto, ya no es una referencia válida.

Cuando un objeto obtiene una referencia a un IObjectContext, debe liberar el objeto IObjectContext cuando haya terminado con él.

Requisitos

   
Cliente mínimo compatible Windows XP [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2003 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado combaseapi.h
Library Ole32.lib
Archivo DLL Ole32.dll

Consulte también

Contextos COM+ y modelos de subprocesos