Objective-C; Mac OS 10.10或更高版本 在我的XCode Mac库项目中,我遵循下面链接中的Apple开发人员库代码中的功能 RawDeviceAdded ,以处理添加了不同Pid的原始USB设备。 https://developer.apple.com/library/archive/documentation/DeviceDrivers/Conceptual/USBBook/USBDeviceInterfaces/USBDevInterfaces.html
在快速接连插入设备时,该项目崩溃,并带有以下文本行: 线程1 exc_bad_access(code = exc_i386_gpflt) 。显示在此行:
result = (*plugInInterface)->QueryInterface(plugInInterface,
CFUUIDGetUUIDBytes(kIOUSBDeviceInterfaceID),
(LPVOID *)&dev);
但最后执行的行是下面的 printf 行:
if ((vendor != kOurVendorID) || (product != kOurProductID1) || (product != kOurProductID2) )
{
printf("Found unwanted device (vendor = %d, product = %d)\n",
vendor, product);
(void) (*dev)->Release(dev);
continue;
}
当我较慢地插入设备或将睡眠添加到功能中时,它似乎可以正常工作而不会崩溃,但是,我想以正确的方式对其进行修复。 发生了什么以及如何正确处理它?。