我有一些基本上是 LibUSB-Win32 的驱动程序,带有一个新的 .inf 文件来描述产品/供应商 ID 和描述我的硬件的字符串。这对于 32 位 Windows 工作正常,但 64 位版本有问题;也就是说,微软明智地要求所有驱动程序都进行数字签名。
所以我的问题是:
手头有两个单独的问题:
如果您使用由另一个实体签名的现有驱动程序(无论是 Microsoft 的 WinUSB 或 libusb-win32),这将满足 KMCS。
对于驱动程序安装,您需要自己的代码签名证书来签署 .cat 文件,该证书验证您的 .inf 及其引用的文件(例如您的 .sys 文件)未被修改并且真正来自您。这不是什么问题,因为与 KMCS(阻止驱动程序加载)不同,它不会阻止安装驱动程序,而只是向用户发出警告。
代码签名证书(确保它支持 KMCS!)将花费您数百美元,具体取决于您选择的 CA。有些计划可能允许您为每次签名活动付费,而不是每年全球付费。如果您不需要发布很多版本,这对您来说可能会更便宜。
您也许可以尝试使用 libusb 的 libusb-winusb 版本,它尝试围绕 winusb 驱动程序实现大部分现有功能(这是一个签名的 MS 二进制文件,因此您不需要自己动手) 。然而,YMMV 作为 winusb 并不能 100% 映射到 libusb 中所需的所有功能。
根据我的研究,签署设备驱动程序的成本可能低至 266 美元。我的理解是只有公司才能签署驱动程序。他们不会为个人做这件事。