问题标签 [kernel-extension]
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 - 如何在 kext 中获取 OS X 版本号?
我有一个需要知道它运行的 OS X 版本的 kext。CocoaDev 有一篇文章描述了如何使用 Gestalt() 获取 OS X 版本信息,但代码需要 Cocoa。
我可以从 kext 调用 Gestalt() 吗?
如果是这样,我用什么#include 来定义它?
如果没有,还有其他解决方案吗?
背景:
我想在从 10.4 到 10.7 的所有 OS X 版本上使用相同的 kext。
但是:kexts callcdevsw_add
,在 Lion 中以非向后兼容的方式进行了更改。随着(显然)对调用它的一些内核程序的更改,这些更改意味着 - 根据例程之前的注释 -cdevsw_add
在 10.7 上应该使用与 OS X 10.0 到 10.6 不同的第一个参数来调用它。(Lion 为-12,早期版本为-1。)
如果 kexts 可以确定它们在哪个版本的 OS X 上运行,那就很容易了。(如果没有,这样做会很痛苦——可能是一个可怕的组合,比如构建两个不同版本的 kext,然后让 kext 加载代码选择要加载的版本。)
c - 如何在 mac os x 的内核扩展项目中使用 zlib?
我想在 mac os 上开发一个网络内核扩展。我在函数 sf_data_in() 中得到了一些 gzip 格式的数据。我包含了名为 的头文件<libkern/zlib.h>
,当我使用“kextload”加载 kext 后,我的 mac 在运行下面的代码时崩溃了。
谁能告诉我如何在内核编程中使用它。最好提供一些样品。非常感谢。
macos - 无代码kext加载问题
我创建了一个无代码 kext,这样我的一个 USB 设备就不会被 AppleUSBUHCI 驱动程序绑架。当我插入一个时,它应该加载不同的驱动程序。FTDI 和 CSR 设备都会发生这种情况。
我把我的 kext 放在一起,info.plist 看起来很像这里的示例:http: //www.projectosx.com/forum/index.php? showtopic=798只是具有不同的 VID/PID。我用 -entZ 运行了 kextutil,唯一的警告是我的个性有不同的 CFBundleId。我按照此处的说明,在 Mac 上读取和写入 USB (HID) 中断端点来加载它。
当我加载 kext 时,它说它加载成功,但是我用 kextstat 看不到它,当我插入我的设备时,它仍然被劫持。当我尝试执行 kextunload 时,它说未加载 kext。
任何帮助,将不胜感激。
macos - USB 设备在拔出时在 IORegistryExplorer 中显示两次 - 活动和终止
我有一个 USB 设备,我开发了一个无代码 kext 来防止 OS X 抢先捕获它。kext 只是使设备与 IOBluetoothFamily.kext 中的不同 kext 匹配。
当我执行以下操作时,我注意到一个奇怪的行为:
- 重新启动只是为了清除 IO 注册表。
- 启动 IORegistryExplorer。
- 插入设备,获取:已注册、已匹配、活动与保留 10、忙碌 0。
- 拔下设备,条目变为红色(已终止的对象)。
- 更新注册表:终止的对象仍然存在(如预期的那样)。此外,未终止的对象显示与终止的对象相同的内容,除了未注册、未匹配、未激活、保留 4、忙碌 2。
- 清除终止的对象 - 只有红色条目会消失。另一个条目仍然存在。
我没有运行任何其他可以访问该设备的应用程序。
我匹配的kext可能有错误吗?
cocoa - 使用 Xcode Cocoa 应用程序创建设备驱动程序
如果有人对此有任何想法,请提供一些提示.. 感谢您的重播
xcode4 - 使用 Xcode 创建的设备驱动程序不会加载
如果我尝试在终端上加载设备($ sudo cp -R MyDriver.kext /tmp),我会收到错误消息:
我的疑问是:1)什么是没有指定内核文件错误(我的应用程序错过了什么)?2)什么是MyDriver.kext 无效;无法解决依赖关系?3)我的捆绑标识符是:
CFBundleIdentifier com.MyCompany.driver.${PRODUCT_NAME:maanu}
非常感谢您的回复。
cocoa - Mac 环境下的 USBHIDManager HID、getReport() 和 setReport()
我们正在尝试与 USB HIDDevice 通信。WriteFile()
该设备在 Windows 中运行良好,我们可以使用和发送报告并返回报告ReadFile()
。
在 Mac 上,我们正在尝试使用setReoprt()
和与设备交互getReport()
。但是getReport()
没有返回任何数据,而是一个错误。
申请中有什么问题?
objective-c - 未指定内核文件 KEXT MAC 环境中的错误
我尝试为 USBHID 设备实现 KEXT。如果我在终端上检查它能够加载 KEXT 即
Newtok:Desktop Rasheed$ kextutil -nt SampleKextDriver.kext 没有指定内核文件;使用正在运行的内核进行链接。SampleKextDriver.kext 似乎是可加载的(包括磁盘库的链接)。
但不幸的是,我收到了上述消息。我的 plist 文件是
我不知道我在哪里做错了,我在 Mac OS X 开发方面没有太多经验。谁能建议最好的文件或一些想法
感谢您的信息...
macos - 在 Mac OS X 中获取进程创建通知
我正在尝试为 Mac OS X 编写 kext,它会在任何进程启动时得到通知。
在 Windows 中,您可以通过调用 PsSetLoadImageNotifyRoutine(...) 来执行此操作,并指定将在进程启动时调用的回调。这是记录在案的方式,它适用于从 Win 2k 开始的所有 Windows。
Mac有类似的东西吗?使用 kauth 进程侦听器似乎可以实现这一点,但进程范围从未在 OS X 中实现。
另一种选择是挂钩 SYS_execve 和朋友,但这是未记录且不受支持的方式。我真的不想走这条路。
我不需要任何取消 - 只想在进程启动时收到通知,并获取它的 pid 和路径。