阅读:1389回复:6
第一次发贴,有点麻烦和复杂的问题
我是个新手,看了快2个礼拜的资料了,对于整个驱动的结构还是不甚了解。想请教各位大侠:
1,USB设备插上之后,一个驱动程序到底是怎么运作的呢,有没有一个顺序或者说框架的东西,(书上那些PIDO,PDO,FDO的太不具体了,能从例程运行的角度说一下吗)? 2,安装驱动的过程中需要从物理设备里面获取信息吗?(有的话能说说是哪些吗?)也就是说那些读写操作是为了在驱动设备的时候和设备进行数据交换用的,还是在以后使用设备的时候用的。 3,deviceExtension->DeviceState == Working这个里面的Working不是wdm.h定义的,这个 是不是DevicePowerState,也就是那些D0,D1……状态呢,还是systemPowerState呢? 4,sys文件建立是不是对于我所有编写例程的一个封装? 5,功能驱动中读写操作的不同是由于USB芯片的不同还是由于USB外设的不同呢? 谢谢大家,知道哪个就回答哪个吧,我的问题多了点,不好意思,新人就是这样吧。 麻烦大家抽空看看了。 |
|
沙发#
发布于:2005-06-28 16:48
|
|
板凳#
发布于:2005-06-29 10:18
没有人回答呀,多少给小弟点面子呀
|
|
地板#
发布于:2005-06-29 17:13
没人回答,只有自己顶了,希望有人多少回答几个
|
|
地下室#
发布于: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, |
|
5楼#
发布于:2005-06-30 08:29
谢谢大侠了,哈哈
关于第三个问题,working是设备自身状态,可是我在wdm.h和usbdi.h等几个头文件中找不到这个定义呀,大侠知道在哪里定义的吗? |
|
6楼#
发布于:2005-07-01 21:34
如果我的usb芯片里没有固件程序,usb设备与计算机得usb口相连时,还会提示指定驱动的路径?不同的usb芯片,相同的传输方式都是interrupt,在驱动程序中的编写都一样吗
|
|
|