Compartilhar via


Função CoGetDefaultContext (combaseapi.h)

Recupera uma referência ao contexto padrão do apartment especificado.

Sintaxe

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

Parâmetros

[in] aptType

O tipo de apartamento do contexto padrão que está sendo solicitado. Esse parâmetro pode usar um dos valores a seguir.

Valor Significado
APTTYPE_CURRENT
-1
O apartamento do chamador.
APTTYPE_MTA
1
O apartamento multithread para o processo atual.
APTTYPE_NA
2
O apartamento neutro para o processo atual.
APTTYPE_MAINSTA
3
O main apartamento de thread único para o processo atual.
 

Não há suporte para o valor APTTYPE APTTYPE_STA (0). Um processo pode conter vários apartamentos de thread único, cada um com seu próprio contexto, para que CoGetDefaultContext não possa determinar qual STA é de interesse. Portanto, essa função retornará E_INVALIDARG se APTTYPE_STA for especificado.

[in] riid

O IID (identificador de interface) da interface que está sendo solicitada no contexto padrão. Normalmente, o chamador solicita IID_IObjectContext. O contexto padrão não dá suporte a todas as interfaces de contexto de objeto normais.

[out] ppv

Uma referência à interface especificada por riid no contexto padrão. Se o componente do objeto não estiver configurado, (ou seja, o componente do objeto não foi importado para um aplicativo COM+) ou se a função CoGetDefaultContext for chamada de um construtor ou de um método IUnknown , esse parâmetro será definido como um ponteiro NULL .

Valor retornado

Esse método pode retornar os valores a seguir.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
E_INVALIDARG
Um dos parâmetros é inválido.
CO_E_NOTINITIALIZED
O chamador não está em um apartamento inicializado.
E_NOINTERFACE
O contexto do objeto não dá suporte à interface especificada por riid.

Comentários

Cada apartamento COM tem um contexto especial chamado contexto padrão. Um contexto padrão é diferente de todos os outros contextos não padrão em um apartment porque ele não fornece serviços de runtime. Ele não dá suporte a todas as interfaces de contexto de objeto normais.

O contexto padrão também é usado por instâncias de componentes COM não configurados(ou seja, componentes que não fizeram parte de um aplicativo COM+), quando eles são criados a partir de um apartment que não dá suporte ao modelo de threading. Em outras palavras, se um objeto COM criar uma instância de um componente não configurado e o novo objeto não puder ser adicionado ao contexto de seu criador devido ao seu modelo de threading, o novo objeto será adicionado ao contexto padrão de um apartment que dá suporte ao modelo de threading.

Um objeto nunca deve passar uma referência IObjectContext para outro objeto. Se você passar uma referência IObjectContext para outro objeto, ela não será mais uma referência válida.

Quando um objeto obtém uma referência a um IObjectContext, ele deve liberar o objeto IObjectContext quando terminar com ele.

Requisitos

   
Cliente mínimo com suporte Windows XP [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2003 [somente aplicativos da área de trabalho]
Plataforma de Destino Windows
Cabeçalho combaseapi.h
Biblioteca Ole32.lib
DLL Ole32.dll

Confira também

Contextos com+ e modelos de threading