您的位置:首页 > 大数据 > 人工智能

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,这个函数就成为了服务主函数。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息