USB设备驱动程序导读(2)


        接下来,我们就来分析一下CE中的样例程序,我用的是4.2版本的,所以下面的内容是4.2版本中的程序。这里的程序是通过文件夹的形式组织在一起的,所以我们还是像以前学习CE的时候那样,先来了解与此相关的文件夹结构,如下图。



        在USB文件夹下,分成了CLASS,CLIENTS,COMMON,HCD,INC,USBD几个文件夹,其中INC和COMMON里面有一个lock.c的程序,这个程序很明显是将要被其他USB有关的驱动程序所使用的一个锁,代码很简单,只是一个类似临界区的封装体,可以保护多线程对同一内存区域的读写访问,可以先不去管它。CLIENTS文件夹可能最初微软的开发人员是用来放置设备驱动程序的,但是后来没有放,而发布的时候也没有删除,所以遗留了下来,里面是个空的文件夹,所以没用实际用处。USBD和HCD是前述的底层驱动,里面含有很多子文件夹和程序,由于我们只针对USB设备驱动,因此对这两部分不做分析,不兴趣的朋友可以自己去了解。

        重点就在CLASS文件夹了,展开来看,里面又包含了COMMON、HID、PRINTER、STORAGE几个文件夹,同样,COMMON里面存放的源程序是为HID、PRINTER、STORAGE所共有的。HID是USB输入设备如键盘/鼠标的样例驱动程序,PRINTER是USB打印机的样例驱动程序,STORAGE是USB存储设备如U盘的样例程序。

        我们此次以USB存储设备为例,所以再来展开STORAGE文件夹,其中的INC文件夹里面是头文件,CLASS是USB存储设备的驱动程序,DISK是磁盘驱动程序。这里为什么有两个驱动程序呢,我来简要解释一下。

        驱动程序工作在硬件与操作系统之间,它有两个功能,一个是 将操作系统转发来的操作以符合指定硬件设备的形式控制硬件设备,另一个是向操作系统提供这个访问接口。比如说U盘,一方面驱动程序要把操作系统对U盘的识别、读、写等操作转换成U盘的动作,另一方面又告诉操作系统这是个U盘,可以当成一个文件夹或文件系统来用,能够接受标准的文件操作命令。所以此处存在两个驱动。

        另外还有一个文件夹,WINCE420/PUBLIC/COMMON/DDK/INC,这里面是与设备驱动有关的头文件,对于USB设备,相关的文件有USB100.H, USBTYPES.H, USBDI.H,这里面前两个里面关于USB的定义是完全符合USB规范的,不是随便定义出来的,而USBDI.H文件里的内容就是USBD总线驱动程序向USB设备驱动程序提供的接口描述,在开发USB设备驱动时必须要包含此头文件,这样才可以得到USBD接口的原型。

        说了这么多,还没接触到程序,不过不要着急,这些可是大的框架哦,我得休息一下,“广告过后,马上回来!”
 
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

文斌

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值