Registrando um servidor EXE em execução
Quando um servidor executável (EXE) é iniciado, ele deve chamar CoRegisterClassObject, que registra o CLSID para o servidor no que é chamado de tabela de classes (uma tabela diferente da tabela de objetos em execução). Quando um servidor é registrado na tabela de classes, ele permite que o gerenciador de controle de serviço (SCM) determine que não é necessário iniciar a classe novamente, porque o servidor já está em execução. Somente se o servidor não estiver listado na tabela de classes, o SCM verificará o registro para valores apropriados e iniciará o servidor associado ao CLSID fornecido.
Você passa CoRegisterClassObject o CLSID para a classe e um ponteiro para sua interface IUnknown. Os clientes que subsequentemente chamam CoGetClassObject com esse CLSID recuperarão um ponteiro para sua interface solicitada, desde que a segurança não o proíba. (Veja Funções auxiliares de criação de instância para uma descrição de várias funções de criação e ativação de instância.)
O servidor de um objeto de classe deve chamar CoRevokeClassObject para revogar o objeto de classe (remover seu registro) quando todos os itens a seguir forem verdadeiros:
- Não há instâncias existentes da definição de objeto.
- Não há bloqueios no objeto de classe.
- O aplicativo que fornece serviços para o objeto de classe não está sob controle do usuário (não visível para o usuário na exibição).
Tópicos relacionados