NT服务中线程间相互关系

王朝other·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

NT服务

当服务安装好之后

当在MMC里选择 启动服务

服务进程启动,入口是服务程序的main()函数

main()调用StartServiceCtrlDispatcher()并挂起

因为一个服务进程可以支持多个服务,对于每个服务

StartServiceCtrlDispatcher()产生一个线程来执行该服务

每个服务的入口地址在调用StartServiceCtrlDispatcher()时指定

假定某服务的入口是service_main()

service_main()一开始就调用RegisterServiceCtrlHandler()来

注册服务控制处理程序,该服务控制处理程序将由执行main()的那个线程调用,而不是执行service_main()的那个线程

假定该服务处理程序的入口是service_ctrl()

service_ctrl()根据参数传递进来的控制命令

比如SERVICE_CONTROL_PAUSE、SERVICE_CONTROL_CONTINUE

或SERVICE_CONTROL_STOP等来控制服务的运行

service_main()在注册完了服务控制处理程序之后开始服务的真正工作

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航