前言
本文主要是对windows服务的一个简介,包含基本概念与编写代码时的基本逻辑。
简介
服务控制器(SCM):
控制服务安装,删除,启动,停止等。。。
对系统中所有服务进行管理(包括驱动)。
SCM管理着系统中已经安装的服务程序和设备驱动程序数据库。
数据库中保存了,系统安装了哪些服务,每一个服务的详细信息(启动信息,安全属性,控制接口等)
服务分类:
1. 服务应用程序 (用户态服务需要遵守SCM接口规范)
2. 内核驱动服务程序
函数功能:
服务主函数(serviceMain):
1. 服务启动时执行的代码入口,由SCM调用
服务控制处理函数:
1. 注册控制处理函数
向SCM注册一个服务控制处理函数
2. 控制处理函数:
用于处理SCM向服务传递的控制请求(启动,停止等)
代码逻辑
1 //===Main函数 2 void main() 3 { 4 if(服务已创建) 5 { 6 //1. 向SCM注册服务主函数 serviceMain 7 } 8 else 9 { 10 //1. sc.exe 创建服务 11 //2. API 创建服务 12 } 13 } 14 15 //===服务主函数 16 void WINAPI serviceMain(DWORD argc,LPTSTR *argv) 17 { 18 //1. 注册服务控制处理函数 19 //2. 设置服务运行状态 20 } 21 22 //===服务控制处理函数 23 void WINAPI serviceCtrlHandler(DWORD Opcode) 24 { 25 switch(Opcode) 26 { 27 case xxx: //启动 28 case xxxx: //停止 29 case xxxxx://其他 30 } 31 }