wince 驱动的理解 1.wince 分层驱动 分为 MDD层 PDD层 MDD层为应用提供接口(DDI) PDD为MDD提供接口(DDSI) PDD 层驱动为 MDD 层驱动隐藏了具体的硬件实现 2.wince 单片驱动 单片驱动不仅直接为系统提供接口, 也直接操作硬件。相比分层驱动它可以提更高的效率。 3.wince 杂合驱动 wince驱动 按加载的模块分 可以分为: 1. 设备管理器(Device.dll )加载的驱动 、 a)由设备管理器加载的驱动实现了流驱动的接口。流驱动的接口就是预先定义的一组 函数以提供给设备设备管理器来调用。在以流驱动方式来实现的驱动没有设备类型的限制。 b)流驱动的函数接口:xxx_init();XXX_Deinit()…… c)流驱动的加载:注意的地方: WINCE 打开流设备的时候要注意 CreateFile 的设备名称。设备名的后面一定要有一个冒号 “ : ” , 不然的话找不到对应的设备会产生一个错误。这个小的地方没有注意导致我费了很久的时间。 其实这也不是什么小的地方, 是我看书的时候没有仔细。 在设备名的一般格式是 "LED1" ( 我就用 LED 来表示吧!前面是三个字母, 大不大小定等一个我再试一试。 ) 前面 的有一个字母是注册表里面的 PREFIX, 后面的数字 1 是 INDEX. (重新测试了书上的一句话, 其实前面的字母并不是要全部大写, 我 'Led1' 也能够使用。) 2. GWES(GWES.dll)加载的驱动 GWES 加载的驱动主要为系统使用 如 鼠标 键盘 触摸屏 3. 文件系统(fileSys.dll)加载的驱动 文件系统驱动被实现成 dll 的方式, 它预先实现了一组函数和 IO 控制的函数。这些函数被标准的文件系统 API 调用
函数名称 | 描述 |
XXX_Close | 在驱动程序关闭时应用程序通过CloseHandle函数调用这个函数 |
XXX_Deinit | 当设备管理器卸载一个驱动程序时调用这个函数 |
XXX_Init | 当设备管理器初始化一个具体设备时调用这个函数. |
XXX_IOControl | 上层的软件通过DeviceIoControl函数可以调用这个函数 |
XXX_Open | 在打开一个设备驱动程序时应用程序通过CreateFile函数调用这个函数 |
XXX_PowerDown | 在系统调用前调用这个函数 |
XXX_PowerUp | 在系统从新启动前调用这个函数 |
XXX_Read | 在一个设备驱动程序处于打开状态时由应用程序通过ReadFile函数调用 |
XXX_Seek | 对设备的数据指针进行操作,由应用程序通过SetFilePointer函数调用 |
XXX_Write | 在一个设备驱动程序处于打开状态时由应用程序通过WriteFile函数调用 |