作者热门文章
- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我对 Mac OS X 操作系统的接触有限,现在我已经开始使用 Xcode 并且正在研究 I/O 套件。我需要在命令行工具下的 Xcode 中创建一个程序,以便列出 Mac 系统中连接的所有 USB 设备。有这方面经验的人,请帮帮我。如果有人能给我提供示例代码,那么它将非常有用,因为我正在寻找起点。
最佳答案
你可以适应 USBPrivateDataSample根据您的需要,该示例设置一个通知程序,列出当前连接的设备,然后等待设备连接/分离。如果这样做,您将需要删除 usbVendor
和 usbProduct
匹配字典,以便匹配所有 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/
我是一名优秀的程序员,十分优秀!