我的问题是我想手动处理插入 USB 设备时的处理方式。我不希望操作系统对插入的 USB 设备做任何事情,除了在插入时通知我它们的类型和 ID从那里我可以选择适当的驱动程序来应用它,或者使用自定义代码手动对其进行操作。
我读过这篇关于 MacOS 如何处理 USB 的文章,它说:
如果您希望您的驱动程序高于其他驱动程序,您需要做的就是为您的驱动程序所针对的设备添加键值对,从而使您的驱动程序获得非常高的分数。通常只需为您的供应商 ID/型号输入密钥就足够了。但是,我认为您可以覆盖匹配方法(设备驱动程序是用一组受限制的 C++ 编写的)来给您的驱动程序一个非常高的分数。
我还找到了这 3 个库,用于获取有关 USB 驱动器中事物的通知:
- https://github.com/tessel/node-usb
- https://github.com/MadLittleMods/node-usb-detection
- https://github.com/node-hid/node-hid
我只是不确定这些库是否会在发生任何事情之前中断操作系统对所有 USB 设备的处理(在自动选择并应用任何设备驱动程序之前)。除了我可以在上述库之一中访问设备及其类型之外,我不希望任何事情发生,但我不确定他们是否会这样做。
除了这个,我还没有太多代码:
var usb = require('usb')
usb.getDeviceList()
但我想这会在操作系统已经选择并应用默认驱动程序后解决插入的设备。我想做这样的事情:
usb.blockDefaultOSDeviceHandler()
usb.on('device:plugged_in', function(data){
if (data.type == 'keyboard') {
if (data.modelNumber == '123') {
// allow
usb.applyKeyboardDriver('abc', data.modelNumber)
usb.on('keyboard:event', logKeyboardEvent)
} else {
throw new Error('Unrecognized device')
}
}
})
我希望库会中断操作系统的所有默认行为,这样我就可以自己处理插入 USB 设备时应该做的事情。原因是因为 USB 设备可能是键盘,它会自动开始输入一些键。我想知道它是一个键盘,需要密码和我预先批准的特定驱动程序。像这样的东西。
我想在操作系统应用其默认处理规则之前访问任何新插入的 USB 设备。然后有能力编写代码来手动处理每个插入设备的操作。
如果它只能在 C 中实现,那么知道如何去做会比 node.js 更好。
- https://github.com/Arti3DPlayer/USBDeviceSwift
- https://github.com/USBGuard/usbguard
- 如何在不重新启动的情况下以编程方式阻止/解锁mac os x中的USB端口
- https://apple.stackexchange.com/questions/59764/how-to-disable-individual-usb-ports-by-script
- https://serverfault.com/questions/566687/blocking-usb-through-gpo-in-2008-r2- exclude-certain-users
- https://github.com/google/gousb
- https://github.com/IntergatedCircuits/USBDevice