ioreg列出多个ext

问题描述

我已经使用DriverKit和USBDriverKit编写了一个系统扩展程序,该扩展程序似乎运行良好(在开发人员模式开启,SIP关闭,...仍在等待授权的情况下运行)。

当我插入USB设备并在终端中键入ioreg | grep com.myinc.mydriver时,我看到一个条目:

+-o IoUserServer(com.myinc.mydriver ... registered,matched,active,busy 0 (0ms),retain 13

我拔下设备的插头,再做一次ioreg,我得到的还是一样,但保留9。

如果我插入设备,则另一个ioreg现在会显示2个条目(上一个一个新条目)。

这正常吗?为什么上一个仍然处于活动状态?

在我的右下角中,我检查了我的Stop和free函数是否被调用,并且我想不到我错过的任何东西。

有人可以向我解释一下,还是让我指出我可能忘记做的事情?保留9与我在代码中的工作有关系吗?

解决方法

我发现了自己的问题,将在这里留下答案,以防其他人...

我使用IOUSBHostInterface(来自CopyInterface())获得了IOUSBHostDevice对象。 然后在这个对象上我叫Open()

在我的Stop()实现中,我在接口对象上调用了Close(),但我忘记了调用release

现在,当我断开设备的连接时,一旦我所有的free()函数都被调用,在控制台中,我会收到消息“没有服务,正在退出”。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...