阅读:5146回复:5
请教 USB 过滤器驱动程序问题(20分)用户被禁言,该主题自动屏蔽! |
|
沙发#
发布于:2003-06-27 17:39
用户被禁言,该主题自动屏蔽! |
|
板凳#
发布于:2003-06-27 18:17
因为你这个是设备特定的,理论上应该加在你的设备的驱动程序之上。
但估计你这个键盘也没有自己专用的 HID miniport driver(应该也是用的系统的),所以你加在哪都是在class/miniclass driver之上,那么,还是看看在哪一级处理比较方便吧。 加在kbdclass之上也应是可行的。(kbdclass, hbdhid都是你的图中的hid client,内核客户) |
|
|
地板#
发布于:2003-06-27 22:40
这是可以实现的。
首先设备的在Report_Descriptor中要对你的数据格式进行定义----具体你所需要的那个特殊信息的在数据包中的位置和大小。 然后,设备在发送数据时,按照你定义的格式发送,主机即可接收到。 在主机端,你开发的应用程序可以截获(一个消息)此数据,接着你爱怎么处理就怎么处理了。 |
|
地下室#
发布于:2007-09-28 16:55
上层过滤器驱动程序的用途是帮助支持这样的设备,这种设备的大多数方面都象其所属类的普通设备,但有一些附加功能。你可以依靠一个通用的功能驱动程序来支持设备的普通行为。为了处理设备的附加功能,你可以写一个上层过滤器驱动程序来干预IRP流。举一个有趣的例子,假设存在一个烤面包机设备的标准类,并且已经有人为其写了一个标准驱动程序。再假设你的特殊烤面包机有一个高级的面包片弹出特征,它可以把烤好的面包片弹到两英尺高的空中。而控制这个AWE(Advanced Waffle Eject)特征的工作就是上层过滤器驱动程序的任务;
上层过滤器驱动程序的另一个用途是修正硬件或功能驱动程序中出现的bug。如果过滤器驱动程序用于这个目的,Microsoft恳求你在这个过滤器驱动程序上加上版本标签,并且如果在以后某一天这个bug被纠正,你应该在你的控制范围内修改任何相关部件的版本号。否则,Microsoft将难于使系统自动更新。 下层过滤器驱动程序不能干涉功能驱动程序直接执行的正常操作。因为功能驱动程序可能通过HAL调用直接访问硬件来实现大部分实质的请求。而下层过滤器仅能看到经过它传递的IRP,它看不到HAL调用。 下层过滤器驱动程序可以用于USB设备的驱动程序堆栈中。对于USB设备,其功能驱动程序把内部控制IRP作为URB(USB请求块)的容器。下层过滤器驱动程序可能会监视并修改这些IRP; 下层过滤器驱动程序的另一个用途是帮助你写一个总线无关的驱动程序。假设一种设备有三种不同总线形式的产品,PCI总线产品、USB总线产品、PCMCIA总线产品。你可以写一个完全独立于总线结构的功能驱动程序,这样的驱动程序不直接与设备对话。另外你还要写三个下层过滤器驱动程序,每个下层过滤器对应一个总线类型,如图9-3。当功能驱动程序需要与硬件对话时,它就向相应的下层过滤器驱动程序发送IRP(可能是IRP_MJ_INTERNAL_DEVICE_CONTROL)。 《Windows Driver Model》第九章->过滤器驱动程序,有更详细的描述 |
|
5楼#
发布于:2010-03-05 13:40
都是高手 羡慕死了
|
|
|