Compartilhar via


Função CoSwitchCallContext (combaseapi.h)

Alterna o objeto de contexto de chamada usado por CoGetCallContext.

Sintaxe

HRESULT CoSwitchCallContext(
  [in, optional] IUnknown *pNewObject,
  [out]          IUnknown **ppOldObject
);

Parâmetros

[in, optional] pNewObject

Um ponteiro para uma interface no novo objeto de contexto de chamada. O COM armazena esse ponteiro sem adicionar uma referência ao ponteiro até coSwitchCallContext ser chamado com outro objeto. Esse parâmetro poderá ser NULL se você estiver chamando CoSwitchCallContext para alternar de volta para o contexto de chamada original, mas não houver contexto de chamada original.

[out] ppOldObject

O endereço da variável de ponteiro que recebe um ponteiro para o objeto de contexto de chamada da chamada atualmente em andamento. Esse valor é retornado para que o contexto de chamada original possa ser restaurado pelo marshaller personalizado. O ponteiro retornado será NULL se não houver nenhuma chamada em andamento.

Valor retornado

Essa função pode retornar os valores a seguir.

Código de retorno Descrição
S_OK
A função foi bem-sucedida.
E_OUT_OF_MEMORY
Sem memória.

Comentários

Marshallers personalizados chamam CoSwitchCallContext para alterar o objeto de contexto de chamada usado pela função CoGetCallContext . Antes de expedir uma chamada de chegada, os marshallers personalizados chamam CoSwitchCallContext, especificando o novo objeto de contexto. Depois de enviar uma resposta, eles devem restaurar o contexto de chamada original chamando CoSwitchCallContext novamente, desta vez passando um ponteiro para o objeto de contexto original.

CoSwitchCallContext não adiciona uma referência ao novo objeto de contexto. Os marshallers personalizados devem garantir que o tempo de vida de seu objeto de contexto continue durante toda a chamada e até a chamada para restaurar o contexto original. Os marshallers personalizados não devem liberar o valor que eles colocaram no parâmetro ppOldObject quando definirem seu contexto.

Os objetos de contexto de chamada fornecidos por marshallers personalizados devem dar suporte à interface IServerSecurity .

Requisitos

   
Cliente mínimo com suporte Windows 2000 Professional [aplicativos da área de trabalho | Aplicativos UWP]
Servidor mínimo com suporte Windows 2000 Server [aplicativos da área de trabalho | Aplicativos UWP]
Plataforma de Destino Windows
Cabeçalho combaseapi.h (inclua Objbase.h)
Biblioteca Ole32.lib
DLL Ole32.dll

Confira também

Cogetcallcontext

Iserversecurity

Segurança no COM