`
yingyingol
  • 浏览: 746233 次
文章分类
社区版块
存档分类
最新评论

开发Windows NT的后台服务

 
阅读更多
摘 要:利用一组WIN32 API函数将自主开发的服务器程序扩展为NT的一项后台服务,让NT把其当作系统服务自动加载,从而扩充NT服务器的后台功能,并结合一 个实例说明开发中应做的工作。
  关键词:Windows NT 后台服务 服务控制管理器

  在WINDOWS NT服务器中,NT的一些后台系统服务随着NT的启动而自动加载, 不需用户人工 干预,这种方式不仅简化了服务器启动过程,同时也使一些重要服务的启动更加安全可靠。 而且,在服务器启动以后,用户也可以利用控制面板中服务控制面板应用程序灵活地设置这 些后台服务的启动属性,方便了用户对NT后台服务的管理。笔者在开发基于NT服务器的应用 程 序时,发现利用一组WIN32 API 函数完全可以将自己开发的服务器程序扩展为NT的一项后台 服务,让NT把其当作系统服务自动加载,从而扩充NT服务器的后台服务功能。下面结合一个 实例,概述开发NT后台服务应用程序的方法和步骤。

1 自定义后台服务注册
  在NT操作系统中,所有的后台服务全都由服务控制管理器进行统一管理,这些后台服务的状 态数据都保存在服务控制管理器数据库中。所以要想创建一个新的后台服务,在应用程序的 主模块里应首先调用函数OpenSCManager打开该数据库,再调用函数CreateService在此数据 库中创建1个新的服务线程对象,并将该线程对象启动属性设置为随系统启动自动加载,这 样NT在重新启动时该线程就会由NT自动启动。完成这一步,仅仅实现了后台服务线程对象的 注册,还没有建立与服务控制管理器的联结。

//在服务控制管理器数据库中注册后台服务线程


2 定义后台服务线程入口点ServiceMain
  在此之前应该首先定义服务线程入口表(SERVICETABLEENTRY),它记录 了服务器应用程序 要执行的所有后台服务的入口点(在1个服务器应用程序中可同时加载多个后台服务线程)。 每一个后台服务线程都有自己的ServiceMain执行入口点。当服务控制管理器接收到启动后 台服务的命令后,它会首先将启动命令发送到服务控制分配器中,然后,服务控制分配器就 会按照服务线程入口表定义的对应关系启动1个新线程去执行指定的后台服务。在Servic eMain中应当调用RegisterServiceCtrlHandler先注册1个服务控制函数Handler,它负责接 收和处理服务控制管理器发出的命令,并通过调用SetServiceStatus重新设置后台服务状态 ,将被启动的后台服务状态信息回送到服务控制管理器中。这些操作主要是在后台服务线程 启动之前完成一些必要的初始化工作。ServiceMain及Handler是占位符,在程序中可以用不 同的名称定义自己的后台服务线程入口函数和服务控制处理函数。


3 建立应用程序主线程与服务控制管理器的连接
  在创建了服务器应用程序的所有服务线程对象后,当NT重新启动加载该服务器进程或者从服 务控制面板中手工启动该服务进程时, 服务器应用程序主线程就会调用函数StartServiceCt rlDispatcher建立服务进程主线程与服务控制管理器的连接,使得主线程扮演起服务控制分 配器的角色,只有当所有的服务线程终止后,该主线程才会完成任务并返回。利用上述过程 建立起来的连接,服务控制管理器会将服务控制面板中用户对服务进程的控制命令(Start、 Terminate等)发送到主线程中,交给服务控制分配器处理。


  在该示例中,后台服务线程在服务器上创建1个网络套接字,并在6002端口监听TCP/IP客 户 的连接请求。如果与新的客户建立连接后,首先向其发送欢迎消息,接下来,只要每收到客 户发送过来的消息,就会向其回送1个确认信息,直到连接断开以后重新进入监听状态。感 兴趣的读者可以将本程序在VC5.0中编译成可执行文件(在AppWizard中选择Win32 Console A pplication,工程名为ntservice),然后在WINDOWS NT SERVER4.0的控制台中输入“ntservi ce -register”,再重新启动服务器,打开控制面板中的服务管理器,就可以看到Service Example已启动。如果要测试服务例程的响应功能,可以自己编写1个TCP/IP客户程序,并连 接 到该服务器的端口6002。本程序在VC5.0中编译连接,在中文WINDOWS NT SERVER4.0中调试 通过。

分享到:
评论

相关推荐

    Windows2000源代码

    Windows 2000平台包括了Windows 2000 Professional 和Windows 2000 Server前后台的集成,下面仅从五个方面简要地介绍一下它的新特性和新功能。  一、活动目录  Windows 2000 Server在Windows NT Server 4.0的...

    系统开发采用C/S模式,后台数据库系统采用SQL

    系统开发采用C/S模式,后台数据库系统采用SQL Server ,操作系统采用Windows NT / 2000,开发工具采用Delphi。

    Discuz!NT v3.9 beta

    NT全面支持Windows server 2008 R2系统,并且支持集成模式。免费为商业用户提供64位编译版本。Discuz!NT 为项目用户专门开发了负载均衡、数据库读写分离、分布式缓存和检测工具一系列套件,为超大型社区建设提供了...

    人事管理系统开发论文.

    人事管理系统开发论文.1.3.2后台数据库开发工具 Microsoft SQL server 2000 之所以选择它是因为 它有以下的优点: 1. 真正的客户机/服务器体系结构。 2.图形化用户界面,使系统管理和数据库管理更加直观、简单。 ...

    Discuz!NT 3.1正式版源码

    Discuz!NT 3.1版本功能亮点十足,安装、升级流程全面改善,产品安装升级...NT 3.1版本为项目用户专门开发了负载均衡、数据库读写分离、分布式缓存和检测工具一系列套件,为超大型社区建设提供了完美的技术解决方案。

    深入详解C编写Windows服务程序的五个步骤

    Windows 服务被设计用于需要在后台运行的应用程序以及实现没有用户交互的任务。为了学习这种控制台应用程序的基础知识,C(不是C++)是最佳选择。本文将建立并实现一个简单的服务程序,其功能是查询系统中可用物理...

    Discuz!NT2.5

    NT2.5新增六大创新: 创新一:支持最新Windows Server2008、IIS7、Silverlight 2.0 beta2 <br>创新二:新增商品交易插件,社区系统自带应用插件化 <br>创新三:优化用户在线处理,提高负载能力,减少等待...

    FScadaV3_.net_FScada_组态_

    ,支持.Net扩展,是中小监控组态系统的优选方案,特别适用于组态和管理合并系统,采用.Net开发管理平台与... 在服务器客户端模式下,FScada服务器可以作为NT Service在后台免维护运行,客户端可以使用桌面版或者WEB版。

    将Jar转成可执行的Exe程序

    本软件可以将 Jar 文件转化为 Exe 可执行文件,使采用 Java 开发的软件更加... 本软件可以生成:“控制台程序”,“隐藏控制台的 Windows 窗口程序”以及“后台启动运行的 Windows NT 服务程序”三种类型的可执行文件。

    Jar2Exe 免费版

    本软件可以将 Jar 文件转化为 Exe 可执行文件,使采用 Java 开发的软件更加... 本软件可以生成:“控制台程序”,“隐藏控制台的 Windows 窗口程序”以及“后台启动运行的 Windows NT 服务程序”三种类型的可执行文件。

    基于JSP技术开发BBS论坛系统 毕业论文+论文答辩PPT

    基于JSP技术开发BBS论坛系统的设计与实现 本系统基于B/S模式,采用流行的JSP+JavaBean+后台数据库...服务器端:Windows NT/Windows2000,Tomcat 5.0,JDK 1.5及其以上版本,IE等; 数据库:采用MYSQL,运行于服务器端。

    Discuz!NT 3.1免安装版(0428)源码

    NT 3.1版本为项目用户专门开发了负载均衡、数据库读写分离、分布式缓存和检测工具一系列套件,为超大型社区建设提供了完美的技术解决方案。 新增功能列表 1、全新的门户化聚合首页 2、游客发帖时,帖子页面直接...

    基于JSP技术开发BBS论坛系统的设计与实现 毕业设计

    基于JSP技术开发BBS论坛系统的设计与实现 本系统基于B/S模式,采用流行的JSP+JavaBean+后台数据库...服务器端:Windows NT/Windows2000,Tomcat 5.0,JDK 1.5及其以上版本,IE等; 数据库:采用MYSQL,运行于服务器端。

    Discuz!NT3.1免安装版源码

    NT 3.1版本为项目用户专门开发了负载均衡、数据库读写分离、分布式缓存和检测工具一系列套件,为超大型社区建设提供了完美的技术解决方案。 新增功能列表 全新的门户化聚合首页 游客发帖时,帖子页面直接显示游客...

    华盾服务器管理专家 3.0.3.78.rar

    常用的windowsNT4、windows2000,、windows2003、 windows2008、Redhat9、Ubuntu、Redhat AS4/AS5等操作系统一网打尽全部完美支持。支持IIS5、IIS6、IIS7、Apache1.3、Apache2.0、Apache2.2等 Web服务软件。   ...

    毕业设计(论文)-基于java的药品管理系统

    MySql 是一种高效的关系数据库系统,它与 WindowsNT/2000 及 Windows9x 等操作系 统紧密集成。这种安排使 MySql能充分利用操作系统所提供的特性。对于今天复杂的客户 /服务器系统来说,MySql是一个很好的选择。

    vlan客户端

    VLAN作为完善的企业IT运维管理软件,可帮您实现简单、快捷的企业网络管理,主要由以下 功能模块组成: 系统管理模块 ...通过使用目前最新版本的WDK开发,可以在全部NT体系架构的windows系统上运行。

    iPhoto相册系统

    后台模块管理,统一删除不需要加载或显示的模块…… iPhoto多用户相册系统(简称 iPhoto,中国国家版权局著作权登记号 2005SRBJ1880)是基于.NET2.0平台,c#开发的,运用于Windows NT服务环境下,多用户相册程序的最贴心...

    Discuz!NT官方版下载 v3.9 beta

    NT全面支持Windows server 2008 R2系统,并且支持集成模式。免费为商业用户提供64位编译版本。Discuz!NT 为项目用户专门开发了负载均衡、数据库读写分离、分布式缓存和检测工具一系列套件,为超大型社区建设提供了...

Global site tag (gtag.js) - Google Analytics