Función CoAddRefServerProcess (combaseapi.h)

Incrementa un recuento de referencias global por proceso.

Sintaxis

ULONG CoAddRefServerProcess();

Valor devuelto

Recuento de referencias actual.

Comentarios

Los servidores pueden llamar a CoAddRefServerProcess para incrementar un recuento global de referencias por proceso. Esta función es especialmente útil para los servidores que se implementan con varios subprocesos, ya sea de varios apartamentos o de subprocesos libres. Los servidores de estos tipos deben coordinar la decisión de cerrarse con solicitudes de activación en varios subprocesos. La llamada a CoAddRefServerProcess incrementa un recuento global de referencias por proceso y llama a CoReleaseServerProcess disminuye ese recuento.

Cuando ese recuento alcanza cero, OLE llama automáticamente a CoSuspendClassObjects, lo que impide que se produzcan nuevas solicitudes de activación. Esto permite que el servidor anule el registro de sus objetos de clase de sus distintos subprocesos sin preocuparse de que pueda entrar otra solicitud de activación. Las nuevas solicitudes de activación generan el inicio de una nueva instancia del proceso del servidor local.

La manera más sencilla para que una aplicación de servidor local use estas funciones es llamar a CoAddRefServerProcess en el constructor para cada uno de sus objetos de instancia y en cada uno de sus métodos IClassFactory::LockServer cuando el parámetro fLock es TRUE. La aplicación de servidor también debe llamar a CoReleaseServerProcess en la destrucción de cada uno de sus objetos de instancia y en cada uno de sus métodos LockServer cuando el parámetro fLock es FALSE. Por último, la aplicación de servidor debe prestar atención al código de retorno de CoReleaseServerProcess y, si devuelve 0, la aplicación de servidor debe iniciar su limpieza, que, para un servidor con varios subprocesos, normalmente significa que debe indicar a sus distintos subprocesos para salir de sus bucles de mensaje y llamar a CoRevokeClassObject y CoUninitialize.

Si estas funciones se usan en absoluto, deben llamarse tanto en las instancias de objeto como en el método LockServer ; de lo contrario, la aplicación de servidor puede cerrarse prematuramente. Normalmente, los servidores en proceso no deben llamar a CoAddRefServerProcess o CoReleaseServerProcess.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 2000 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows 2000 Server [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado combaseapi.h (incluya Objbase.h)
Library Ole32.lib
Archivo DLL Ole32.dll

Consulte también

CoReleaseServerProcess

IClassFactory::LockServer

Asistentes de implementación del servidor fuera de proceso