vs2008 创建ATL服务程序bug解决方法
2014-01-20 18:13
351 查看
今天使用vs2008 创建ATL服务程序遇到以下错误:
"事件 ID ( 0 )的描述(在资源( whappsvc )中)无法找到。 本地计算机可能没有必要的注册信息或消息 DLL 文件"
使用的命令
1. AtlServer /Service
2.AtlServer /UnRegServer
通过使用LogEvent 函数定位出错的地方(服务调试起来真的麻烦!),最后定位错误,增加此函数可以在系统日志中,查看相应的日志。
在atlbase.h
在类class ATL_NO_VTABLE CAtlServiceModuleT
在HRESULT Run(int nShowCmd = SW_HIDE) throw()
{
LogEvent(_T("service Real enter run "));
HRESULT hr = S_OK;
T* pT = static_cast<T*>(this);
hr = pT->PreMessageLoop(nShowCmd);
LogEvent(_T("PreMessageLoop %d",hr));
if(hr==S_FALSE)
hr=S_OK;
if (hr == S_OK)
{
if (m_bService)
{
LogEvent(_T("Service started"));
SetServiceStatus(SERVICE_RUNNING);
}
pT->RunMessageLoop();
}
if (SUCCEEDED(hr))
{
hr = pT->PostMessageLoop();
}
return hr;
}函数中
增加 以下代码
if(hr==S_FALSE)
hr=S_OK;、
服务成功运行起来,网上查知,这是vs2008的一个bug,解决方法:
1. 在run函数中增加
if(hr==S_FALSE)
hr=S_OK;
2.
stdafx.h中加入
#define_ATL_NO_COM_SUPPORT
3.
//微软Bug,微软提供处理方法
//hr=CAtlServiceModuleT<CBWSrvModule,IDS_SERVICENAME>::PreMessageLoop(nShowCmd);
//workaround
//if(hr==S_OK&&!m_bDelayShutdown)
//hr=CoResumeClassObjects();
(完)
今天使用vs2008 创建ATL服务程序遇到以下错误:
"事件 ID ( 0 )的描述(在资源( whappsvc )中)无法找到。 本地计算机可能没有必要的注册信息或消息 DLL 文件"
使用的命令
1. AtlServer /Service
2.AtlServer /UnRegServer
通过使用LogEvent 函数定位出错的地方(服务调试起来真的麻烦!),最后定位错误,增加此函数可以在系统日志中,查看相应的日志。
在atlbase.h
在类class ATL_NO_VTABLE CAtlServiceModuleT
在HRESULT Run(int nShowCmd = SW_HIDE) throw()
{
LogEvent(_T("service Real enter run "));
HRESULT hr = S_OK;
T* pT = static_cast<T*>(this);
hr = pT->PreMessageLoop(nShowCmd);
LogEvent(_T("PreMessageLoop %d",hr));
if(hr==S_FALSE)
hr=S_OK;
if (hr == S_OK)
{
if (m_bService)
{
LogEvent(_T("Service started"));
SetServiceStatus(SERVICE_RUNNING);
}
pT->RunMessageLoop();
}
if (SUCCEEDED(hr))
{
hr = pT->PostMessageLoop();
}
return hr;
}函数中
增加 以下代码
if(hr==S_FALSE)
hr=S_OK;、
服务成功运行起来,网上查知,这是vs2008的一个bug,解决方法:
1. 在run函数中增加
if(hr==S_FALSE)
hr=S_OK;
2.
stdafx.h中加入
#define_ATL_NO_COM_SUPPORT
3.
//微软Bug,微软提供处理方法
//hr=CAtlServiceModuleT<CBWSrvModule,IDS_SERVICENAME>::PreMessageLoop(nShowCmd);
//workaround
//if(hr==S_OK&&!m_bDelayShutdown)
//hr=CoResumeClassObjects();
(完)
相关文章推荐
- Oracle创建数据库时出现监听未启动或数据库服务未注册到该监听程序错误解决方法
- 检测到指定的WEB服务器运行的不是ASP.NET 1.1版,您无法运行ASP.NET应用程序或服务和创建ASP.NET程序时候发生错误 HTTP/1.0 500 Server Error的解决方法
- VS2008 在IE8中 调试 ActiveX控件 无法进入断点的解决方法 设置VS2008和IE8 调试ATL MFC ActiveX控件
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
- 关于服务被挖矿程序minerd入侵解决方法
- VS2008在WIN7 X64上不能编译VC++程序的解决方法
- vs2008不能创建C#项目的解决方法
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
- 安装程序无法创建新的系统分区也无法定位现有分区的解决方法
- VS2008 应用程序配置不正确,未能启动该应用程序。重新安装程序可以修复此问题。解决方法
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法 此博文包含图片 (2011-01-20 13:50:37)转载▼ 标签: it 分类: 技术 早上同事用PL/SQ
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法
- 程序调试中出现的Bug与解决方法
- VC6.0 工程转到VS2008一些问题的描述及解决方法(附有VS2008发布程序介绍)
- 解决“安装程序无法创建新的系统分区,也无法定位现有系统分区”问题方法
- 在服务程序中创建用户进程的方法
- ORA-12514 TNS 监听程序当前无法识别连接描述符中请求服务 的解决方法 listener.ora修改
- vs2005中C++程序常见bug及解决方法
- ORACLE“监听程序未启动或数据库服务未注册到该监听程序”解决方法