阅读:1692回复:5
USB一些体会,希高手指点
1.一般USB驱动开发,实际是撰写自己的USBCLient驱动,通过发送内部IOCTL给
Windows自带的USB系统驱动。在这个过程中,USB系统驱动是执行的实体。 2.对每个到来的USB设备,USB总线枚举得到每一个设备。存放每一个设备的指针 在 UsbClient的Device_extension中。 3.可以采取2种方式:1标准的INF安装模式驱动2PNP通知模式 4.对于USB的结构,我们可以采用发送IRP到USB系统驱动或者发送IRP到HID系统驱 动,通过其返回信息判断出USB设备的功能。设备功能即:表明USB设备是什么, 可以执行什么功能。 PS:如UKey,当从设备功能分析出为一个SmartCard之后,就相应加载SmartCard 驱动来执行与IC卡的交护;这时候,我们可以在device_extension中把我们的设备 按SmartCard规范模拟为一个SmartCardReader,并将一些关于SmartCardReader的 相关操作发送到系统提供的SmartCardReaderLib或SmartCardReaderSys;我们是在 分析完USB设备功能之后,得出为我们关心的设备,才创建我们感兴趣的类型的设 备对象(如SmartCardReader),同时要注意创建的为有名设备对象,因为我们要控 制/操作这些感兴趣的设备。 5.由于可能会涉及多个USB设备,那么就需要管理及控制所有设备的行为,这个时 候,我们可以采用创建一个"Control_DEVICE"用来控制对其他设备共同的特性。 这个CDO设备,通常在DriverEntry中使用固定的符号链接名创建NT式设备对象, 控制应用程序(即Win32)可以打开这个CDO的句柄,并使用一些IOCTL改变驱动程序 的一般行为。 同时在IRP分发例程中,我们要处理到,CDO与普通DO的控制请求关系。要实现这 个功能,可以在设备扩展中采用一个设备的类型,也可以采用两个单独的设备扩 展,在每个结构的公共部分有设备类型标志。 (待续。。。) |
|
最新喜欢:yushui... |
沙发#
发布于:2007-03-20 16:11
帮你顶个
|
|
板凳#
发布于:2007-03-26 22:49
强烈支持
|
|
地板#
发布于:2007-03-27 09:26
用户被禁言,该主题自动屏蔽! |
|
地下室#
发布于:2007-04-03 00:45
帮你顶一下
|
|
5楼#
发布于:2007-04-05 16:58
顶一个,总结得不错不错
|
|