WinCE USB设备驱动程序开发之文件夹结构-导读(2)

在WinCE USB设备驱动程序样例代码中更改

Windows Driver Kit (WDK) 包含大量样例驱动程序,这些样例演示了有用的驱动程序开发技术。您可以使用这些样例作为您自己的驱动程序的基础,但是在发布驱动程序之前,您必须更改样例的某些设备特定的方面,以适合于您自己的设备和驱动程序。驱动程序编写人员有时会忽略这些细节。

对于您必须更改的确切项,每个示例都有所不同。但是总体来说,它们标识一个特定的设备、接口或驱动程序。例如,如果示例驱动程序包含下列项中的任意一个,那么您必须更改它们以适合于您的驱动程序和设备。

WinCE USB设备驱动程序开发样例的文件夹结构

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

USB驱动文件夹结构

在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接口的原型。

WinCE USB设备驱动程序开发难点-导读(1)

 

此条目发表在 windows驱动开发 分类目录,贴了 , 标签。将固定链接加入收藏夹。

发表评论