在Windows启动时挂起CreateService

Hang on CreateService when windows is starting

本文关键字:挂起 CreateService 启动 Windows      更新时间:2023-10-16

我将我的程序注册为Windows服务。当我重新启动窗口时,该服务将永远START_PENDING。在我跟踪之后,我发现它挂在了CreateService功能上。

hService=CreateService( hSCManager,
                            pszDriverName,
                            pszDriverName,
                            SERVICE_ALL_ACCESS,
                            SERVICE_KERNEL_DRIVER,
                            SERVICE_DEMAND_START,
                            SERVICE_ERROR_NORMAL,
                            pszDriverPath,
                            NULL,
                            NULL,
                            NULL,
                            NULL,
                            NULL);

我可以通过在重新启动之前创建服务来解决问题,但我想知道挂起发生了什么。有人知道吗?

如果我没记错的话,服务只能创建一次。您不必再调用创建服务函数!我不建议在Windows启动过程中创建它。

如以下 MSDN 示例中所示,您必须使用"install"命令行参数启动给定的示例软件才能创建服务。在任何其他情况下,服务被视为已安装。

请注意,在示例中,使用 StartServiceCtrlDispatcher 函数来启动服务 main 函数(在本例中为 SvcMain)。

http://msdn.microsoft.com/en-us/library/windows/desktop/bb540476(v=vs.85).aspx

具有服务的应用程序通常具有注册和安装其服务的安装程序。当您安装应用程序时,所有服务都已创建并注册,无需在引导系统时再次安装它们。Windows 在启动服务时将此函数作为常规函数执行。

您上面提到的功能用于在应创建新服务时安装程序中的服务安装。