阅读:1680回复:8
USB大牛请进,菜鸟免了
各位大牛们:
小弟有个问题未解决,要请教一下.我想获取USB设备的接口信息(_USBD_INTERFACE_INFORMATION).用UsbBuildGetDescriptorRequest()只能取得设备配置描述符与接口描述符,但得不到设备的接口信息(_USBD_INTERFACE_INFORMATION).如何由某个接口描述符得到它的接口信息(_USBD_INTERFACE_INFORMATION)??? 哪位大牛能告诉小弟呀,小弟万分感激!!!! 50分相送! |
|
沙发#
发布于:2004-07-19 20:39
我是菜鸟,偏要叫!!
|
|
|
板凳#
发布于:2004-07-19 21:52
你是在哪里取呀,是在驱动里还是在应用程序里
如果是应用层,可以用DeviceIoControl函数, 指定为IOCTL_BULKUSB_GET_CONFIG_DESCRIPTOR 但不是(_USBD_INTERFACE_INFORMATION)结构,类似的USB_INTERFACE_DESCRIPTOR |
|
|
地板#
发布于:2004-07-20 14:31
这种问题还用大牛吗,很多书上都有的。偏不告诉你。
|
|
地下室#
发布于:2004-07-20 14:47
各位大牛们: UsbBuildGetDescriptorRequest()不是在驱动程序用的 你是怎么在应用程序里使用的? |
|
|
5楼#
发布于:2004-07-20 14:50
哎,这孩子,不会说话得罪人啦,谁没当过菜鸟?认真看看URB的
结构吧,就在UrbSelectConfiguration里找找。 |
|
|
6楼#
发布于:2004-07-21 10:44
哎,这孩子,不会说话得罪人啦,谁没当过菜鸟?认真看看URB的 你的是说在可以应用程序里使用UsbBuildGetDescriptorRequest? 能不能说的详细一些? |
|
|
7楼#
发布于:2004-07-21 12:10
这个对你或许有用?
void init(){ HDEVINFO hardwareDeviceInfo; //获取设备信息集 hardwareDeviceInfo = SetupDiGetClassDevs ( (LPGUID)&GUID_CLASS_1581_BULK, NULL, // Define no enumerator (global) NULL, // Define no (DIGCF_PRESENT | // Only Devices present DIGCF_INTERFACEDEVICE)); // Function class devices. SP_INTERFACE_DEVICE_DATA deviceInfoData; int NumberDevices=4;//假定值,可以调整 deviceInfoData.cbSize=sizeof(SP_INTERFACE_DEVICE_DATA); //获取接口信息 for(int i=0;i<NumberDevices;i++){ SetupDiEnumDeviceInterfaces (hardwareDeviceInfo, 0, // We don't care about specific PDOs (LPGUID)&GUID_CLASS_1581_BULK, i, &deviceInfoData) ; } PSP_INTERFACE_DEVICE_DETAIL_DATA functionClassDeviceData = NULL; ULONG predictedLength = 0; ULONG requiredLength = 0; // allocate a function class device data structure to receive the // goods about this particular device. SetupDiGetInterfaceDeviceDetail ( hardwareDeviceInfo, &deviceInfoData, NULL, // probing so no output buffer yet 0, // probing so output buffer length of zero &requiredLength, NULL); // not interested in the specific dev-node predictedLength = requiredLength; functionClassDeviceData = (PSP_INTERFACE_DEVICE_DETAIL_DATA)malloc (predictedLength); functionClassDeviceData->cbSize = sizeof (SP_INTERFACE_DEVICE_DETAIL_DATA); // Retrieve the information from Plug and Play. //获取设备文件名 SetupDiGetInterfaceDeviceDetail ( hardwareDeviceInfo, &deviceInfoData, functionClassDeviceData, predictedLength, &requiredLength, NULL); strcpy(devname,functionClassDeviceData->DevicePath); free(functionClassDeviceData); } |
|
8楼#
发布于:2004-07-25 19:42
嘻嘻,我是菜鸟,所以不好意思告诉你了
|
|