【发布时间】:2014-03-09 19:33:11
【问题描述】:
我专门实现了一个iff_event_func 回调来检测KEV_DL_IF_DETACHING 和KEV_DL_IF_DETACHED 事件。
在 10.8.5 上,我看到我的函数在我意外移除接口时被调用,例如 USB 连接的电话。但是,kev_msg 数据的 event_code 成员的值是 13 (KEV_DL_LINK_ON) 而不是 10 (KEV_DL_IF_DETACHING)。
我验证了event_code == 13 的iff_event_func 回调是在调用我的iff_detached_func 函数之前进行的,因此iff_event_func 调用似乎通知我的NKE 即将到来的分离。但是,我不明白为什么我得到的是KEV_DL_LINK_ON 而不是KEV_DL_IF_DETACHING。
我在 this changelog 中看到 KEV_DL_IF_DETACHING(以及许多 KEV_DL_IF_xxx 值)显然是为 10.9 添加的。因此,这意味着 10.8.5 不支持 KEV_DL_IF_DETACHING。
我的问题是:
如果 10.8.5 不支持 KEV_DL_IF_DETACHING,我应该使用什么 KEV_DL_xxx 事件来处理过滤器分离通知?
如果 10.8.5 不支持其中许多 KEV_DL_IF_xxx 值,那么在 10.8.5 的 iff_filter 结构中指定 iff_event_func 回调有什么好处?
是否有 API 可供 kext 调用以确定操作系统的版本?
谢谢!
【问题讨论】:
标签: macos osx-mountain-lion osx-mavericks kernel-extension