从COM服务启动EXE

From a COM Service EXE gets started

本文关键字:EXE 启动 服务 COM      更新时间:2023-10-16

我正在尝试编程我的第一个COM服务EXE。我在网上找不到一些信息。

一个服务EXE开始执行从它的Run()方法,我需要实现我的主要功能在它得到我的服务工作或我需要实现一个特定的功能,是相关的?

非常感谢!!

您没有说明您正在使用c++和ATL,但可以从给出的标签中猜到。

如果你的COM对象不需要任何全局初始化,你不需要修改提供的Run()函数或任何类似的东西。它的工作原理是这样的:如果服务没有运行,并且某个程序需要从你的服务创建一个COM对象,COM/dcom基础结构首先启动服务。或者,您可以使用任何标准方法(例如手动或将其启动类型设置为自动)预启动服务。一旦服务运行,COM对象就会在服务中创建。

因此,不需要额外的全局初始化,您只需在任何本地服务器或进程内服务器中实现您的COM对象。如果它们需要任何实例初始化,你将把它放到COM对象的构造函数中,或者放到它的FinalConstruct方法中(这个方法在构造函数之后被调用,所以你可以利用对象已经存在的事实,如果需要的话,你也可以失败,因为FinalConstruct返回一个HRESULT)。

如果您需要全局(服务范围)初始化代码,那么您可以将其放在几个地方,每个地方都在服务构造的不同阶段。Run()方法就是其中之一。