ATL服务中的COM对象生存期管理

时间:2010-11-12 15:24:42

标签: c++ com windows-services atl

我试图了解使用ATL编写Windows服务的概念。

我创建了一个项目,并了解我可以覆盖CAtlServiceModuleT函数以实现我对服务的需求。

我想要做的是让服务创建一个COM对象(称为Manager)来处理作业的调度和执行。

如何创建一个COM对象的单个实例,该实例在处理所有作业的整个服务生命周期内都可用?

我设想编写一个客户端程序来调用Manager公开的接口上的函数,以创建/读取/更新/删除作业。

我的想法是,在我的客户端程序连接到它之前,服务不会创建Manager对象 - 当最后一个客户端与它断开连接时,COM会破坏管理器 - 从而杀死它处理作业的能力。

任何关于此的好文件都将不胜感激!

更新

从CotreateInstance中调用CAtlServiceModuleT :: Run()的重写版本是否就这么简单,那么当服务关闭时,进行最终的Release调用?!

1 个答案:

答案 0 :(得分:2)

您可以使用CComClassFactorySingleton创建此类对象。