markchris
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-10-12
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1389回复:6

第一次发贴,有点麻烦和复杂的问题

楼主#
更多 发布于:2005-06-28 16:05
我是个新手,看了快2个礼拜的资料了,对于整个驱动的结构还是不甚了解。想请教各位大侠:

1,USB设备插上之后,一个驱动程序到底是怎么运作的呢,有没有一个顺序或者说框架的东西,(书上那些PIDO,PDO,FDO的太不具体了,能从例程运行的角度说一下吗)?

2,安装驱动的过程中需要从物理设备里面获取信息吗?(有的话能说说是哪些吗?)也就是说那些读写操作是为了在驱动设备的时候和设备进行数据交换用的,还是在以后使用设备的时候用的。

3,deviceExtension->DeviceState == Working这个里面的Working不是wdm.h定义的,这个
是不是DevicePowerState,也就是那些D0,D1……状态呢,还是systemPowerState呢?

4,sys文件建立是不是对于我所有编写例程的一个封装?

5,功能驱动中读写操作的不同是由于USB芯片的不同还是由于USB外设的不同呢?

谢谢大家,知道哪个就回答哪个吧,我的问题多了点,不好意思,新人就是这样吧。
麻烦大家抽空看看了。
markchris
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-10-12
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-06-28 16:48
请知道的大侠多少讲一下吧,谢谢

上面那个帖子中讲的D12的例子资料那位有的可以发到我的邮箱吗?
markshen81@126.com
markchris
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-10-12
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-06-29 10:18
没有人回答呀,多少给小弟点面子呀
markchris
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-10-12
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-06-29 17:13
没人回答,只有自己顶了,希望有人多少回答几个
zhaock
驱动太牛
驱动太牛
  • 注册日期2002-01-26
  • 最后登录2018-06-02
  • 粉丝3
  • 关注2
  • 积分73328分
  • 威望362317点
  • 贡献值1点
  • 好评度226点
  • 原创分0分
  • 专家分0分
  • 社区居民
地下室#
发布于:2005-06-29 22:53
简单回答几句,
1.usb bus driver,能够自动发现一个插入了一个usb device,它会读这个设备的device descriptor,根据vid,pid,去加载你的驱动. 系统会调用驱动的AddDevice, AddDevice会创建一个Device, Attach到设备栈上
当系统发送IRP_MN_START_DEVICE的时候,你的驱动会选择一个configuration
2.第一次插入设备,没有安装驱动,,usb bus driver会读设备的device descriptior,因为根据pid,vid,classid等找不到驱动程序,就会提示指定驱动的路径,然后的流程就同1了.
3.既不是DevicePowerState,也不是systemPowerState,和电源状态没有关系,是设备自身的状态
4.你写的驱动最终编译成一个sys文件
5.问的含混,不容易回答.对于读写,都是构造urb,往下传到 usbd.sys,不同的外设有不同的传输方式,control,bulk,iso,interrupt,
markchris
驱动牛犊
驱动牛犊
  • 注册日期2005-06-07
  • 最后登录2005-10-12
  • 粉丝0
  • 关注0
  • 积分62分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-06-30 08:29
谢谢大侠了,哈哈
关于第三个问题,working是设备自身状态,可是我在wdm.h和usbdi.h等几个头文件中找不到这个定义呀,大侠知道在哪里定义的吗?
angleliu
驱动牛犊
驱动牛犊
  • 注册日期2005-04-30
  • 最后登录2005-08-25
  • 粉丝0
  • 关注0
  • 积分66分
  • 威望11点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-07-01 21:34
如果我的usb芯片里没有固件程序,usb设备与计算机得usb口相连时,还会提示指定驱动的路径?不同的usb芯片,相同的传输方式都是interrupt,在驱动程序中的编写都一样吗
天涯
游客

返回顶部