我有一个程序,可以为特定设备安装USB驱动程序,然后更新设备固件。我使用SetupCopyOEMInf()来安装驱动程序,但是,除非我重新启动系统,否则这个函数似乎不会使驱动程序处于活动状态。
也就是说,安装正常,SetupCopyOEMInf()返回正常,但除非我重新启动Windows,否则设备在设备管理器中仍保持"未知"状态。然而,当我手动安装驱动程序时,系统会识别出一切正常,设备很快就会绑定到驱动程序。
除了SetupCopyOEMInf()之外,我还应该做些什么来将驱动程序绑定到设备上吗?
谢谢。
尝试使用devcon安装驱动程序,源代码在WDK中可用,使用devcon dp_add mydriver.inf
。如果这有效的话,你可以在devcon中浏览源代码,了解如何正确地动态安装驱动程序,devcon还使用SetupCopyOEMInf,所以如果它有效,你可以将其与代码进行比较,以找出区别,这里有一个片段,以防它现在对你有帮助:
TCHAR SourceInfFileName[MAX_PATH]; // Full path name
TCHAR DestinationInfFileName[MAX_PATH];
PTSTR DestinationInfFileNameComponent = NULL;
if (!SetupCopyOEMInf(SourceInfFileName,
NULL,
SPOST_PATH,
0,
DestinationInfFileName,
ARRAYSIZE(DestinationInfFileName),
NULL,
&DestinationInfFileNameComponent)) {
// Handle Error
}
我认为设备管理器在更新驱动程序后会重新启动设备。