jjzjj

ServiceMain

全部标签

c++ - 是否每个 Windows 服务都调用其可执行的 main 函数?

我有一个关于Windows服务的非常基本的问题,我有这个安装的main函数,我可以用它来安装我的服务,还有一些配置数据加载到main函数中:intwmain(intargc,WCHAR*argv[]){//itreadsconfigandfillaglobalstruct.ReadConfig();//ifcommand=='install'install_service();}这是服务的主要功能:voidWINAPIServiceMain(DWORDargc,WCHAR*argv[]){//thismethodretrievestheglobalconfigobject.autoco

c - 使用 StartServiceCtrlDispatcher 从 C 启动 Windows 服务与 StartService 有什么区别?

我已尝试使用StartServiceCtrlDispatcher(),如https://msdn.microsoft.com/en-us/library/windows/desktop/bb540475(v=vs.85).aspx中所述,它可以工作,只是参数不会传递给SvcMain。我可以使用StartService()来解决这个问题吗?这两种启动服务的方法除了StartService()似乎需要的额外代码外还有其他区别吗? 最佳答案 这是服务启动的方式:首先,某些进程必须调用StartService()以告知服务控制管理器(SCM

c++ - 应该在 ServiceMain 上创建一个新线程?

MSDN说:“ServiceMain函数应该创建一个全局事件,在此事件上调用RegisterWaitForSingleObject函数,然后退出。这将终止运行ServiceMain函数的线程,但不会终止服务...”所以问题是:应该在ServiceMain函数中创建一个新线程来执行服务代码,或者我可以简单地将服务设置为RUNNING状态并使用ServiceMain线程来运行服务代码?如果ServiceMain线程用于运行服务代码,即使服务状态设置为RUNNING,SCM也会保持锁定状态? 最佳答案 我不认为MSDN中的声明所描述的实现