【发布时间】:2011-05-09 03:26:34
【问题描述】:
我正在努力理解使用 ATL 编写 Windows 服务的概念。
我已经创建了一个项目,并且了解我可以重写 CAtlServiceModuleT 函数来满足我对服务的需求。
我想做的是让服务创建一个处理作业调度和执行的 COM 对象(称为 Manager)。
如何创建在处理所有作业的服务的整个生命周期中都可用的 COM 对象的单个实例?
我设想编写一个客户端程序,调用 Manager 公开的接口上的函数,以创建/读取/更新/删除作业。
我的想法是,在我的客户端程序连接到它之前,Service 不会创建 Manager 对象 - 当最后一个客户端与它断开连接时,COM 会破坏管理器 - 从而扼杀它处理作业的能力。
任何关于此的好的文档将不胜感激!
更新:
会不会像从 CAtlServiceModuleT::Run() 的覆盖版本中调用 CoCreateInstance 一样简单,然后在服务关闭时进行最终的 Release 调用?!
【问题讨论】:
-
这篇文章可能会有所帮助,尽管从那时起事情可能变得更容易:microsoft.com/msj/0197/activex/activex0197.aspx
标签: c++ com windows-services atl