服务程序问题,我参考了很多服务程序的例子,为什么每次启动服务程序是,都会启动失败,每次都是意外终止。

vmile925 2008-03-26 05:04:33
希望那位高手能给个详细的说明,谢谢喽,我的QQ是365808871.
...全文
44 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cccckaiji 2008-04-17
学习ing
回复
wwp3321 2008-04-17
csdn搜一边先
回复
MEFULEU 2008-04-17

SERVICE_STATUS_HANDLE ssh;
LPSERVICE_STATUS ss;
int main(int argc, char **argv)
{
SERVICE_TABLE_ENTRY ste[2]; //一个Service进程可以有多个线程,这是每个线程的入口表
ste[0].lpServiceName="W.Z.SERVICE"; //线程名字
ste[0].lpServiceProc=ServiceMain;//线程入口地址
ste[1].lpServiceName=NULL; //最后一个必须为NULL
ste[1].lpServiceProc=NULL;
StartServiceCtrlDispatcher(ste);
return 0;
}
void WINAPI ServiceMain(DWORD dwArgc,LPTSTR *lpszArgv)
{
ssh=RegisterServiceCtrlHandler("W.Z.SERVICE",Handler);
ss.dwServiceType=SERVICE_WIN32_OWN_PROCESS|SERVICE_INTERACTIVE_PROCESS;
ss.dwCurrentState=SERVICE_START_PENDING;//file://如用户程序的代码比较多(执行时间超过1秒),这儿要设成SERVICE_START_PENDING,待用户程序完成后再设为SERVICE_RUNNING。
ss.dwControlsAccepted=SERVICE_ACCEPT_STOP;//表明Service目前能接受的命令是停止命令。
ss.dwWin32ExitCode=NO_ERROR;
ss.dwCheckPoint=0;
ss.dwWaitHint=0;
SetServiceStatus(ssh, &ss);
//file://必须随时更新数据库中Service的状态。
// Mycode(); file://这儿可放入用户自己的代码
ss.dwServiceType=SERVICE_WIN32_OWN_
PROCESS|SERVICE_INTERACTIVE_PROCESS;
ss.dwCurrentState=SERVICE_RUNNING;
ss.dwControlsAccepted=SERVICE_ACCEPT_STOP;
ss.dwWin32ExitCode=NO_ERROR;
ss.dwCheckPoint=0;
ss.dwWaitHint=0;
SetServiceStatus(ssh,&ss);
// Mycode();// 这儿也可放入用户自己的代码
}
void WINAPI Handler(DWORD Opcode)
{
switch(Opcode)
{
case SERVICE_CONTROL_STOP: // file://停止Service
//Mycode();//这儿可放入用户自己的相关代码
ss.dwWin32ExitCode = 0;
ss.dwCurrentState =SERVICE_STOPPED;//file://把Service的当前状态置为STOP
ss.dwCheckPoint = 0;
ss.dwWaitHint = 0;
SetServiceStatus (ssh,&ss);//必须随时更新数据库中Service的状态
break;
case SERVICE_CONTROL_INTERROGATE:
SetServiceStatus (ssh,&ss);//必须随时更新数据库中Service的状态
break;
}
}
回复
vmile925 2008-03-26
希望哪位高手给指点指点,在此谢过
回复
相关推荐
发帖
Windows SDK/API
创建于2007-08-02

1206

社区成员

C++ Builder Windows SDK/API
申请成为版主
帖子事件
创建了帖子
2008-03-26 05:04
社区公告
暂无公告