我按照微软的文档说明上写了一个非常简单的服务程序:
extern "C" DWORD PASCAL EXPORT XHW_Init(DWORD dwData)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
DWORD dwThreadID = 0;
CreateThread ( NULL, 0, ProcThread, NULL, 0, &dwThreadID );
dwData = 1;
return 1;
}
其他导出函数都按照微软的例子没有做任何修改,但是我用 RegisterService() 注册服务时返回 代码5“访问被拒绝”的错误,我又按照文档说明在注册表中加入了服务注册项如下:
REGEDIT4
[HKEY_LOCAL_MACHINE\Services\XHWSVR]
"Order"=dword:00000008
"Dll"="XhwSvr.dll"
"Prefix"="XHW "
"DisplayName"="XHW Service"
"Description"="XieHongWei's Service"
"IsEnabled"=dword:00000001
"Keep"=dword:00000001
"Index"=dword:00000000
我将 SmartPhone 系统重启后用 ActivateService() 函数激活服务却返回错误代码2(文件找不到),代码如下:
HANDLE hd = ActivateService(L"BTAGSVC", 0) ;
if ( hd != NULL )
{
AfxMessageBox ( L" 成功启动服务" );
}
else
{
TCHAR szBuf[80];
wsprintf(szBuf, L"Failed with error %d", GetLastError() );
AfxMessageBox(szBuf);
return FALSE;
}
我已经将“XhwSvr.dll”文件拷贝到 “\Windows”目录下了,实在没办法,我将“XhwSvr.dll”文件拷贝到系统根目录下,但是问题依旧,请高手指点。
------解决方案--------------------
你注册表的配置的路径错误了:
"Dll"="\Windows\XhwSvr.dll"
------解决方案--------------------
Wince下的service的概念和desktop上的不一样。
先看看msdn上关于wince service的文档吧。
------解决方案--------------------
应该这个和语言的版本没有关系的,呵呵,我在英文版本试过的是没有问题的
------解决方案--------------------
请确认dll文件是不是加了数字签名!另外注册表应该还有一项:DWORD content = 0