阅读:1651回复:4
USBD接口操作的数据结构
前阵写文档时画的一个图,描述USBDI总线驱动操作的数据结构,熟手就不用看了。
1. USB功能驱动与总线驱动之间的信息交换符合WDM模型中的底层与高层驱动之间的信息交换规范,即采用IRP结构; 2. IRP结构中有一个IO_STACK_LOCATION,该成员指定一个栈的位置,这个栈用来存储处理该IRP的当前层驱动要用到的与该IRP相关的参数; 3. IRP参数栈中有一个主功能代码,用来表示IRP的主功能代号;还有一个副功能代号,用来区分同一个主功能的多个副功能。对于特定的主功能,IRP参数栈中的参数结构不一样。IRP主功能有IRP_MJ_CREATE、IRP_MJ_DEVICE_CONTROL等十多个; 4. USBD总线驱动支持代号为IRP_MJ_INTERNAL_DEVICE_CONTROL的主功能,该主功能IRP用于USB功能驱动于总线驱动之间的USB操作。当IRP的主功能代号为IRP_MJ_INTERNAL_DEVICE_CONTROL时,IRP参数栈中的Parameters成员是一个DeviceIoControl结构,这个结构中的IoControlCode定义了多种控制代码; 5. USBD总线驱动支持的IoControlCode控制码包括IOCTL_INTERNAL_USB_RESET_PORT等10多种控制码,这些控制码用于实现不同的总线操作。其中一个控制码是IOCTL_INTERNAL_SUBMIT_URB,用于向USBD总线驱动提交URB; 6. 当控制码是IOCTL_INTERNAL_SUBMIT_URB时,IRP参数栈中的Parameters的Other结构的Argument1成员指向一个URB结构; 7. URB结构有多种,用于实现不同的总线操作,包括批量传输、等时传输等。 |
|
最新喜欢:![]() |
沙发#
发布于:2008-06-07 14:11
东西看的有80%明白了,可是还是不会写一个驱动啊,急死人了~
|
|
驱动小牛
![]() |
板凳#
发布于:2008-05-13 10:12
太感谢了!
|
地板#
发布于:2007-08-24 01:35
引用第1楼lejianz于2007-08-23 15:37发表的 : 就用visio画的,改了一下格式 |
|
地下室#
发布于:2007-08-23 15:37
谢谢共享.BTW,这个图用什么工具做的.
|
|
|