Share via


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).

Instalando como um aplicativo de serviço

Registrando uma classe na instalação

Registrando objetos no ROT

Auto-Cadastro