手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

用C编写Windows服务程式的五个步骤

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
Windows 服务被设计用于需要在后台运行的应用程式连同实现没有用户交互的任务。为了学习这种控制台应用程式的基础知识,C(不是C )是最好选择。本文将建立并实现一个简单的服务程式,其功能是查询系统中可用物理内存数量,然后将结果写入一个文本文档。最后,您能够用所学知识编写自己的 Windows 服务。

  当初我写第一个NT 服务时,我到 MSDN 上找例子。在那里我找到了一篇 Nigel Thompson 写的文章:“Creating a Simple Win32 Service in C ”,这篇文章附带一个 C 例子。虽然这篇文章很好地解释了服务的研发过程,但是,我仍然感觉缺少我需要的重要信息。我想理解通过什么框架,调用什么函数,连同何时调用,但 C 在这方面没有让我轻松多少。面向对象的方法固然方便,但由于用类对底层 Win32 函数调用进行了封装,他不利于学习服务程式的基本知识。这就是为什么我觉得 C 更加适合于编写初级服务程式或实现简单后台任务的服务。在您对服务程式有了充分透彻的理解之后,用 C 编写才能游刃有余。当我离开原来的工作岗位,不得不向另一个人转移我的知识的时候,利用我用 C 所写的例子就很容易解释 NT 服务之所以然。

  服务是个运行在后台并实现勿需用户交互的任务的控制台程式。Windows NT/2000/XP 操作系统提供为服务程式提供专门的支持。人们能够用服务控制面板来配置安装好的服务程式,也就是 Windows 2000/XP 控制面板|管理工具中的“服务”(或在“开始”|“运行”对话框中输入 services.msc /s——译者注)。能够将服务配置成操作系统启动时自动启动,这样您就不必每次再重启系统后还要手动启动服务。

  本文将首先解释如何创建一个定期查询可用物理内存并将结果写入某个文本文档的服务。然后指导您完成生成,安装和实现服务的整个过程。

  第一步:主函数和全局定义

  首先,包含所需的头文档。例子要调用 Win32 函数(windows.h)和磁盘文档写入(stdio.h):

#include <windows.h>
#include <stdio.h>

  接着,定义两个常量:

#define SLEEP_TIME 5000
#define LOGFILE "C:\\MyServices\\memstatus.txt"

  SLEEP_TIME 指定两次连续查询可用内存之间的毫秒间隔。在第二步中编写服务工作循环的时候要使用该常量。

  LOGFILE 定义日志文档的路径,您将会用 WriteToLog 函数将内存查询的结果输出到该文档,WriteToLog 函数定义如下:

int WriteToLog(char* str)
{
 FILE* log;
 log = fopen(LOGFILE, "a ");
 if (log == NULL)
  return -1;
 fprintf(log, "%s\n", str);
 fclose(log);
 return 0;
}

  声明几个全局变量,以便在程式的多个函数之间共享他们值。此外,做一个函数的前向定义:

SERVICE_STATUS ServiceStatus;
SERVICE_STATUS_HANDLE hStatus;

void ServiceMain(int argc, char** argv);
void ControlHandler(DWORD request);
int InitService();




[1] [2] [3] [4] 下一页

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

热点关注
IDC资讯 虚拟主机 域名注册 托管租用 vps主机 智能建站
网站运营 建站经验 策划盈利 搜索优化 网站推广 免费资源
网站联盟 联盟新闻 联盟介绍 联盟点评 网赚技巧
行业资讯 业界动态 搜索引擎 网络游戏 门户动态 电子商务 广告传媒
网络编程 Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术 Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷 Internet Explorer
网页制作 FrontPages Dreamweaver Javascript css photoshop fireworks Flash
程序设计 Java技术 C/C++ VB delphi
网络知识 网络协议 网络安全 网络管理 组网方案 Cisco技术
操作系统 Win2000 WinXP Win2003 Mac OS Linux FreeBSD
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 价格总览 | 资讯中心 | 友情链接 | 网站地图 | 招贤纳士 | RSS