VC++ Service编程(三)服务入口
来源:互联网 发布:网络和ip地址计算 编辑:程序博客网 时间:2024/06/07 16:08
服务入口
通常,我们把服务做成控制台程序。控制台程序的入口是main函数。main函数从注册表中的ImagePath值来获取参数,提供给服务。
当SCM(服务控制管理器)开启一个服务,它就开始等待这个服务调用StartServiceCtrlDispatcher函数。使用下面的原则:
1、SERVICE_WIN32_OWN_PROCESS类型的服务必须在主线程中马上调用StartServiceCtrlDispatcher函数。在服务启动后,你可以像“服务ServiceMain函数”中描述的那样,做任何初始化。
2、 如果服务的类型是SERVICE_WIN32_SHARE_PROCESS,并且在这个服务中要为其它服务提供通用初始化。如果这些通用初始化可以在30秒内完成,你可以在主线程中调用StartServiceCtrlDispatcher函数之前做这些事情。否则,就必须创建另外一个线程来做这些通用的初始化。同时,在主线程中调用StartServiceCtrlDispatcher。
StartServiceCtrlDispatcher为程序中的所有服务提供一个SERVICE_TABLE_ENTRY结构。每一个结构都指名服务的名称和入口。
如果StartServiceCtrlDispatcher成功,调用它的线程要等到程序中所有服务都中止后才会返回。SCM利用一个已命名的管道来向这个线程发送控制请求。这个线程扮演一个控制调度员的角色,执行下面的任务:
1、当新服务开始运行时,创建一个新的线程来调用相关的入口。
2、调用相关的handler函数来处理服务控制请求。
- VC++ Service编程(三)服务入口
- VC++ Service编程(八)多线程服务
- VC++ Service编程(四)服务ServiceMain函数
- VC++ Service编程(七)创建多线程服务
- WIN32服务程序(Service)VC++封装
- Service的使用(三)绑定服务
- Android服务Service-AIDL(三)
- windows service (三)打包安装服务
- VC++建立Service服务应用程序
- VC编程进行windows NT 服务程序的创建,删除,启动,停止 【NT Service编程】
- VC 服务程序编程
- VC服务编程
- VC服务编程
- Android service(三)前台服务
- [阶段三]Android服务(Service)
- VC++ 实战OLEDB编程(三)
- VC++ 实战OLEDB编程(三)
- VC图像编程学习(之三)
- Linux设备模型浅析之uevent篇
- EE屌丝的数据结构笔记(一)
- linux内核内存管理学习之三(slab分配器)
- VC++ Service编程(二)编写ServiceMain函数
- 【熟悉引擎第三步】Cocos2d-x 3.x中使用物理引擎动态添加元素(点击事件)
- VC++ Service编程(三)服务入口
- Netlink实现热拔插监控
- 第十四周项目三 成绩大折腾
- VC++ Service编程(四)服务ServiceMain函数
- VC++ Service编程(五)编写Control Handler函数
- VC++ Service编程(六)Control Handler函数
- Java容器类基础
- hdu 1664 Different Digits, spoj 3929 , 同余,bfs
- jsp超链接传递中文乱码问题