我正在尝试编写我的第一个COM服务EXE。而且我无法在网络上找到一些信息。
服务EXE从其Run()
方法开始执行,我是否需要在其中实现我的主要功能以使我的服务工作或者我是否需要实现与其相关的特定功能?
非常感谢!!
答案 0 :(得分:0)
您没有声明您使用的是C ++和ATL,但可以从问题的标签中猜到。
如果您的COM对象不需要任何全局初始化,则不必修改提供的Run()函数或类似的东西。它的工作方式如下:如果服务未运行,并且某些程序需要创建服务中的COM对象,则COM / DCOM基础结构首先启动该服务。或者,您可以使用任何标准方法预先启动服务(例如,手动,或将其启动类型设置为自动)。服务运行后,将在服务中创建COM对象。
因此,无需额外的全局初始化,您只需在任何本地服务器或进程内服务器中实现COM对象。如果他们需要任何实例初始化,你会把它放到COM对象的构造函数或者它的FinalConstruct方法中(这个方法在构造函数之后调用,所以你已经利用了对象已经存在的事实,你可以如果需要也会失败,因为FinalConstruct返回一个HRESULT。
如果您需要全局(服务范围)初始化代码,那么您可以将它放在几个位置,每个位置都在服务构建的不同阶段。其中一个地方是Run()方法,是的。