ServiceMain、StartServiceCtrlDispatcher
2012-08-07 10:54
573 查看
VOID WINAPI ServiceMain(
DWORD dwArgc,
LPTSTR* lpszArgv);
服务主函数的参数与main函数的参数使用方法类似,但是服务主函数的参数不是通过在命令启动时设定的,而是通过SCM的相关API进行传递的(StartService函数)
SCM要对服务进行管理,就必须知道服务程序的服务主函数。服务程序通过调用StartServiceCtrDispatcher函数原型如下:
BOOL StartServiceCtrlDispatcher(
const LPSERVICE_TABLE_ENTRY lpServiceTable);
结构SERVICE_TABLE_ENTRY的原型如下:
typedef struct _SERVICE_TABLE_ENTRY{
LPTSTR lpServiceName,
LPSERVICE_MAIN_FUNCTION lpServiceProc
}SERVICE_TABLE_ENTRY, *LPSERVICE_TABLE_ENTRY;
其中,lpServiceName为服务名称,lpServiceProc为指向ServiceMain的函数指针。只要将函数的指针赋值给lpServiceProc,在调用StartServiceCtrlDispatcher,这个函数就成为了服务主函数。
DWORD dwArgc,
LPTSTR* lpszArgv);
服务主函数的参数与main函数的参数使用方法类似,但是服务主函数的参数不是通过在命令启动时设定的,而是通过SCM的相关API进行传递的(StartService函数)
SCM要对服务进行管理,就必须知道服务程序的服务主函数。服务程序通过调用StartServiceCtrDispatcher函数原型如下:
BOOL StartServiceCtrlDispatcher(
const LPSERVICE_TABLE_ENTRY lpServiceTable);
结构SERVICE_TABLE_ENTRY的原型如下:
typedef struct _SERVICE_TABLE_ENTRY{
LPTSTR lpServiceName,
LPSERVICE_MAIN_FUNCTION lpServiceProc
}SERVICE_TABLE_ENTRY, *LPSERVICE_TABLE_ENTRY;
其中,lpServiceName为服务名称,lpServiceProc为指向ServiceMain的函数指针。只要将函数的指针赋值给lpServiceProc,在调用StartServiceCtrlDispatcher,这个函数就成为了服务主函数。
相关文章推荐
- API StartServiceCtrlDispatcher I cant md1
- StartServiceCtrlDispatcher
- StartServiceCtrlDispatcher
- 调程序的感慨,StartServiceCtrlDispatcher时1063错误
- Writing a ServiceMain Function(使用RegisterServiceCtrlHandler函数)
- 《深入理解Android 卷1》读书笔记 (一)—— Android Init 浅析之从Main开始到service start
- Android startservice & bindservice的区别
- 安装MySQL时,最后步骤start service出错的解决办法
- android service startService与bindService的区别
- Auto start your service application on Linux boot
- Android系统在新进程中启动自定义服务过程(startService)的原理分析
- RegisterServiceCtrlHandler
- mysql在win7下重装卡在start service配置界面的解决方案
- Implicit intents with startService are not safe:解决办法
- 笔记54--service状态之startService
- Android服务之startService源码分析
- service mysqld start 报错:service mysqld start 报错 090517 13:34:15 [ERROR] Can't open the mysql.plugin table. Please run mysql_upgrade to create it. 090Can't open the mysql.plugin table. Please run mysql
- startService与bindService的区别
- service使用以及startService,stopService,bindService,unbindService方法比较
- metasploit start postgresql service