| 
			 
					阅读:2316回复:9
				 
				USB的配置问题...
					在选择配置前,要分两次取出配置。
 
							在我第一次取得配置描述符的时候,得到了下面的东西: Configuration descriptor: wTotalLength: 0x0019 bNumInterfaces: 0x01 bConfigurationValue: 0x01 iConfiguration: 0x04 bmAttributes: 0x80 MaxPower: 0x32 接下来的第二次取配置描述符却完全取不出来,总是返回NULL 请那位仁兄帮帮忙,看看是啥问题。 --------------------万分感谢---------------------- [sam 编辑于 2001-08-03 18:59] [sam 编辑于 2001-08-03 17:21]  | 
	|
					
						
						
						
						
  | 
	
| 
			 沙发# 
								发布于:2001-08-04 09:48				
			
					苦恼啊,苦恼				 
							 | 
	|
					
						
  | 
	
| 
			 板凳# 
								发布于:2001-08-04 11:25				
			
					选择配置也只需要读一次配置描述表就可以了,然后根据所读到的配置描述表来查找接口.你怎么会需要读两次那?
 
							下位的firmware会不会有问题?我认为极有可能是firmware的问题  | 
	|
| 
			 地板# 
								发布于:2001-08-04 12:01				
			
					我指的是取出完整的描述符需要两次
 
							一次取得总的空间长度,第二次取出完整的描述符 我已经把总长度取到了,可是取不出完整的。 -----------------热啊热-------------------  | 
	|
					
						
  | 
	
| 
			 地下室# 
								发布于:2001-08-06 10:48				
			第二次的缓冲区开的足够大么?  | 
	|
					
						
  | 
	
| 
			 5楼# 
								发布于:2001-08-06 13:26				
			
					大!够大了
 
							总长度还加了16个字节呢  | 
	|
					
						
  | 
	
| 
			 6楼# 
								发布于:2001-08-06 14:43				
			
					个人意见:第二次你重复第一次的操作,观察结果如何。如果返回的还是NULL,估计当你第一次操作完毕后,所有的配置丢失了。				 
							 | 
	|
					
						
  | 
	
| 
			 7楼# 
								发布于:2001-08-06 15:01				
			
					既然我已经知道总长度了,是不是可以一次搞定,
 
							就是第一次分配空间时就用描述符总长度,得到的 是不是应该,可能,大概是完整的描述符?  | 
	|
					
						
  | 
	
| 
			 8楼# 
								发布于:2001-08-06 16:33				
			理论上可以的,但是一般都不这么用 我看你还是应该好好跟踪一下,找出原因来  | 
	|
					
						
  | 
	
| 
			 9楼# 
								发布于:2001-08-06 17:04				
			
					    我也遇到类似的问题,
 
							USBD_ParseConfigurationDescriptorEx(pdx->pcd, pdx->pcd, 0, 1, -1, -1, -1); 之后, ped = (PUSB_ENDPOINT_DESCRIPTOR) USBD_ParseDescriptors(pcd, pcd->wTotalLength, ped, USB_ENDPOINT_DESCRIPTOR_TYPE); ped取出来的似乎是对的, 可是下一步, UsbBuildSelectInterfaceRequest(urb, (USHORT) size, pdx->hconfig, 0, 1); 取出来的urb->UrbSelectInterface.Interface.Pipes[0].EndpointAddress等内容都为零。 请高手指点! (我是用Walter Oney的例子修改的)  | 
	|
					
						
  |