问题标签 [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.

0 投票
0 回答
199 浏览

usb - 10.8.5 kextunload 失败,但在所有前辈下都可以使用

我正在寻找有关与 kexts 相关的最新 10.8.5 更新的更详细信息。

到目前为止,没有可用于 10.8.5 的 IOUSBFamily 日志版本,但不知道这是否有帮助。

我的 kext(虚拟 USB 总线,源自 IOUSBControllerV3)适用于所有前辈,但与 10.8.5 必须存在显着差异,这让 kextunload 因典型的“类有 1 个实例”错误而失败。

提前感谢您的任何提示,关于马库斯


是的,我已经超载了三个

功能并查看输出但不知道谁没有在 10.8.5 下发布他的标签?

0 投票
1 回答
263 浏览

c++ - IOService 无故泄漏

好吧,我完全被难住和沮丧了。我正在研究 I/O Kit RAM Disk 实现,发现当我的朋友用它加载它kextload然后尝试用kextunload. 原因是OSObjectkext 分配的所有 s 都没有被释放。但是,在我的计算机(运行 Mac OS 10.8.5)和虚拟机(运行 Mac OS 10.7)上,一切都按预期工作。

最终,我将问题缩小到如此之多,以至于我使用空白 I/O Kit 驱动程序创建了一个新的 Xcode 项目,并在我朋友的机器上对其进行了测试。瞧,我无法卸载模块,kextunload因为它声称我的IOService子类正在泄漏。我想在我朋友的机器上测试另一个驱动程序,我没有覆盖任何方法(在我测试的版本中,我在传递调用之前IOService覆盖了一些 to do s )。我会用我收集到的关于他的机器配置的任何额外信息来更新它。IOLogsuper

这是我的标题(BrokenDriver.h):

这是我的实现(BrokenDriver.cpp):

此外,因为我知道这可能是问题的根源,所以这里是我的 BrokenDriver-Info.plist 的 XML:

那么,判决结果是什么?我朋友的内核是炸的,还是我的大脑?他的机器上的其他驱动程序是否有可能试图持久化我的 kext?

更新:我再次尝试使用 EMPTY 实现。没错,我完全覆盖了我自己的 0 个方法。问题仍然存在。这是来自的消息kextunload

0 投票
1 回答
149 浏览

macos - RetrieveINQUIRYData() 中偶尔出现 OSX 内核崩溃

我有一个 SCSI 驱动程序,它IOSCSIPrimaryCommandsDevice::RetrieveINQUIRYData()作为启动过程的一部分调用。有时,在测试期间拔出、弹出、重新插入和一般滥用设备后,会发生内核崩溃。

这个函数的签名是:

调用它的例程是这样开始的。它以 IOSCSITargetDevice.cpp 中的PublishUnitSerialNumber为模型

这在大多数情况下都有效,只是偶尔会出现恐慌。GDB 回溯没有帮助,因为该函数中没有符号,所以我只知道它是在另一个函数调用之后。我也找不到这个函数的源代码——我认为它是闭源 IOKit 代码的一部分。

RetrieveINQUIRYData()在调用上述代码中我没有做的事情之前,我应该检查或做些什么吗?据我所知,所有的指针都被检查为 NULL,长度被设置为常量,唯一的另一个参数是 EVPD 的文字。

0 投票
1 回答
4615 浏览

c++ - 在 Mac OS X 中创建虚拟 USB 设备

我尝试以编程方式在 Mac OS 中添加带有驱动程序的虚拟 USB 设备。IOKit 文档说:传统上,虚拟设备的驱动程序在 IOResources 上匹配,因为虚拟设备不发布自己的小块。这种驱动程序的另一个示例是 HelloIOKit KEXT(在“使用 Xcode 创建设备驱动程序”中进行了描述),它在 IOResources 上匹配,因为它不控制任何硬件。

但我没有找到在系统中添加虚拟设备的方法。我怎样才能做到这一点?

0 投票
1 回答
231 浏览

macos - 睡眠和唤醒过程对 OSx 上的内核扩展有何影响

我想知道在 OSx 内核的睡眠和唤醒过程中发生了什么。

内核扩展是否接收到新的地址空间并重新开始其初始化过程,或者内核只是将扩展放回相同的地址空间?

内部内核扩展(例如 IOKit 驱动程序)的行为是否也相同?也许它们被加载到内存中的不同位置?

基本上问题是:我的驱动程序获得了 IOService 的接口,是否能够在睡眠后毫无问题地使用它的地址。

0 投票
1 回答
3427 浏览

macos - 小牛队中的 Kext 代码签名错误

我们有一个音频内核扩展,它安装在 /Library/Extensions 中。根据苹果新指南(WWDC 视频 707),我们应该对安装 /Library/Extensions 的 kext 进行代码签名。我们要求苹果为我们的开发者 ID 启用 kext 代码签名属性,现在它已启用。根据我们从苹果收到的邮件回复是这样说的

如果您之前获得了用于应用程序签名的 Developer ID,则需要重新下载您的 Developer ID 才能获得更新的证书。

因此,我们重新下载了证书并对 kext 进行了代码签名。代码编译良好但是,当我们尝试使用以下命令验证代码符号时 sudo kextutil -tn KEXTPATH

它给出以下错误 - 代码签名失败:代码签名无效 KEXT_PATH 似乎是可加载的(包括磁盘库的链接)。

谁能帮我解决这个错误。

0 投票
1 回答
640 浏览

kernel - 当我编写内核扩展时,我在 AIX 6.1 中找不到文件“/usr/lib/kernex.exp”

我写了一个“hello world”aix 内核扩展,然后我“制作”了它。我的makefile如下:

和错误信息:

所以我想知道我的 aix 6.1 中没有“libsys”、“libcs​​ys”和“/usr/lib/kernex.exp”。

那你们能帮帮我吗?

0 投票
1 回答
476 浏览

xcode - 线程应该等待完成 kext 编程中的设备请求

我正在Mac上开发设备驱动程序。我的问题是我们如何使设备请求异步到同步。就像我向设备发送一个发送封装的命令,并在收到中断管道的通知后使用获取封装的命令得到它的响应。所以我怎样才能让我的线程等到上述所有请求都没有完成(发送和获取)。

0 投票
1 回答
217 浏览

memory-management - 在 AIX 的中断环境中可以调用哪些内存分配函数?

xmalloc只有在我编写 AIX 内核扩展时才能在进程环境中使用。

在 AIX 的中断环境中可以调用哪些内存分配函数?

谢谢。

0 投票
1 回答
138 浏览

c - 为什么不能在 AIX 中使用宏“PVPROCPTR”?

宏 PVPROCPTR(pid) 可以将 PID 转换为进程指针。

所以我用它。但是我做的时候有错误。

AIX头文件中这个宏的定义如下:

所以我想知道为什么不能用?