2010-11-12 43 views
2

J'essaie de comprendre le concept d'écriture d'un service Windows utilisant ATL.Gestion de la durée de vie des objets COM dans un service ATL

J'ai créé un projet et je comprends que je peux remplacer les fonctions CAtlServiceModuleT pour répondre à mes besoins pour le service.

Ce que je voudrais faire, c'est que le service crée un objet COM (appelé Manager) qui s'occupe de la planification et de l'exécution des tâches.

Comment puis-je créer une instance unique de mon objet COM disponible tout au long de la durée de vie du service qui traite tous les travaux?

J'envisage d'écrire un programme client qui appelle des fonctions sur des interfaces exposées par Manager, pour créer/lire/mettre à jour/supprimer des travaux. Je pense que le service ne créera pas l'objet Manager tant que mon programme client ne s'y connectera pas - et lorsque le dernier client se déconnectera, COM détruira le gestionnaire, ce qui l'empêchera de traiter les tâches.

Toute bonne documentation à ce sujet serait appréciée!

Mise à jour:

Serait-il aussi simple que d'appeler CoCreateInstance de dire une version surchargée de CAtlServiceModuleT :: Run(), puis lorsque le service est arrêté, ce qui rend un dernier appel de sortie ?!

+1

Cet article peut aider, bien que les choses se soient simplifiées depuis lors: http://www.microsoft.com/msj/0197/activex/activex0197.aspx –

Répondre