Função CoAddRefServerProcess (combaseapi.h)

Incrementa uma contagem de referência global por processo.

Sintaxe

ULONG CoAddRefServerProcess();

Retornar valor

A contagem de referência atual.

Comentários

Os servidores podem chamar CoAddRefServerProcess para incrementar uma contagem global de referência por processo. Essa função é particularmente útil para servidores que são implementados com vários threads, seja multi-apartmented ou free-threaded. Os servidores desses tipos devem coordenar a decisão de desligar com solicitações de ativação em vários threads. Chamar CoAddRefServerProcess incrementa uma contagem de referência global por processo e chamar CoReleaseServerProcess diminui essa contagem.

Quando essa contagem atinge zero, o OLE chama automaticamente CoSuspendClassObjects, o que impede que novas solicitações de ativação entrem. Isso permite que o servidor desregistre seus objetos de classe de seus vários threads sem se preocupar que outra solicitação de ativação possa entrar. Novas solicitações de ativação resultam na inicialização de uma nova instância do processo do servidor local.

A maneira mais simples para um aplicativo de servidor local usar essas funções é chamar CoAddRefServerProcess no construtor para cada um de seus objetos de instância e em cada um de seus métodos IClassFactory::LockServer quando o parâmetro fLock for TRUE. O aplicativo de servidor também deve chamar CoReleaseServerProcess na destruição de cada um de seus objetos de instância e em cada um de seus métodos LockServer quando o parâmetro fLock for FALSE. Por fim, o aplicativo de servidor deve prestar atenção ao código de retorno de CoReleaseServerProcess e, se retornar 0, o aplicativo de servidor deverá iniciar sua limpeza, o que, para um servidor com vários threads, normalmente significa que ele deve sinalizar seus vários threads para sair de seus loops de mensagem e chamar CoRevokeClassObject e CoUninitialize.

Se essas funções forem usadas, elas deverão ser chamadas nas instâncias de objeto e no método LockServer , caso contrário, o aplicativo de servidor poderá ser desligado prematuramente. Os servidores em processo normalmente não devem chamar CoAddRefServerProcess ou CoReleaseServerProcess.

Requisitos

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

Confira também

Coreleaseserverprocess

IClassFactory::LockServer

Auxiliares de implementação de servidor fora do processo