Inscription d’un serveur EXE en cours d’exécution

Lorsqu’un serveur exécutable (EXE) est lancé, il doit appeler CoRegisterClassObject, qui inscrit le CLSID du serveur dans ce qu’on appelle la table de classes (une table différente de la table d’objets en cours d’exécution). Lorsqu’un serveur est inscrit dans la table de classe, il permet au gestionnaire de contrôle de service (SCM) de déterminer qu’il n’est pas nécessaire de relancer la classe, car le serveur est déjà en cours d’exécution. Ce n’est que si le serveur n’est pas répertorié dans la table de classes que le SCM case activée le Registre pour les valeurs appropriées et lance le serveur associé au CLSID donné.

Vous passez CoRegisterClassObject le CLSID pour la classe et un pointeur vers son interface IUnknown . Les clients qui appellent par la suite CoGetClassObject avec ce CLSID récupèrent un pointeur vers leur interface demandée, tant que la sécurité ne l’interdit pas. (Consultez Fonctions d’assistance à la création d’instance pour obtenir une description de plusieurs fonctions de création et d’activation instance.)

Le serveur d’un objet de classe doit appeler CoRevokeClassObject pour révoquer l’objet de classe (supprimer son inscription) lorsque toutes les conditions suivantes sont remplies :

  • Il n’existe aucune instance de la définition d’objet.
  • Il n’y a aucun verrou sur l’objet de classe.
  • L’application fournissant des services à l’objet de classe n’est pas sous contrôle utilisateur (non visible par l’utilisateur à l’écran).

Installation en tant qu’application de service

Inscription d’une classe lors de l’installation

Inscription d’objets dans le ROT

Auto-inscription