Função CoEnterServiceDomain (comsvcs.h)

Usado para inserir código que pode usar serviços COM+.

Sintaxe

HRESULT CoEnterServiceDomain(
  [in] IUnknown *pConfigObject
);

Parâmetros

[in] pConfigObject

Um ponteiro para a interface IUnknown do objeto, criado a partir da classe CServiceConfig , que contém as informações de configuração para os serviços a serem usados dentro do código incluído.

Retornar valor

Esse método pode retornar os valores retornados padrão E_INVALIDARG, E_OUTOFMEMORY e E_FAIL, bem como os valores a seguir.

Código de retorno Descrição
S_OK
O método foi concluído com sucesso.
CO_E_SXS_CONFIG
A configuração de assembly lado a lado do objeto CServiceConfig é inválida.
CO_E_THREADPOOL_CONFIG
A configuração do pool de threads do objeto CServiceConfig é inválida. O modelo de thread apartment não pode ser reconfigurado chamando CoEnterServiceDomain.
CO_E_TRACKER_CONFIG
A configuração do rastreador do objeto CServiceConfig é inválida.
COMADMIN_E_PARTITION_ACCESSDENIED
O chamador não tem permissões de acesso para a partição COM+.

Comentários

O código entre chamadas para CoEnterServiceDomain e CoLeaveServiceDomain é executado em seu próprio contexto e se comporta como se fosse um método chamado em um objeto criado dentro do contexto. CoEnterServiceDomain não pode alternar para um modelo de apartamento diferente, portanto, o código fechado é executado no apartamento do chamador e no thread do chamador. É um erro tentar alterar o modelo de apartment por meio do objeto CServiceConfig ao chamar CoEnterServiceDomain.

CoEnterServiceDomain primeiro cria um contexto configurado conforme especificado pelo objeto CServiceConfig que é passado como o parâmetro pConfigObject . As políticas nos lados do cliente e do servidor são disparadas como se uma chamada de método tivesse ocorrido. O novo contexto é então enviado por push para uma pilha de contexto e se torna o contexto atual.

Devido ao seu design eficiente e porque nenhum marshaling de thread está envolvido, o uso de CoEnterServiceDomain e CoLeaveServiceDomain envolve uma sobrecarga significativamente reduzida em comparação com uma chamada de método equivalente.

CoEnterServiceDomain e CoLeaveServiceDomain são particularmente úteis em aplicativos, que podem usar essas funções para acessar serviços COM+ sem a necessidade de criar um componente para fazer isso.

Os pares CoEnterServiceDomain e CoLeaveServiceDomain podem ser aninhados.

Requisitos

Requisito Valor
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 comsvcs.h
Biblioteca ComSvcs.lib
DLL ComSvcs.dll

Confira também

Serviços COM+ sem componentes

CServiceConfig

CoCreateActivity

CoLeaveServiceDomain