Windows CE .NET中实现服务的简单过程

本文介绍如何在Windows CE.NET中创建和加载服务。通过EVC4创建DLL项目,并定义必要的导出函数,之后在注册表中配置服务参数,最后将DLL复制到指定位置即可实现服务的启动。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:liguisen

bloghttp://blog.youkuaiyun.com/liguisen/

Windows CE .NET中的服务是一种流接口驱动程序,并不是真正的设备驱动程序,它以动态链接库DLL的形式出现,并被Services.exe加载运行。我们知道,在2000/NT中服务是以exe形式存在的,在CE中采用DLL的形式,很大一个原因是CE受到32进程数的限制。Services.exe在Windows CE .NET启动时自动启动并枚举注册表HKEY_LOCAL_MACHINE/Services的每个子项(这里每个子项对应一个服务)以便加载服务。

1,首先使用evc4创建一个新的 WCE 动态链接库项目MyService,然后添加导出函数定义:
DWORD TEST_Init(DWORD dwData)
{
 //初始化函数,可以在这里做其它事情
 return 1;
}
DWORD TEST_Open(  DWORD dwData,  DWORD dwAccess,  DWORD dwShareMode)
{ return 0;  }
DWORD TEST_Read(  DWORD dwData,  LPVOID pBuf,  DWORD dwLen)
{ return 0;  }
……
将这些函数名称添加到项目 .def 文件导出表中:
EXPORTS
    ; Explicit exports can go here 
 TEST_Init 
 TEST_Open
 TEST_Read
……
编译生成MyService.dll。

2,利用evc4的Remote Registry Editor向注册表 HKEY_LOCAL_MACHINE/Services/Service 项添加一个子项MyService,并指定相关键值。
[HKEY_LOCAL_MACHINE/Services/MyService]
    "Dll"="MyService.dll"
    "Order"=dword:8
    "Keep"=dword:1
    "Prefix"="TEST"
    "Index"=dword:0
    "Context"=dword:0
    "DisplayName"="DisplayName_Test"
"Description"="Description_Test "
这些值的意义可以查看MSDN。

3,用Remote File Viewer把MyService.dll复制到模拟器windows文件夹。重新启动Windows CE .NET即可启动服务。

        利用Remote Process Viewer可以查看Services.exe是否已经加载了MyService.dll,若已经加载,表示服务已经开始。当然,也可以在服务中显示一个提示框,直观的显示服务正在运行。

 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值