使用setupapi进行驱动程序备份

时间:2011-01-26 13:35:16

标签: c++ windows backup device drivers

我被困住了。简而言之,任务是枚举所有驱动程序文件以进行备份。对于某些驱动程序,如显示适配器驱动程序,我使用

SetupScanFileQueue(queueHandle,
             SPQ_SCAN_USE_CALLBACKEX,NULL,
             DumpDeviceDriversCallback,&count,&scanResult)
来自setupapi的

,并且在DumpDeviceDriversCallback中运行正常我可以获取设备驱动程序文件的源,然后逐个将其复制到备份位置。

但是,相同的函数会忽略系统驱动程序的回调。例如,对于“直接内存访问控制器”,我无法获取文件列表。有趣的是,但是Windows设备管理器也找不到某些系统设备的任何文件。

像DriverMax和DoubleDriver这样的特殊软件实际上可以备份这些驱动程序。所以,这是可以解决的问题。

任何人都可以向我解释这里发生了什么?

1 个答案:

答案 0 :(得分:2)

使用所谓的“无驱动程序”INF安装了许多设备。这些INF提供了足够的信息,以便设备管理器将为设备显示一些信息(从而避免它们出现在“未知设备”类别中),但实际上并未安装任何驱动程序。

这些设备不需要驱动程序,因为它们由O / S本身,BIOS或两者管理。通常这些设备都是使用machine.inf“安装”的,因为machine.inf有一个已知的没有驱动程序设备的巨大列表。

对于声称支持这些设备的驱动程序的任何软件,要么他们只是复制INF,要么他们已经充满了它,因为除了要备份的INF之外什么都没有。

-Scott