问题标签 [driverkit]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - 是否可以使用 DriverKit 创建子 IOUSBHostDevice?
使用 KEXT 可以分配所需的类(即 IOUSBHostDevice),执行 init()、attach()、设置所需的属性并调用该对象的 registerService()。
使用 DEXT,我们只有 IOService::Create() 方法,它接受来自 Info.plist 的属性键名。因此,它适用于 IOUserClient 和 IOUserHIDDevice 但不适用于 USB。
那么在 DEXT 中,创建任意子对象的一般方法是什么?
macos - 适用于 MacOS 的虚拟打印机驱动程序
我可以为 macOS 制作虚拟打印机驱动程序吗?
作为一项服务,它将在后台运行,当任何用户按下 cmd+p 打印任何文档时,我的应用程序将出现在 Apple 默认打印页面的打印机列表中。
apple-silicon - Apple Silicon / M1 的 macOS 驱动程序套件系统扩展应该是 arm64 还是 arm64e?
我将 macOS 驱动程序包系统扩展编译为通用库,以便它同时包含x86_64
和arm64
. 一台 Apple Silicon 计算机 A 连接 USB 设备时驱动程序启动。在连接 USB 设备时,在 Apple Silicon 计算机上,BI 可以kernel: exec_mach_imgact: disallowing arm64 platform driverkit binary "com.example.driver", should be arm64e
在 Console.app 中看到正在打印。我查看了发生这种情况的源代码
,但我无法弄清楚问题所在。如果我编译它arm64e
然后它会exec_mach_imgact: not running binary "com.example.driver" built against preview arm64e
在计算机 A 上运行,然后它会在计算机 B 上启动。
没有一台电脑-arm64e_preview_abi
设置在boot-args
.
如果我在每台机器上创建一个新的 Xcode (12.4) 项目并构建 Release 然后计算机 A 并otool -fvv com.example.driver
给出
在计算机 B 上,相同的命令给出
如何让驱动程序在两台机器上启动?
serial-port - 如何实现 TxDataAvailable。如何知道要发送到 USB 层的缓冲区大小
我想使用驱动程序工具包框架开发串行驱动程序。我正在尝试覆盖 IOUserserial 类方法。但我不知道如何使用 TXDataAvailable() 和 RXDataAvailable() 函数获取要发送到 USB 层的缓冲区大小? 任何参考代码都会有所帮助。
macos - 如何使用 IOUserSerial 类将接收数据发送到串行设备
我已经浏览了 IOUserSerial 和 IOUserUSBSerial 的苹果文档。这些文档清楚地告诉我必须将 IOUserUSBSerial 用于 USB 设备。所以只是为了测试我子类化了 IOUserUSBSerial 并且我发现驱动程序工作正常,但是读/写是由框架控制的。我没有找到任何可用于获取数据的方法。即使virtual void TxDataAvailable(void)
方法是最终的。所以不能超载。如果我使用 IOUserUSBSerial 类,如何获取数据?
所以我想到了使用 IOUserSerial 类。通过使用这个类,我可以重载
方法。我通过重载 ConnectQueues 方法得到的缓冲区地址。但我无法获得要写入的数据长度。
我没有得到任何方法@ https://developer.apple.com/documentation/serialdriverkit/iouserserial
提前感谢您的帮助
driverkit - Apple bigsure os,无法在coolterm中打开设备端口
我正在尝试为我的设备编写驱动程序套件,我继承了 iouserusbserial 类
当我尝试使用很酷的术语进行连接时,它会给出错误,因为“尝试打开端口时发生错误,100:访问被拒绝”,我可以从连接队列函数中看到日志,并立即调用断开队列,我希望有一些此权限被拒绝错误的解决方案
在日志流中我可以看到如下:“IOUserSerial::: 522 0x6000028f4058 IOUserSerial:::523 0x6000028f4058, IOUserSerial:::110 0x6000028f4058”
c++ - OSDynamicCast 未在基本驱动程序套件示例中编译
我有一个非常简单的驱动程序套件驱动程序。这几乎是样板。
我在尝试使用时遇到了构建失败OSDynamicCast
,如下所示
我对 OSDynamicCast 的使用给了我以下问题。
使用未声明的标识符“gIOUserClientMetaClass”;您的意思是“gIOUserServerMetaClass”吗?
在添加NewUserClient
覆盖之前,驱动程序运行良好(我在 IORegistry 中观察到了它)。
我不确定我在 Xcode 中缺少什么会导致这个问题。我引用的示例(例如 this)完全符合我对 OSDynamicCast 所做的工作。
macos - 我可以使用守护程序打开 DriverKit 用户客户端吗?
我正在 Driver Kit 中构建一个虚拟 HID 设备。
我想从守护程序与虚拟设备驱动程序通信,因为守护程序对于生成将从驱动程序发送的 HID 事件是必需的。
我通过守护程序很好地匹配了我的驱动程序服务,但是当我尝试打开服务时,我-536870174
从这里看到的意思是kIOReturnNotPermitted
.
据我了解,设备驱动程序用户客户端只能com.apple.developer.driverkit.userclient-access
通过 Apple 授权的应用程序打开。
所以,我的问题:
在 Driver Kit 中使用守护进程打开设备驱动程序的用户客户端完全不可能吗?
我在这里唯一的选择是拥有一个具有com.apple.developer.driverkit.userclient-access
权利的中间应用程序,它可以充当守护程序和驱动程序之间的代理吗?
所以它会是这样的:
守护进程<---xpc 连接--> 中间应用程序 <--- 用户客户端 --->虚拟 HID 设备
编辑:要添加到下面关于将应用程序作为守护程序运行的 Phil 答案,这里有一些Apple 书面指南。
macos - 如何获取 DriverKit 系统扩展日志输出
在DriverKit 系统扩展的 2019 年 WWDC 会话演示的这一部分中,您可以看到驱动程序,并且只有驱动程序的日志输出正在使用以下命令进行流式传输:
我没有得到任何输出,即使我添加--debug
了我也不知道为什么。据我所知,我的扩展名列表与ps
. 演示者的输出似乎来自kernel.development[0]
并且我有kernel[0]
. 我没有开发内核——这就是我什么都看不到的原因吗?
如果以上都不起作用,你怎么能方便地监控你的扩展的日志输出呢?
更新
谓词适用于您的捆绑 ID 或IOUserServerName
(不确定哪个,它们在USBApp中相同),但仅适用于log show
,它从偶尔写入的文件中读取,对我来说,我认为它是在重新启动时最后更新的:
但log stream
什么也没给我,即使用 . 替换谓词也是如此 --process pid
。
macos - DriverKit IOUSBHostInterface 的 CopyPipe 失败并出现 kIOReturnError (0xe00002bc)
为了我自己的启迪,我正在尝试使用 DriverKit 系统扩展从 USB 音频接口读取一些音频数据。
我IOProviderClass
的是IOUSBHostInterface
。我可以成功Open()
的接口,但CopyPipe()
返回kIOReturnError
(0xe00002bc
)。为什么我不能复制管道?
为了能够完全打开界面,我必须匹配,AppleUSBAudio
所以我IOKitPersonalities
明确匹配bConfigurationValue
, bInterfaceNumber
, idVendor
,idProduct
和bcdDevice
键。此列表可能不是最少的。
在ioreg
我通常可以看到接口(有时只有我匹配的接口,尽管我认为这是一种退化的情况)。AppleUserUSBHostHIDDevice
我在其他一些界面上看到了一个孩子。这可能是问题吗?通常,该设备既是 USBAudio 又是 HID 没有问题。我也试图不成功地匹配 HID。