NicoDeng
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:4567回复:9

几个关于usb驱动的概念问题

楼主#
更多 发布于:2002-04-28 20:10
最近有几个概念问题一直未能搞清楚,请帮助:
1。何为客户驱动程序,它与用户应用程序,系统驱动程序有何关系?我们所要编写的是否就是客户驱动程序?
2。windows中有USBDI接口,为何不能让应用程序直接使用该接口,还要编写客户驱动?是因为用户态和核心态的关系吗?
请帮忙解惑!谢谢!

 :)

最新喜欢:

shevstenshevst...
heshen
驱动老牛
驱动老牛
  • 注册日期2002-04-19
  • 最后登录2014-01-26
  • 粉丝0
  • 关注0
  • 积分45分
  • 威望5点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-04-29 09:03
客户驱动也就是说是设备的驱动。
是你用来驱动usb设备用的。
而系统驱动和用户驱动则是使在主机上的usb口能够工作。
不要啊!
acx
acx
驱动小牛
驱动小牛
  • 注册日期2001-04-28
  • 最后登录2012-05-07
  • 粉丝0
  • 关注0
  • 积分61分
  • 威望57点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-04-29 10:04
USBDI提供的大部分是内部IOCTL,只有内核驱动可以调用内部IOCTL,听说USBDI也提供了一些外部IOCTL可直接由应用程序调用,DDK下又例子,好想叫USBVIEW,我没认真研究过。
很想你,身不由己……
NicoDeng
驱动牛犊
驱动牛犊
  • 注册日期2002-03-31
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-04-30 09:53
谢谢各位。
也就是说客户应用程序可以使用客户驱动程序访问设备,客户驱动程序使用USBDI接口访问底层。
还有,既然USBDI提供的大部分是内部IOCTL,只有内核驱动可以调用内部IOCTL,那么客户驱动程序也位于内核态了。并且客户驱动应该提供客户应用层访问的接口。
以上概念对吧!
Xman
驱动大牛
驱动大牛
  • 注册日期2001-08-24
  • 最后登录2011-10-07
  • 粉丝0
  • 关注0
  • 积分343分
  • 威望127点
  • 贡献值0点
  • 好评度34点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-09-07 14:55
还是不明白~~~!



顺便问问:
在usb中,什么是总线驱动程序,是windows提供的usbd.sys文件吗?
我们要写的是过滤驱动程序吗?
 :(
[img]http://www.driverdevelop.com/forum/upload/Xman/2004-04-05_2004324183110706.jpg[/img]
gutian98
禁止发言
禁止发言
  • 注册日期2003-01-12
  • 最后登录2016-12-11
  • 粉丝4
  • 关注2
  • 积分760分
  • 威望8026点
  • 贡献值1点
  • 好评度364点
  • 原创分0分
  • 专家分21分
  • 金点子奖
  • 社区居民
5楼#
发布于:2004-10-14 21:51
用户被禁言,该主题自动屏蔽!
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-10-15 13:27
一般而言,Windows(或任何其他的操作系统)只能为你提供总线驱动,最多还能提供一些标准设备驱动。所谓总线驱动就是帮助你处理复杂的总线协议,解析出你需要的数据包。

对于USB而言,它已经帮你完成了PNP枚举的绝大多数工作,还帮助你将各个EndPoint的数据解析出来,使得你不必关心过多的底层细节。同时,系统也提供了诸如HID, Printer, Mass Storage等标准的设备驱动。

但你也要想一想,系统是无法了解你自己设计的硬件和固件到底要完成什么功能。这好比你买来一根电线,这根电线是无法知道你要在上面传递什么信号,它只能为你提供一条通路。这也就是总线驱动所能做的事情了。所以,第三方个性化的设备,就需要提供相应的驱动。

当然,对于USB而言,客户驱动程序不是必需的,但确实是比较好的选择。你可以在应用层直接访问总线驱动,但缺点是显而易见的:你要自己处理设备的热插拔;比较频繁地往返于应用层与系统层之间;大大降低系统的效率等等。

众所周知的情况是:系统分层设计会带来巨大好处。无论是应用程序的B/S or C/S架构,网络协议的7层设计,都到来了优势。

客户驱动使得设备细节被屏蔽,更好的方式是在驱动程序上面再为用户提供接口DLL或ActiveX,则使得应用更加友好和便利。
A strong man can save himself. A great man can save another.
lujunql
驱动小牛
驱动小牛
  • 注册日期2004-06-09
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分21分
  • 威望3点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-10-29 10:02
对USB设备的枚举过程也是在总线驱动中完成的吗!它如何将特定的设备交给特定的设备驱动程序管理呢!
gaopeilin
驱动牛犊
驱动牛犊
  • 注册日期2004-10-28
  • 最后登录2004-11-02
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-10-30 18:34
找一本关于USB方面的书好好看一看,什么问题都明白了。
qiuzhenqing
驱动牛犊
驱动牛犊
  • 注册日期2006-07-13
  • 最后登录2009-11-09
  • 粉丝0
  • 关注0
  • 积分610分
  • 威望62点
  • 贡献值0点
  • 好评度61点
  • 原创分1分
  • 专家分0分
9楼#
发布于:2007-09-13 15:11
受教了!!!!!!!
游客

返回顶部