randing
驱动牛犊
驱动牛犊
  • 注册日期2002-05-28
  • 最后登录2002-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1674回复:3

在usbview中看到open pipes 为0,应该怎么办呀?怎么设置管道?

楼主#
更多 发布于:2002-05-28 15:33
如标题所示
zhoujiamurong
驱动小牛
驱动小牛
  • 注册日期2006-03-20
  • 最后登录2009-05-06
  • 粉丝4
  • 关注0
  • 积分1081分
  • 威望360点
  • 贡献值0点
  • 好评度215点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2008-02-29 15:56
记录一下,怕要读的时候找不到
cqzhl
驱动牛犊
驱动牛犊
  • 注册日期2002-01-29
  • 最后登录2007-03-21
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-05-28 22:27
设备没有配置,当然只能看到PIPE0了。
这两天文配置的人很多。你其实翻翻论坛就可以找到答案的。
我吧前两天回复别人的帖子再贴出来吧。
配置信息在设备里。读取的具体步骤如下:


这个步骤是DDK自带的程序ISOUSB源程序所使用的。最好读一下这个程序。

1。读取配置描述符

PUSB_CONFIGURATION_DESCRIPTOR ConfigurationDescriptor= NULL; 配置描述符。
siz=sizeof(USB_DEVICE_DESCRIPTOR)+nByte;//读出的描述符放在ConfigurationDescriptor中,而紧跟其后则存放
接口信息。nByte 的娶值与该配置的接口数有关。在不知道接口数的情况下,可以给一个足够大的数,
具体处理办法可以参照ISOUSB的例子。

ConfigurationDescriptor = ExAllocatePool(NonPagedPool,siz);
UsbBuildGetDescriptorRequest(urb,
(USHORT) siz,
USB_CONFIGURATION_DESCRIPTOR,
0,
0, //要读取的配置号
ConfigurationDescriptor,NULL,siz, NULL);
生成读取配置描述符URB,urb为生成的指针。
soUsb_CallUSBD(DeviceObject, urb); 提交请求。

USB_CONFIGURATION_DESCRIPTOR主要有以下几个域:
UCHAR bNumInterfaces :该配置的接口数。
UCHAR iConfiguration :该配置的配置号。每个设备可以有几个不同的配置,配置数可以从设备描述符
中获得。


2。读取接口描述符:
urb = USBD_CreateConfigurationRequest(ConfigurationDescriptor, &siz);

此时,urb中的UrbSelectConfiguration域便有效了。
UrbSelectConfiguration 中的Interface为一个指针。指向了一个类型为USBD_INTERFACE_INFORMATION
的数组。该数组的长度可变,具体由接口数决定。

USBD_INTERFACE_INFORMATION主要有以下几个域:
NumberOfPipes 该接口的管道数
Pipes 该接口的管道描述符的头指针。指向一组可变长度的管道描述符。

每个管道描述符便包含了每个端点的地址,传输类型,和最大传输长度。

3。对设备进行配置
生成配置URB(比如按我们刚才读到的配置描述符进行配置)
UsbBuildSelectConfigurationRequest(urb,
(USHORT) siz,
ConfigurationDescriptor);
IsoUsb_CallUSBD(DeviceObject, urb);


randing
驱动牛犊
驱动牛犊
  • 注册日期2002-05-28
  • 最后登录2002-05-29
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-05-28 16:13
大虾们帮帮忙呀,怎么没人回呀?
问题太弱了么?
我伤心欲绝呀 :(
游客

返回顶部