gpt4 book ai didi

c++ - 如何创建一个程序来列出 Mac 中的所有 USB 设备?

转载 作者:IT老高 更新时间:2023-10-28 21:56:13 28 4
gpt4 key购买 nike

我对 Mac OS X 操作系统的接触有限,现在我已经开始使用 Xcode 并且正在研究 I/O 套件。我需要在命令行工具下的 Xcode 中创建一个程序,以便列出 Mac 系统中连接的所有 USB 设备。有这方面经验的人,请帮帮我。如果有人能给我提供示例代码,那么它将非常有用,因为我正在寻找起点。

最佳答案

你可以适应 USBPrivateDataSample根据您的需要,该示例设置一个通知程序,列出当前连接的设备,然后等待设备连接/分离。如果这样做,您将需要删除 usbVendorusbProduct 匹配字典,以便匹配所有 USB 设备。

或者,您可以使用 IOServiceGetMatchingServices使用 IOServiceMatching(kIOUSBDeviceClassName) 创建的字典获取所有当前匹配服务的迭代器。

这是一个简短的示例(我从未运行过):

#include <IOKit/IOKitLib.h>
#include <IOKit/usb/IOUSBLib.h>

int main(int argc, const char *argv[])
{
CFMutableDictionaryRef matchingDict;
io_iterator_t iter;
kern_return_t kr;
io_service_t device;

/* set up a matching dictionary for the class */
matchingDict = IOServiceMatching(kIOUSBDeviceClassName);
if (matchingDict == NULL)
{
return -1; // fail
}

/* Now we have a dictionary, get an iterator.*/
kr = IOServiceGetMatchingServices(kIOMasterPortDefault, matchingDict, &iter);
if (kr != KERN_SUCCESS)
{
return -1;
}

/* iterate */
while ((device = IOIteratorNext(iter)))
{
/* do something with device, eg. check properties */
/* ... */
/* And free the reference taken before continuing to the next item */
IOObjectRelease(device);
}

/* Done, release the iterator */
IOObjectRelease(iter);
return 0;
}

关于c++ - 如何创建一个程序来列出 Mac 中的所有 USB 设备?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7567872/

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