在 Windows 上以编程方式安装驱动程序,驱动程序不会变为活动状态



我有一个程序,可以为特定设备安装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
}

我认为设备管理器在更新驱动程序后会重新启动设备。

相关内容