阅读:1673回复:3
在usbview中看到open pipes 为0,应该怎么办呀?怎么设置管道?
如标题所示
|
|
沙发#
发布于:2002-05-28 16:13
大虾们帮帮忙呀,怎么没人回呀?
问题太弱了么? 我伤心欲绝呀 :( |
|
板凳#
发布于: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); |
|
驱动小牛
![]() |
地板#
发布于:2008-02-29 15:56
记录一下,怕要读的时候找不到
|