Bonjour,
J'essaie de créer un Service en C++ contenant des objets COM sous Visual Studio 2015 pro (et Windows 7).
J'ai créé un projet ATL win32, sans MFC, sous forme de Service executable (pas DLL).
Appelons-le MonServ.exe.
J'ai ajouté un objet COM, un membre et une méthode pour essayer.
J'ai ajouté un appel à CoInitializeSecurity(...) dans HRESULT CMonServModule::InitializeSecurity() comme unique tâche "TODO" suggérée par le wizard.
Pas de soucis jusque là.
(un détail curieux, le wizard a en fait créé deux projets, le deuxième étant une DLL avec le nom de mon executable suivi de PS en suffix, MonServPS.dll (PS comme Proxy/Stub ???), j'en fais quoi ?).
J'ai ensuite créé un autre projet de test win32 console pour accéder à l'objet COM du premier.
Et là, je ne parviens pas à accéder à l'objet COM du service lorsque celui-ci est enregistré comme tel par windows.
Je m'explique.
Je lance MonService.exe avec l'option -Service: il est enregistré comme service sous Windows, mais je ne parviens pas à communiquer avec lui depuis mon prg de test (le service est bien demarré, ou arrêté, ou en pause, rien n'y change).
Je lance MonService.exe avec l'option -RegServer: là, Windows le retire de sa liste des services (grrr, pourquoi ???). Par conte mon prg de test accède alors bien à l'objet COM (et lance comme par magie MonService.exe que je vois apparaitre dans la liste des tâches, puis redisparait aussitôt lorsque mon prg de test se termine).
En bref, j'ai un service, ou un objet COM accessible, mais pas les deux en même temps, et je ne comprends pas ce qui manque pour cela. Le tout étant créé entièrement par les wizard de Visual Studio 2015.
Merci pour votre aide.
Partager