我试图了解使用ATL编写Windows服务的概念。
我创建了一个项目,并了解我可以覆盖CAtlServiceModuleT函数以实现我对服务的需求。
我想要做的是让服务创建一个COM对象(称为Manager)来处理作业的调度和执行。
如何创建一个COM对象的单个实例,该实例在处理所有作业的整个服务生命周期内都可用?
我设想编写一个客户端程序来调用Manager公开的接口上的函数,以创建/读取/更新/删除作业。
我的想法是,在我的客户端程序连接到它之前,服务不会创建Manager对象 - 当最后一个客户端与它断开连接时,COM会破坏管理器 - 从而杀死它处理作业的能力。
任何关于此的好文件都将不胜感激!
更新
从CotreateInstance中调用CAtlServiceModuleT :: Run()的重写版本是否就这么简单,那么当服务关闭时,进行最终的Release调用?!