ATL轻松简单创建NT服务

原创 2006年06月26日 13:56:00

步骤:

1.  打开VS,创建一个ATL项目,名为MService

2.  ATL向导“应用程序设计”选项,去掉属性化,选择“服务(EXE)”选项,点击完成。

这时,我们就得到了一个什么也不做的NT服务,这时我们应该重写CMServiceModule 从模板CAtlServiceModuleT继承下的几个函数,来打造我们自己的NT服务。

3.  重写CMServiceModule继承下来的2个函数:

class CMServiceModule : public CAtlServiceModuleT< CMServiceModule, IDS_SERVICENAME >

{

public :

     DECLARE_LIBID(LIBID_MServiceLib)

     DECLARE_REGISTRY_APPID_RESOURCEID(IDR_MSERVICE, "{FA2DF597-14BD-44E1-820E-E5CF394CA58E}")

     HRESULT InitializeSecurity() throw()

     {

         // TODO : 调用 CoInitializeSecurity 并为服务提供适当的

         // 安全设置

         // 建议 - PKT 级别的身份验证、

         // RPC_C_IMP_LEVEL_IDENTIFY 的模拟级别

         // 以及适当的非空安全说明符。

 

         return S_OK;

     }

 

     HRESULT PreMessageLoop(int nShowCmd) throw();

     HRESULT PostMessageLoop() throw();

};

HRESULT CMServiceModule::PreMessageLoop(int nShowCmd) throw()

{

     HRESULT hr = __super::PreMessageLoop(nShowCmd);

 

     if (SUCCEEDED(hr) && !m_bDelayShutdown)

         hr = CoResumeClassObjects();

 

     if (SUCCEEDED(hr))

     {

         // Add any custom code to initialize your service

 

     }

 

     return hr;

}

 

HRESULT  CMServiceModule::PostMessageLoop() throw()

{

     HRESULT hr = __super::PostMessageLoop();

 

     if (SUCCEEDED(hr))

     {

         // Add any custom code to uninitialize your service

 

     }

 

     return hr;

}

   

4.  这时你可以在PreMessageLoop注释的部分可以初始化你的数据,并执行你的代码,你也可以开一个线程做任何你想做的事情。而在PostMessageLoop注释的部分做一些清理和回收的工作。

相关文章推荐

Windows Service的PreMessageLoop BUG修复

Windows Service的PreMessageLoop   HRESULT PreMessageLoop(int nShowCmd)    {        HRESULT hr;       ...

VS2005 ATL WINDOWS服务感想

  最近写的WINDOWS 服务,以前用VC6写过简单的服务。VC6 带的ATL 创建服务后,会生成一个继承于CcomModule 的类,并覆盖了START、STOP等(不记得了),只需在START、...
  • udpcn
  • udpcn
  • 2007年01月23日 18:14
  • 3363

如何创建 windows NT/Windows 2000 服务(Service)

原文:http://www.codeproject.com/KB/system/windows_nt_service.aspx没有严格按原文翻译,只是写了原文的大概意思。作者是一名来自印度的开发员,叫...
  • mostone
  • mostone
  • 2011年07月23日 12:37
  • 682

一个简单的NT驱动之创建设备对象函数(CreateDevice)

/**************************************************************** * 函数名称:CreateDrivce * 功能描述:初始化设备...
  • zacklin
  • zacklin
  • 2012年04月13日 17:16
  • 1024

Windows ATL Service 服务的创建(VS2010)

1 使用VS2010床加一个ATL服务项目 第一步 第二步 第三步 创建好之后, 重写父类的以下方法 HRESULT RegisterAppId(bool ...

VS2010 ATL服务程序编写全攻略(三) - 创建用户桌面进程(突破Session 0隔离)

上一篇中,我们完成了服务层与应用层的内核对象访问。 这篇文件,将主要说明如何在服务层创建一个用户进程,显示在用户桌面上,并且允许交互。 这里就引入了Windows Vista之后的Session ...

vs2010 ATL创建windows服务程序

1,new project -> 选择 ATL Project,  设置工程名,如:PureSsl 2,在向导的“Application Setting”页,“Application Type”项选...

使用ATL创建简单ActiveX控件(三) —— 添加连接点

创建过程以VS2010为例,分三篇(创建ATL项目、添加方法/属性和枚举、添加连接点)演示。本篇演示添加连接点。 传送门: 《使用ATL创建简单ActiveX控件(一) —— 创建ATL项目 》 ...

OpenWhisk 简介:轻松创建微服务

OpenWhisk 简介:轻松创建微服务 OpenWhisk 简介:轻松创建微服务 OpenWhisk 是一个开源的、事件驱动的计算平台。您可以将您的操作代...

C++ATL服务类

  • 2013年10月01日 09:03
  • 3KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ATL轻松简单创建NT服务
举报原因:
原因补充:

(最多只允许输入30个字)