主要功能

【勇芳软件工作室】汉化HomePreviousNext

服务程序通常用作控制台应用程序。控制台应用程序的入口点是主要功能。主函数从服务的注册表项中的ImagePath值接收参数。

当SCM启动一个服务程序时,它等待它调用StartServiceCtrlDispatcher函数。使用以下准则。

* SERVICE_WIN32_OWN_PROCESS类型的服务应立即从主线程调用StartServiceCtrlDispatcher.您可以在服务启动后执行任何初始化,如ServiceMain函数中所述。

*如果服务类型为SERVICE_WIN32_SHARE_PROCESS,并且程序中的所有服务都有常用的初始化功能,则可以在调用StartServiceCtrlDispatcher之前在主线程中执行初始化,只要花费少于30秒即可。否则,您必须创建另一个线程来执行公共初始化,而主线程调用StartServiceCtrlDispatcher.您仍然应该按照ServiceMain函数所述执行任何特定于服务的初始化。

StartServiceCtrlDispatcher功能为流程中包含的每个服务采用SERVICE_TABLE_ENTRY结构。每个结构指定服务名称和服务的入口点。

如果StartServiceCtrlDispatcher成功,调用线程不会返回,直到进程中的所有正在运行的服务已终止。SCM通过命名管道向该线程发送控制请求。线程作为【控制调度员】,执行以下任务:

*创建一个新线程,以便在启动新服务时调用相应的入口点。

*调用相应的处理器函数来处理服务控制请求。

有关详细信息,请参阅编写服务计划的主要功能.