我有一个签名的驱动程序,我需要使用 C#(针对 Vista 和 7 64 位)以编程方式为特定的 USB 设备安装它。
我发现在 DIFx API中使用DriverPackagePreinstall函数非常容易(这里是如何 P/Invoke 它):通过在设备插入 USB 之前调用它,Windows 能够将驱动程序与设备相关联。检测到。
当设备在未预安装驱动程序的情况下插入 USB 时会出现问题。可能会为该设备安装另一个驱动程序(在一台测试 PC 中,我发现已安装通用驱动程序,并且该设备列在设备管理器的“其他设备”下)。
为了解决这个问题,到目前为止,我已经能够通过使用SetupDiGetClassDevs、SetupDiEnumDeviceInfo和SetupDiGetDeviceRegistryProperty函数来检测设备是否存在,以便通过设备的 VID 和 PID(供应商和产品标识符)来识别设备。现在我有了设备的SP_DEVINFO_DATA,我想我必须调用InstallSelectedDriver函数,不是吗?如果是,您能否告诉我如何 P/Invoke 该功能(我在 pinvoke.net 上找不到它)以及如何通过指定我要为我的设备安装的驱动程序来使用它(假设我有 INF 路径) ?