ServiceMain、StartServiceCtrlDispatcher

来源:互联网 发布:南京行知实验中学电话 编辑:程序博客网 时间:2024/05/29 16:26
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,这个函数就成为了服务主函数。

原创粉丝点击