我需要禁用对某些设备的访问(例如,内置的 FaceTime 摄像头),并且一直试图通过提供一个比当前附加的探测分数更高的简单 kext 来做到这一点。
我的 kext 匹配并作为 IOProviderClassIOUSBInterface
和 IOProviderClass连接到相机IOUSBDevice
,但所有原始 kext 仍然连接到它。这是它在 IORegistryExplorer 中的样子:
FaceTime HD Camera (Built-in)@14700000 # USB device
+-- FaceTime HD Camera (Built-in)@0 # USB interface
| +-- FaceTimeDisabler # my kext matching as IOUSBInterface
| +-- IOUSBInterfaceUserClientV3 # original
+-- IOUSBDeviceUserClientV2 # original
+-- IOUSBInterface@1 # original
| +-- IOUSBInterfaceUserClientV3 # original
+-- IOUSBInterface@2 # original
+-- FaceTimeDisabler # my kext matching as IOUSBDevice
我认为设备和驱动程序匹配的重点是选择一个单独的 kext 附加到设备上,所以我希望如果我的 kext 与最高探测分数匹配,它将获得设备的独占控制权,但这显然不是案子。
我的问题是:
- 如何确保我的 kext 获得对设备的独占访问权限?
- 如果有更好的方法来禁用对设备的访问,那是什么?