gpt4 book ai didi

xcode - 如何在Mac中获取usb设备的设备描述符和配置描述符?

转载 作者:行者123 更新时间:2023-12-01 10:09:08 25 4
gpt4 key购买 nike

我很少接触 xcode 和 I/Okit 框架。我在 USB 探测器中看到了 USB 设备的设备描述符和配置描述符。 enter image description here

我使用 I/O 工具包框架编写了一个 xcode 程序,当我们将该设备的产品 ID 和供应商 ID 作为输入时,该程序将 usb 设备名称作为输出。

/*Take the vendor and product id from console*/

printf("\nEnter the vendor id : ");
scanf("%lx",&usbVendor);

printf("\nEnter the product id :");
scanf("%lx",&usbProduct);


/* Set up a matching dictionary for the class */
matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
if (matchingDict == NULL)
{
return -1; // fail
}
// Create a CFNumber for the idVendor and set the value in the dictionary
numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &usbVendor);
CFDictionarySetValue(matchingDict,
CFSTR(kUSBVendorID),
numberRef);
CFRelease(numberRef);

// Create a CFNumber for the idProduct and set the value in the dictionary
numberRef = CFNumberCreate(kCFAllocatorDefault, kCFNumberSInt32Type, &usbProduct);
CFDictionarySetValue(matchingDict,
CFSTR(kUSBProductID),
numberRef);
CFRelease(numberRef);
numberRef = NULL;

/*Get an iterator.*/
kr = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, &iter);
if (kr != KERN_SUCCESS)
{
return -1;// fail
}

/* iterate */
while ((device = IOIteratorNext(iter)))
{
/*Display the device names */

io_name_t deviceName;
kr = IORegistryEntryGetName(device, deviceName);
if (KERN_SUCCESS != kr) {
deviceName[0] = '\0';
}


printf("\ndeviceName:%s",deviceName);

/*Free the reference taken before continuing to the next item */
IOObjectRelease(device);
}

/*Release the iterator */
IOObjectRelease(iter);
return 0;

我需要对此进行修改,以便在提供 USB 设备的供应商和产品 ID 时,我将获得设备描述符和配置描述符(如 USB 探测器中所示)作为输出。

这里我只是举了一个例子,代码可以改变但输出必须是描述符(至少是设备描述符)。

提前致谢...

最佳答案

我认为你应该下载USBProber的源代码而不是自己搞定。

USBProber 中的所有信息,您通过分析源代码迟早会得到。

这是下载 IOUSBFamily 源代码的链接,里面有 USBProber。 http://opensource.apple.com/tarballs/IOUSBFamily/

关于xcode - 如何在Mac中获取usb设备的设备描述符和配置描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7606975/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com