Registro de un servidor EXE en ejecución
Cuando se inicia un servidor ejecutable (EXE), debe llamar a CoRegisterClassObject, que registra el CLSID para el servidor en lo que se denomina tabla de clases (una tabla diferente a la tabla de objetos en ejecución). Cuando un servidor está registrado en la tabla de clases, permite que el administrador de control de servicios (SCM) determine que no es necesario volver a iniciar la clase, ya que el servidor ya se está ejecutando. Solo si el servidor no aparece en la tabla de clases comprobará el registro para ver los valores adecuados e iniciará el servidor asociado con el CLSID especificado.
Pase CoRegisterClassObject el CLSID para la clase y un puntero a su interfaz IUnknown . Los clientes que posteriormente llaman a CoGetClassObject con este CLSID recuperarán un puntero a su interfaz solicitada, siempre y cuando la seguridad no lo impida. (Consulte Funciones auxiliares de creación de instancias para obtener una descripción de varias funciones de creación y activación de instancias).
El servidor de un objeto de clase debe llamar a CoRevokeClassObject para revocar el objeto de clase (quitar su registro) cuando se cumplen todas las siguientes condiciones:
- No hay instancias existentes de la definición de objeto.
- No hay bloqueos en el objeto de clase.
- La aplicación que proporciona servicios al objeto de clase no está bajo control de usuario (no es visible para el usuario en la pantalla).
Temas relacionados