如何私下将Windows kmdf驱动程序分发给客户端

时间:2018-06-22 13:02:34

标签: windows driver kmdf

我对Windows驱动程序开发非常陌生。 我已经编写了KMDF Windows驱动程序,并且可以使用VS deploy将其部署到目标计算机上进行测试。一切正常,现在我想将此驱动程序与使用该驱动程序的应用程序一起提供。

问题来了……我在Google上找不到任何可以告诉我们如何分发KMDF驱动程序的信息(例如制作安装程序)。该驱动程序是上层过滤器驱动程序,仅对于我的应用程序是必需的,因此不应将其发布到Windows Update。

我的问题是如何制作类似于安装程序的工具来分发此驱动程序?感谢您的任何建议或指导。


编辑1 这是假设备驱动程序(意味着没有物理设备可以驱动)

1 个答案:

答案 0 :(得分:3)

通常,不会通过Windows Update推出用于软件的设备驱动程序。像Intel,AMD,NVIDIA这样的供应商也有例外,但这是因为这些公司的名称以及它们的受欢迎程度/使用程度(它们将与Microsoft合作)。您不仅可以通过Windows Update推出驱动程序。

您将需要数字签名来对您的内核模式软件进行签名,只要您将其分发到使用现代版本Windows x64的计算机上(出于记录,即使Windows Vista x64也会强制执行)此要求)。到目前为止,此要求目前不会出现在Windows的x86版本上,但是,总的来说,不签署内核模式软件是不道德的。

从Windows 10的较早发布的特定补丁开始,要求就从拥有可以对内核模式二进制文件进行签名的普通数字签名变为必须是EV数字签名;要获得用于内核模式软件签名的EV数字签名,毫无疑问,您需要合法注册为公司(并且可能还需要公司银行帐户)。

有关此的更多信息,请参见以下内容。

https://blogs.msdn.microsoft.com/windows_hardware_certification/2015/04/01/driver-signing-changes-in-windows-10/

但是,这里有个问题...对于使用安全启动的系统(新的现代系统现在倾向于默认启用它,这是一项安全功能),您将需要对内核模式软件进行共同签名由微软自己。这将要求您通过在线门户网站上载与Microsoft共享内核模式软件,但是在进入该阶段之前,您仍然需要EV数字签名。

有关Microsoft共同签名要求(取决于环境)的更多信息,请参见以下内容:

https://www.osr.com/blog/2017/07/06/attestation-signing-mystery/

注意:请不要尝试提出一些想法来规避此问题(例如,在客户端系统上启用“测试模式”,然后为驱动程序使用“测试”证书,或者在依赖该系统的系统上禁用安全启动...)这种变通方法的代价是降低系统的安全性,因此绝对不能在现实世界中用作解决此问题的方法。


要实际安装设备驱动程序,可以通过Win32 API以编程方式使用.INF文件,然后使用StartService例程以.INF开始安装服务。另请参阅:https://msdn.microsoft.com/en-us/library/aa376957%28v=vs.85%29.aspx

或者,您可以使用CreateService例程自己注册服务,然后使用StartService例程启动该服务(或重新启动并根据创建服务的标志在启动时加载它)。

请记住,有时使用Service Manager,您会错过某些驱动程序类型(例如Filesystem Minifilter)注册时的重要事项,并且需要手动处理,否则将无法正常工作。检查.INF并确保在使用Service Manager进行安装时(如果您决定不依赖于.INF的话)需要完成的所有必要操作。


希望这可以帮助您到达需要的地方。