单一可执行和不同的服务

时间:2012-07-10 18:48:34

标签: c++ windows-services

我想拥有多个服务的Single Executable部分。即服务名称将不同,但可执行文件将不同。 如何识别ServiceMain

中调用的服务

1 个答案:

答案 0 :(得分:3)

你不能。 您应该为每个服务提供自己的ServiceMain功能。

http://msdn.microsoft.com/en-us/library/windows/desktop/bb540475%28v=vs.85%29.aspx给出了一个例子。

当使用" INSTALL"运行此应用程序时参数,它使用CreateService函数将自身注册为服务。如果您的可执行文件提供多种服务,则需要多次调用CreateService。

当应用程序运行时没有" INSTALL"参数,它填充DispatchTable并将其传递给StartServiceCtrlDispatcher。如果您的可执行文件支持多个服务,则DispatchTable将包含多个条目。为每个条目提供不同的ServiceMain函数,Windows将调用正确的函数。