八木(bamu)
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-11-02
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1527回复:6

对于函数USBD_CreateConfigurationRequestEx的一些疑问,不明白

楼主#
更多 发布于:2005-03-28 07:20
PURB
  USBD_CreateConfigurationRequestEx(
    IN PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor,
    IN PUSBD_INTERFACE_LIST_ENTRY InterfaceList
    );
PUSBD_INTERFACE_LIST_ENTRY InterfaceList是一个INTERFACE_LIST数组的指针,有几个元素,里面就有多少个接口,但是这个函数返回的是一个urb:
构造好了之后,没有提交之前:
struct _USB_SELECT_CONFIGURATION {
  struct _URB_HEADER Hdr;
  PUSB_CONFIGRUATION_DESCRIPTOR ConfigurationDescriptor ;
  USB_CONFIGURATION_HANDLE ConfigurationHandle ;
  USBD_INTERFACE_INFORMATION Interface ;
} ;
 Interface 是不是空的?

提交urb之后:
struct _USB_SELECT_CONFIGURATION {
  struct _URB_HEADER Hdr;
  PUSB_CONFIGRUATION_DESCRIPTOR ConfigurationDescriptor ;
  USB_CONFIGURATION_HANDLE ConfigurationHandle ;
  USBD_INTERFACE_INFORMATION Interface ;
} ;
Interface只是一个街口的信息,那么其他的借口都到哪儿去了?
是不是在一个驱动里只有一个接口可以是活动的。
还有:typedef struct _USBD_INTERFACE_INFORMATION {
  USHORT Length ;
  UCHAR InterfaceNumber ;
  UCHAR AlternateSetting ;
  UCHAR Class ;
  UCHAR SubClass ;
  UCHAR Protocol ;
  .
  .
  USBD_INTERFACE_HANDLE InterfaceHandle ;
  ULONG NumberOfPipes ;
这个结构里面的InterfaceNumber 是什么含义啊?

难道职能得到一个借口的信息?
要是要改变借口的话,应该怎么做啊?
八木(bamu)
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-11-02
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-03-28 07:22
菜鸟学驱动,大家多多指教,谢谢了
顶了
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-03-28 10:00
只有一个配置是活动的。一个配置可以有好几个接口。

USBD_CreateConfigurationRequestEx的参数InterfaceList必须是
有效指针。可以用ExAllocatePool(NonPagedPool,              sizeof(USBD_INTERFACE_LIST_ENTRY) * (numberOfInterfaces + 1));来分配内存。而且分配内存之后必须赋值。最后一个USBD_INTERFACE_LIST_ENTRY必须赋值为NULL。

  

[b]万水千山总是情,回个帖子行不行?[/b]
idaxsy
驱动大牛
驱动大牛
  • 注册日期2004-12-09
  • 最后登录2006-03-17
  • 粉丝0
  • 关注0
  • 积分386分
  • 威望54点
  • 贡献值0点
  • 好评度8点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-03-28 10:15
InterfaceNumber就是你用usbmonitor也可以看到的那个号码,
这是由硬件定义的。 :)
[b]万水千山总是情,回个帖子行不行?[/b]
八木(bamu)
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-11-02
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-03-28 11:50
只有一个配置是活动的。一个配置可以有好几个接口。

USBD_CreateConfigurationRequestEx的参数InterfaceList必须是
有效指针。可以用ExAllocatePool(NonPagedPool,              sizeof(USBD_INTERFACE_LIST_ENTRY) * (numberOfInterfaces + 1));来分配内存。而且分配内存之后必须赋值。最后一个USBD_INTERFACE_LIST_ENTRY必须赋值为NULL。

  

 


那我得到的是一个接口,其他的借口在哪儿啊?
八木(bamu)
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-11-02
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-03-28 11:55
如果那些借口也可用的话,怎么得到他们的句柄,或是怎样设置他们呢?
谢谢
八木(bamu)
驱动牛犊
驱动牛犊
  • 注册日期2005-03-14
  • 最后登录2005-11-02
  • 粉丝0
  • 关注0
  • 积分20分
  • 威望3点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-03-28 21:36
USBD_CreateConfigurationRequestEx返回的是一个urb的指针,这个已经分的了内存,是不是系统分的?还是就是在传的那个参数里,如果是系统分的,他分了几个USBD_INTERFACE_INFORMATION 的结构呢?
/*
struct _USB_SELECT_CONFIGURATION {
struct _URB_HEADER Hdr;
PUSB_CONFIGRUATION_DESCRIPTOR ConfigurationDescriptor ;
USB_CONFIGURATION_HANDLE ConfigurationHandle ;
USBD_INTERFACE_INFORMATION Interface ;
} ;
*/
游客

返回顶部