首页 > 编程资源分享区 > C/C++源代码共享 > C编写Windows服务程序的五个步骤(4)
2006
05-15

C编写Windows服务程序的五个步骤(4)

在 ServiceMain 中,检查 InitService 函数的返回值。如果初始化有错(因为有可能写日志文件失败),则将服务状态置为终止并退出 ServiceMain:

  error = InitService();

  if (error)

  {

   // 初始化失败,终止服务

   ServiceStatus.dwCurrentState = SERVICE_STOPPED;

   ServiceStatus.dwWin32ExitCode = -1;

   SetServiceStatus(hStatus, &ServiceStatus);

   // 退出 ServiceMain

   return;

  }

  如果初始化成功,则向 SCM 报告状态:  

  // 向 SCM 报告运行状态

  ServiceStatus.dwCurrentState = SERVICE_RUNNING;

  SetServiceStatus (hStatus, &ServiceStatus);

  接着,启动工作循环。每五秒钟查询一个可用物理内存并将结果写入日志文件。

  如 Listing 1 所示,循环一直到服务的状态为 SERVICE_RUNNING 或日志文件写入出错为止。状态可能在 ControlHandler 函数响应 SCM 控制请求时修改。


留下一个回复