我正在研究一种安装驱动程序的方法。 由于这个工作必须在多个平台上进行,因此我需要对devcon和dpinst进行脱壳,以便在需要时执行驱动程序的安装/更新/删除工作。 在testing时,我遇到了devcon的问题。 为了隔离,我写了一个小应用程序来执行devcon在更新中的操作, 参见这里使用WinDDK中的devcon源文件。 从安装API(实际上是Newdev.dll的一部分)UpdateDriverForPlugAndplayDevices()有一些问题, 请参阅此处 。 源代码在这里:
#include <iostream> #include <Windows.h> #include <newdev.h> int main(int argc,char** argv) { // Go through the same steps as does dev con for this update crap char infFile[MAX_PATH]; if(3 > argc) { std::cerr << "an INF and HW ID must be specified" << std::endl; return 1; } DWORD result(GetFullPathName(argv[1],MAX_PATH,infFile,NULL)); if((result >= MAX_PATH) || (0 == result)) { std::cerr << "path is too long for buffer" << std::endl; return 1; } if(GetFileAttributes(infFile) == -1) { std::cerr << "file doesn't exist" << std::endl; return 1; } BOOL reboot(FALSE); if(!UpdateDriverForPlugAndplayDevices(NULL,argv[2],INSTALLFLAG_FORCE,&reboot)) { std::cerr << "Failed to install the driver. Code: " << GetLastError() << std::endl; return 2; } if(reboot) { std::cout << "A reboot is needed to complete driver install" << std::endl; } return 0; }
当UpdateDriverForPlugAndplayDevices()返回false时,程序失败。 然后打印由GetLastError()返回的错误代码,以便我知道出了什么问题。 返回的错误代码:259.根据这个资源说这是ERROR_NO_MORE_ITEMS。 根据UpdateDriverForPlugAndplayDevices()的链接,当函数find与HardwareId值匹配的值时,此函数返回此错误代码,但是指定的驱动程序与当前驱动程序不匹配,且调用程序未指定INSTALLFLAG_FORCE标志“。 你会从我的代码中注意到我确实指定了这个标志。
我不知道该从哪里出发。 有人可以从这个代码识别什么是我失踪? 这只是简单的“感觉”,但我完全错过了。
谢谢你,安迪
SetupUninstallOEMInf何时会返回ERROR_NO_MORE_ITEMS?
SetupDiGetDeviceRegistryProperty:“传递给系统调用的数据区域太小”错误
SetupDiGetClassDevs是否与设备实例ID一起使用?
SetupDiCallClassInstaller的等价API来卸载我的调制解调器
更正Windows API以查找CurrentControlSet Control MediaProperties?
以编程方式检测错误或丢失的驱动程序
可以使用SetupAPI检索.inf文件中一行的关键字吗?
Windows XP SetupAPI拒绝从服务安装非WHQL签名的.INFs
给定设备path,如何获得USB_DEVICE_DESCRIPTOR
枚举为特定的PnP枚举器获取的设备信息集中的接口
这个问题似乎不是与代码,但与INF文件。 有趣的是,该函数的文档说,使用该标志将强制安装,但没有当INF文件没有“列出”模型部分中的任何设备类时。 这是我最终能够安装的。 我将正确的设备类添加到INF中的模型部分。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。