wince 流驱动

1、动态链接库的入口函数
DllEntry(HINSTANCE DllInstance, INT Reason, LPVOID Reserved);
说明:
每个动态链接库都需要输出这个函数,它只在动态库被加载和卸载时被调用,也就是设备管理器调用LoadLibrary而引起它被装入内存和调用UnloadLibrary将其从内存释放时被调用,
因而它是每个动态链接库最早被调用的函数,一般用它做一些全局变量的初始化。
参数:
DllInstance:DLL的句柄,可以通过它在得到DLL中的一些资源,例如对话框,除此之外一般没什么用处。
Reason:DLL_PROCESS_ATTACH 表示动态库被加载;DLL_PROCESS_DETACH 表示动态库被释放。

2、DWORD XXX_Init(LPCTSTR pContext, LPCVOID lpvBusContext);
说明:
驱动程序的动态库被成功装载以后第一个被调用的函数;其调用时间仅次与DllEntry,而且,当一个库用来生成多于一个的驱动程序实例时仅调用一次DllEntry,而xxx_Init会被调用多次。
驱动程序应当在这个函数中初始化硬件,如果初始化成功,就分配一个自已的内存空间(通常用结构体表示),将自已的状态保存起来,并且将此内存块的地址做为一个DWORD值返回给上层。
设备管理器就会用在调用XXX_Open时将此句柄传回,我们就能访问自已的状态。如果初始化失败,则返回0以通知这个驱动程序没有成功加载,先前所分配的系统资源应该全部释放。
参数:
pContext:系统传入的注册表键,通过它可以讲到我们在注册表中设置的配置信息。
lpvBusContext:一般不用。

3、DWORD XXX_Open(DWORD hDeviceContext,DWORD dwAccess, DWORD dwShareMode);
说明:
当用户程序调用CreateFile打开这个设备时,设备管理器就会调用此驱动程序的XXX_Open函数。
参数:
hDeviceContext:XXX_Init 返回给上层的值,也就是我们在XXX_Init中分配的用来记录驱动程序信息的那个结构体的指针,我们可以在这个函数中直接将其转化成所定义的结构,从而获取驱动程序的信息。
dwAccess:上层所要求的访问方式,可以是读或者写,或者是0,即不读也不写。
dwShareMode:上层程序所请求的共享模式,可以是共享读、共享写这两个值的逻辑或,或者是0,即独占式访问。

4、DWORD XXX_Close(DWORD hDeviceContext);
说明:
当用户程序调用CloseHandle关闭这个设备句柄时,这个函数就会被设备管理器调用。
参数:
hDeviceContext:XXX_Open返回给上层的那个值。

5、DWORD XXX_Deinit(DWORD hDeviceContext);
说明:
函数在设备被卸载时被调用,它应该实现与XXX_Init相反的操作,主要为释放前者占用的所有系统资源。
参数:
hDeviceContext:XXX_Init函数返回给上层的那个句柄。

6、void XXX_PowerUp(DWORD hDeviceContext) 和 void XXX_PowerDown(DWORD hDeviceContext)
说明:
这两个函数在系统PowerUp与PowerDown时被调用,这两个函数中不能使用任何可能引起线程切换的函数,否则会引起系统死机。
这两个函数中,实际上几乎是什么做不了,一般在PowerDown时做一个标志,让驱动程序知道自已曾经被Power Down过。
在Power Down/On的过程中硬件可能会掉电,所以,尽管Power On以后,原来的IO操作仍然会从接着执行,但可能会失败。

7、BOOL XXX_IOControl(DWORD hDeviceContext, DWORD dwCode, PBYTE pBufIn, DWORD dwLenIn, PBYTE pBufOut, DWORD dwLenOut, PDWORD pdwActualOut);
说明:
驱动程序的所有功能都可以在这个函数中实现。
参数:
hDeviceContext:XXX_Open返回给上层的那个句柄,用来存放程序所有信息的一个结构。
dwCode:IO操作码
pBufIn:传入的Buffer
dwLenIn:pBufIn以字节记的大小
pBufOut:传出的Buffer
dwLenOut:以字节记的大小
pdwActualOut:驱动程序实际在pBufOut中填入的数据以字节记的大小
注:前两个参数是必须的,其它的任何一个都有可能是NULL或0。所以,当给pdwActualOut赋值时应该先判断它是否为一个有效的地址。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值