在Delphi中从Macapi.IOKit导入IORegistryEntrySearchCFProperty for OSX64
我成功地在OSX32中使用了此导入定义: uses MacApi.ObjectiveC, MacApi.Foundation, Macapi.CoreFoundation, Macapi.Mach, Macapi.IOKit; type io_iterator_t = io_object_t; io_name_t = array[0..127] of AnsiChar; function IORegistryEntrySearchCFProperty(entry: io_registry_entry_t; plane: io_name_t; key: CFStringRef; allocator: CFAllocatorRef; options: IOOptionBits): CFTypeRef; cdecl; external libIOKit name _PU + 'IORegistryEntrySearchCFProperty';
2 2024-01-08
编程技术问答社区
未找到IOKit
所以一切都很好,然后我决定开始在Xcode 5 dp3和ios7 上开发 在升级之前,我的项目在iPhone 3GS上进行了编译并运行良好(我制作了一些软电话应用程序);但是,它没有在我的iPhone 5上运行;我非常有信心,这是我尚未将其配置为包括ARMV7S架构的事实. 我可以在模拟器上构建并运行所有内容,但是(这是在配置应用程序以包含ARMV7S架构之后),我无法在我的设备上运行它. 我得到此错误: ld: framework not found IOKit clang: error: linker command failed with exit code 1 (use -v to see invocation) 我什至不确定一个人如何使用-v查看调用. 我读了一些iokit仅用于模拟器的地方...这是否意味着在设备上构建时,我应该将其从库中取消链接?为什么我在3GS上工作之前不遇到此错误? 我对为什么它不再适用于我的3GS(尽管错误是相同)的假设
0 2023-12-20
编程技术问答社区
使用iokit框架在Mac OS X中以编程方式创建一个块状设备
由于我是Mac OS X编程的总菜鸟,因此我想在Mac OS X Leopard中创建一个块设备,该块设备将在Mac OS X中充当正常驱动器,之后我想要定义该设备的几何形状或根据我在安装过程中创建的驱动器的驱动器.当我使用Xcode并想进行驱动程序开发时,我正在使用IOKIT框架.谁能告诉我我应该用哪些标题文件和API来完成此任务.任何帮助,将不胜感激.请帮我!!! Ironhide707. 解决方案 您想要Iokit的Iostorage子系统.最简单的入门方法是创建一个过滤方案驱动程序: http://developer.apple.com/library/mac/#documentation/devicedrivers/conepteual/massstorage/08_media_example/ms_media_media_example.html Amit Singh的书" Mac OS X Internals"还包含一些信息和一个示例(来源可在
2 2023-12-19
编程技术问答社区
在XCode上使用I/O套件的方法时,构建失败
我需要在睡眠时在我的C ++应用程序中执行一些操作,并唤醒Mac OS.我被指向使用I/O套件. 我跟随本指南特别是"列表3" . IOKit> IOKit的指令没有发生构建错误. 但是,构建失败时,当我不加入IOAllowPowerChange()或IOCancelPowerChange(): Undefined symbols for architecture x86_64: "_IOAllowPowerChange", referenced from: SleepCallback(void*, unsigned int, unsigned int, void*) in MyAppFrameWork.a(PowerWatcher.o) ld: symbol(s) not found for architecture x86_64 clang: error: linker command failed with exit code 1 (use -v
2 2023-12-19
编程技术问答社区
从IOUSBInterface管道中找出数据
我正在编码一个Mac应用程序,该应用程序将消息发送和接收消息使用IOKIT.我需要发送消息以更改其状态,并且需要为我提供有关视频(例如分辨率或录制)的信息.我意识到我必须找到正确的消息才能发送它,因此首先我认为我可以先从其中收到一些消息.我已经找到了设备的接口.我将如何能够转储收到的消息? 这是USB探针的日志: Composite device: "PVR" Port Information: 0x001d Captive Internal Device Connected Enabled Number Of Endpoints (includes EP0): Total Endpoints for Configuration 1 (current): 7 Device Descriptor Descriptor
4 2023-12-19
编程技术问答社区
如何获取Mac中USB设备的设备描述符和配置描述符?
我对XCode和I/OKIT框架的接触最少.我已经看到了USB Prober中USB设备的设备描述符和配置描述符.我已经使用I/O套件框架编写了Xcode程序,该框架将USB设备名称作为输出,当我们提供该设备的产品ID和供应商ID作为输入. /*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; //
26 2023-12-19
编程技术问答社区
如何创建一个程序来列出Mac中的所有USB设备?
我对Mac OS X操作系统的接触有限,现在我开始使用Xcode并正在研究I/O套件.我需要在命令行工具下创建XCode中的程序,以列出Mac系统中连接的所有USB设备.那些以前有经验的人,请帮助我.如果有人可以为我提供示例代码,那么它将很有用,因为我正在寻找起点. 解决方案 您可以适应另外,您可以使用这是一个简短的样本(我从未运行): #include #include 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 */ m
4 2023-12-18
编程技术问答社区
在Kexts中连接Dylibs?
我已经为OS X编写了一个Kext,该Kext使用(IOKIT)LIBUSB和JPEGLIB实现了基于USB的Framebuffer.这两个都是dylibs,由于某些原因,它们无法在Xcode中正确链接,并且在尝试加载Kext时,OS不会解决依赖项. 这整个过程的背景是三星制作了可以充当第二个显示器的LCD图像框.唯一的问题是它不是DisplayLink或任何其他已知协议 - 仅Windows驱动程序吐出自定义标头,每个帧都编码为JPEG并发送到设备.我的实现是对OS X的,但是我使用了Libusb,因为它是框架缓冲设备,并且需要在启动时加载 - 想要与热插头检测和IOKIT的USB设备要求更多地处理驾驶显示. . 感谢您的帮助!你们很棒. 解决方案 我恐怕kexts并没有严格动态地链接自己(它们在运行时加载,但它们的结构是静态的),并且除非某些英勇的自定义链接器/加载程序,否则您不会让Dylib加载进入内核空间. 据我所知,libusb的重点是在 user 空间
2 2023-12-18
编程技术问答社区
在OSX和Windows 10上的低延迟等级
我试图在高速USB 2上以非常低的延迟来输出(编程生成).理想情况下,大约1-2毫秒.在Windows上,我正在使用winusb,在OSX上,我正在使用iokit. 我想到了两种方法.我想知道哪个是最好的. 1帧转移 winusb在允许的范围内非常限制,并且需要每个同调传递为全数帧(1帧= 1 ms).因此,以最小化延迟使用一个框架的延迟传输,类似这样的循环: for (;;) { // Submit a 1-frame transfer ASAP. WinUsb_WriteIsochPipeAsap(..., &overlapped[i]); // Wait for the transfer from 2 frames ago to complete, for timing purposes. This // keeps the loop in sync with the USB frames. WinUsb_GetOv
6 2023-11-10
编程技术问答社区
内存泄漏-不确定如何/在哪里CFRelease() CFSet
我再次为记忆泄漏而苦苦挣扎,需要一些帮助来解决这个问题.我知道(或很确定)CFSET是这里的问题. 我假设我需要cfrelease()它们,但是不确定如何完成此操作,因为我还需要返回usbdevicecount()中的cfset.任何帮助,将不胜感激!谢谢! 这是代码(看起来很棒!除泄漏外): // New USB device has been added (callback function) static void Handle_DeviceMatchingCallback(void *inContext, IOReturn inResult, void *inSender, IOHIDDeviceRef inIOH
8 2023-11-10
编程技术问答社区
如果我的驱动程序继承了 IOUserUSBSerial,则启动返回 0xE00002C7
我正在为单端口USB串行适配器开发驱动程序驱动程序.我有一个简单的驱动程序代码如下. class MyDriver: public IOUserUSBSerial { public: virtual bool init() override; virtual kern_return_t Start(IOService *provider) override; virtual kern_return_t Stop(IOService *provider) override; virtual void free() override; }; bool MyDriver::init() { Log("Entered %s", __FUNCTION__); return super::init(); } void MyDriver::free() { Log("Entered %s", __FUNCTION__); su
0 2023-11-10
编程技术问答社区
如何在DriverKit中把我的dext与USB设备相匹配?
我正在写一个驱动程序扩展程序,其目标是阻止USB设备,例如闪存驱动器.作为起点,我在努力不禁用键盘或鼠标,首先,我试图将DEXT与单个混凝土USB驱动器匹配,我在注册表中发现了供应商(意识到Hexa到小数转换).问题是,当闪存驱动器插入时,系统与我的dext不匹配,并继续使用系统. 怎么了?这是否需要一个供应资料?甚至可以以这种方式匹配任何设备吗? 驾驶员的权利文件: com.apple.security.app-sandbox com.apple.develop
8 2023-11-10
编程技术问答社区
使用无代码的kext隐藏音频设备
我正在开发一个音频驱动程序,以使用Apple中的音频反射器驱动程序示例代码进行一些自定义的音频处理.使用Core Audio应用程序,来自音频反射器驱动程序的输出将传递给真实的USB音频硬件设备.现在,我想从系统首选项中隐藏USB音频硬件设备,以便用户无法选择USB音频硬件输出设备作为默认输出设备.使用" sampleusbaudiooverridedriver"编码kext,我能够更改输出接口的名称,但不能隐藏它.关于如何隐藏USB音频硬件输出设备的任何想法. 预先感谢. vin pai 解决方案 在此主题上进行研发之后,我发现示例代码中提供的无编码kext,sampleususususususoverridersriver不使用属性集来隐藏设备接口.
8 2023-11-10
编程技术问答社区
如何在macOS下找到一个串行端口的父USB设备?
这是我试图枚举Mac上的所有串行端口的方式,并遍历设备节点树以找到用于USB serial适配器的父级USB设备: #import #import #import #import int main(int argc, const char * argv[]) { @autoreleasepool { CFMutableDictionaryRef keywordDict = IOServiceMatching(kIOSerialBSDServiceValue); io_object_t port = 0; io_iterator_t iterator = 0; kern_return_t result = IO
8 2023-11-10
编程技术问答社区
OSX: 如何从IOUSBDeviceInterface或location id获得卷名(或bsd名称)?
我正在尝试编写一个将特定的USB字符串描述符(USB质量存储设备)与其音量或BSD名称相关联的应用程序. 因此,代码通过所有连接的USB设备,获取字符串描述符并从其中一个中提取信息.我想获取这些USB设备的卷名称.我找不到正确的API. 我试图这样做: DASessionRef session = DASessionCreate(kCFAllocatorDefault); DADiskRef disk_ref = DADiskCreateFromIOMedia(kCFAllocatorDefault, session, usb_device_ref); const char* name = DADiskGetBSDName(disk_ref); 但是dadiskcreatefromiomedi
2 2023-11-10
编程技术问答社区
USBInterfaceOpen总是报告kIOReturnExclusiveAccess错误
最近,我头痛地遇到了这个问题,我已经在这个问题上度过了一个星期,但仍然失败了.希望您可以帮助我踢开这块石头,非常感谢. 我的问题: 我们的副本为iPhone生产USB存储设备,实际上该存储设备中有一个SDCARD.现在,我们想开发一个Mac应用程序来更新此存储设备的固件.但是,每当我将存储设备连接到Mac时,Mac都会自动安装它,并且当Indoke usbinterfaceopen 时,我总是会在 kioreturnexclusiveaccess 中失败. . 我还尝试编写无编码kext 以提高探针分数,但仍然不起作用.我不知道我走错了方法,或者写一些编码kext的错误,例如写一些错误的ioclass,错误的捆绑包ID. 我的无编码kext info.plist是:
4 2023-11-10
编程技术问答社区
IOCreatePlugInInterfaceForService返回神秘错误
我试图在新的Swift 4.0 Mac应用程序(不是iOS)中使用一些旧的IOKIT功能.我创建了一个桥接标头来使用现有目标C第三方框架DDHIDLIB,而我当前在Xcode 9中工作. 尝试创建USB GamePad的插件接口的代码落在IocreatePluginInterfaceforservice上,返回非零错误. 真正奇怪的事情是,我在Xcode的先前版本中创建了一个较旧的应用程序,该应用程序使用相同的框架并在新的Xcode 9中打开后正确工作.在新的Xcode 9中打开.该先前的项目仍然迅速使用相同OBJ的桥接标头-c框架.我已经检查了构建设置,并试图使所有内容都匹配,但是我得到了相同的结果.旧的应用程序可行,但任何新应用都不行. 是否有一种方法可以:找出构建设置/编译器中的确切差异,以查看难以捉摸的差异,或者逐步进入IocreateAtePluginInterfaceforservice iokit方法,以查看可能导致错误返回的错误项目,但不是另一个?
2 2023-11-10
编程技术问答社区
如何获得Mac OS Cocoa中安装的USB设备的设备ID、供应商ID和产品ID
我正在尝试编写一个可可程序,该程序检测到连接到Mac OS的iPod.我正在听NSWorkspacedIdMountNotification和NSWorkspacedIdunMountNotification for USB设备安装和卸载通知.我可以使用NSString *路径= [[notif UserInfo] objectForKey:@" nsdevicepath"];但是我还需要知道设备ID,供应商ID,产品ID等,以检查挂载的设备是否是iPod.我认为前进的道路是iokit.但是我觉得它用于低级编程.还有其他方法可以找到这些吗?另外,如果是IO套件,是否有任何示例程序,当我提供安装路径时会提供ID? 非常感谢. 解决方案 我认为您可以通过 获得产品和供应商ID ioreg -p IOUSB -l -b | grep -E "@|idVendor|idProduct" ,但不确定设备ID.也许 ioreg -p IOUSB -l -b | grep
4 2023-11-10
编程技术问答社区
如何在Swift中实现IOServiceMatchingCallBack?
我想检测到我的应用程序中插入/删除的特定USB.目前,我可以使用此教程我尝试了以下操作,但是我有一个错误:无法转换类型的值'(unsafepointer,iterator:io_iterator_t) - >()'到预期参数类型'ioservicematchingcallback!'' func detectUSBEvent() { var portIterator: io_iterator_t = 0 var kr: kern_return_t = KERN_FAILURE let matchingDict = IOServiceMatching(kIOUSBDeviceClassName) let vendorIDString = kUSBVendorID as CFStringRef! let productIDString = kUSBProductID as CFStringRef! CFDictionarySetValu
4 2023-11-10
编程技术问答社区
如何设置`com.apple.developer.driverkit.transport.usb"权利?
我不确定如何在dext授权文件中设置com.apple.developer.driverkit.transport.usb键. The Info.plist file already contains the IOKitPersonalities dictionary, and reading about the com.apple.developer.driverkit.transport.usb 字典看起来应该包含条目,其中包含与IOKitPersonalities的条目相同的信息. com.apple.developer.driverkit.transport.usb 当我将其设置为时,系统扩展就开始了.在看到该应用程序的日志线之前,我确实会看到一些这样的行: ... 2020-05-06 12:23:19.229709+0200 0x51ac2 Default 0x0
10 2023-11-10
编程技术问答社区