没有合适的资源?快使用搜索试试~ 我知道了~
WINCE驱动程序快速入门,按一种特定的规则实现一个动态库,其中实现对所有的硬件功能的调用,再将这个动态库加入系统中,然后设置相关的注册表项,使得在系统启动时设备管理器能识别并且加载这个设备即可。
资源推荐
资源详情
资源评论
第三章 CE 驱动程序快速入门
有人也许和我一样比较心急,想尽快知道如何去写一个具体的驱动程序,这里,假设
您对驱动程序已经有比较好的了解,告诉大家一个快速上路的方法。当然,如果您有足够
的时间我建议在动手之前还是深入了解一下 CE 整个系统架构。
在 CE 中,最简单的一个驱动程序莫过于一个内置( Built-in)设备的流接口驱动。对
于一个不支持热拔插的设备,最快捷的方法就是为其实现一个内置的流接口的驱动。
对于这样一类驱动程序,我们只需要按一种特定的规则实现一个动态库,其中实现对
所有的硬件功能的调用,再将这个动态库加入系统中,然后设置相关的注册表项,使得在
系统启动时设备管理器能识别并且加载这个设备即可。
3.1 实现动态链接库
此动态链接库与应用程序层所用的库并不很大差别,源文件可以是 C、C++、甚至汇
编,,只是它要实现以下函数。
DllEntry(HINSTANCE DllInstance, INT Reason, LPVOID Reserved )
这个函数是动态链接库的入口,每个动态链接库都需要输出这个函数,它只在动
态库被加载和卸载时被调用,也就是设备管理器调用 LoadLibrary 而引起它被装入
内存和调用 UnloadLibrary 将其从内存释放时被调用, 因而它是每个动态链接库
最早被调用的函数,一般用它做一些全局变量的初始化。
参数:
DllInstance:DLL 的句柄,与一个 EXE 文件的句柄功能类似,一般可以通过它在
得到 DLL 中的一些资源,例如对话框,除此之外一般没什么用处。
Reason:
一 般 我 们 只 关 心 两 个 值 : DLL_PROCESS_ATTACH 与
DLL_PROCESS_DETACH,Reason 等于前者是动态库被加载,等于后者是动态
库被释放。
所以,我们可以在 Reason 等于前者是初始化一些资源,等于后者时将其释放。
DWORD XXX_Init( LPCTSTR pContext, LPCVOID
lpvBusContext);
它是驱动程序的动态库被成功装载以后第一个被调用的函数。其调用时间
仅次与 DllEntry,而且,当一个库用来生成多于一个的驱动程序实例时仅调用一
次 DllEntry,而 xxx_Init 会被调用多次。驱动程序应当在这个函数中初始化硬
件,如果初始化成功,就分配一个自已的内存空间(通常用结构体表示),将自
已的状态保存起来,并且将此内存块的地址做为一个 DWORD 值返回给上层。
设备管理器就会用在调用 XXX_Open 时将此句柄传回,我们就能访问自已的
资源评论
dplain
- 粉丝: 0
- 资源: 5
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功