ATL轻松简单创建NT服务
来源:互联网 发布:电动汽车 大数据 编辑:程序博客网 时间:2024/05/07 10:25
步骤:
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注释的部分做一些清理和回收的工作。
- ATL轻松简单创建NT服务
- ATL NT服务运行过程
- 如何创建简单ATL服务应用
- ATL 7.0 自由线程的 Windows NT 服务不会创建 COM 对象
- vb创建NT服务
- C# 创建Windows(NT)服务
- ATL 7.0中 NT服务的处理流程
- 用C#创建Windows(NT)服务
- WINDOWS NT服务的创建方法
- 用C#创建Windows(NT)服务
- 用C#创建Windows(NT)服务
- 用C#创建Windows(NT)服务
- 用C#创建Windows(NT)服务
- 用C#创建Windows(NT)服务
- 用C#创建Windows(NT)服务
- 用C#创建Windows(NT)服务
- 用C#创建Windows(NT)服务
- vs2010 ATL创建windows服务程序
- 金蝶总裁徐少春:中国软件企业将从哪里赚钱
- 对联广告代码
- 一个母亲一生撒的8个谎言[转载]
- Lua入门
- 编程是高科技吗?
- ATL轻松简单创建NT服务
- SQL
- 表妹高考成绩出来了
- oracle中时间的一些写法
- Blogger的痛心事——没人回贴
- Java与.NET 的Web Services相互调用(二)
- 树结构的查询
- 基于Google Map的IP地址查询和手机归属地查询
- JSP页面翻译原理