【发布时间】:2014-11-17 10:47:06
【问题描述】:
我有一个程序可以为特定设备安装 USB 驱动程序,然后更新设备固件。我使用 SetupCopyOEMInf() 来安装驱动程序,但是,除非我重新启动系统,否则此功能似乎不会使驱动程序处于活动状态。
即安装正常,SetupCopyOEMInf() 返回正常,但设备在设备管理器中仍保持“未知”状态,除非我重新启动 Windows。但是,当我手动安装驱动程序时,系统会识别一切正常,并且设备很快就会绑定到驱动程序。
除了 SetupCopyOEMInf() 之外,我还应该做些什么来将驱动程序绑定到设备上吗?
谢谢。
【问题讨论】:
-
我不确定,但我相信这是预期的行为:该函数安装驱动程序但不扫描它适用的设备,通常用于为设备安装驱动程序尚不存在。也许改用DiInstallDriver? “DiInstallDriver 功能在驱动程序存储中预安装驱动程序,然后在驱动程序支持的系统中存在的设备上安装驱动程序。”
-
@HarryJohnston 感谢您为我指明了正确的方向。 DiInstallDriver 似乎相当于 SetupCopyOEMInf + UpdateDriverForPlugAndPlayDevices 并且仅限于 32 位系统,但工作正常。
-
根据文档,至少,这些功能都不限于32位系统;但是,在 64 位系统上,其中一些只能由 64 位应用程序调用。
-
@HarryJohnston 不幸的是,它们受到限制(SetupCopyOEMInf 除外),请参阅有关 DiInstallDriver 的 ERROR_IN_WOW64 的注释
-
ERROR_IN_WOW64 表示您正在尝试从 64 位系统上的 32 位应用程序调用该函数。如果您使用 64 位应用程序,问题就会消失。
标签: windows installation usb device-driver