写了个windows服务程序,一个进程开启两个服务
问题是两个服务都可以注册,但是有一个服务在service.msc中的启动类型项中 不能显示 手动 这个选项,而另外一个就可以,两个服务创建的代码一样,如下:
hService = ::CreateService(hSCM,
"OtherServiceMain",
"OtherServiceMain",
SERVICE_ALL_ACCESS,
SERVICE_WIN32_SHARE_PROCESS, //两个服务共享
SERVICE_DEMAND_START, // start condition
SERVICE_ERROR_NORMAL,
szFilePath,
NULL,
NULL,
NULL,
NULL,
NULL);这个是为什么 ?还有个问题:
SERVICE_TABLE_ENTRY st[] = {
{"OtherService",OtherServiceMain}, {"Service1", ServiceMain},
{NULL, NULL}
};
::StartServiceCtrlDispatcher(st);之后
为什么系统只开启了st中第一个服务,即OtherServiceMain线程启动OtherService服务,Service1为什么没有开启?系统不自动开启所有的线程启动所有的服务吗?
代码中需要设置什么地方吗 ?
问题是两个服务都可以注册,但是有一个服务在service.msc中的启动类型项中 不能显示 手动 这个选项,而另外一个就可以,两个服务创建的代码一样,如下:
hService = ::CreateService(hSCM,
"OtherServiceMain",
"OtherServiceMain",
SERVICE_ALL_ACCESS,
SERVICE_WIN32_SHARE_PROCESS, //两个服务共享
SERVICE_DEMAND_START, // start condition
SERVICE_ERROR_NORMAL,
szFilePath,
NULL,
NULL,
NULL,
NULL,
NULL);这个是为什么 ?还有个问题:
SERVICE_TABLE_ENTRY st[] = {
{"OtherService",OtherServiceMain}, {"Service1", ServiceMain},
{NULL, NULL}
};
::StartServiceCtrlDispatcher(st);之后
为什么系统只开启了st中第一个服务,即OtherServiceMain线程启动OtherService服务,Service1为什么没有开启?系统不自动开启所有的线程启动所有的服务吗?
代码中需要设置什么地方吗 ?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货