2011-01-26 2 views
0

Я застрял. Чтобы сократить длинную историю, задача состоит в том, чтобы перечислить все файлы драйверов для резервного копирования. Для некоторых водителей, как драйвер видеоадаптера, я используюРезервное копирование драйверов с помощью setupapi

SetupScanFileQueue(queueHandle, 
      SPQ_SCAN_USE_CALLBACKEX,NULL, 
      DumpDeviceDriversCallback,&count,&scanResult) 

из SetupAPI и что работает отлично, как и в DumpDeviceDriversCallback я могу получить источник файла драйвера устройства, а затем скопировать его в хранилище резервных копии один за другим.

Однако эта же функция игнорирует обратный вызов для системных драйверов. Например, для «Прямого контроллера доступа к памяти» я не могу получить список файлов. Забавно, но диспетчер устройств Windows также не может найти файлы для некоторых системных устройств.

Некоторое специальное программное обеспечение, такое как DriverMax и DoubleDriver, фактически может выполнить резервное копирование этих драйверов. Итак, это проблема, которая может быть решена.

Кто-нибудь может объяснить мне, что здесь происходит?

ответ

2

Существует множество устройств, которые устанавливаются с использованием так называемого «нет драйвера» INF. Эти INF-файлы предоставляют достаточную информацию, так что диспетчер устройств будет иметь некоторую информацию, отображаемую для устройства (таким образом, избегая их появления в категории «неизвестные устройства»), но на самом деле не устанавливайте никаких драйверов.

Эти устройства не нуждаются в драйверах, поскольку они управляются либо самими O/S, либо BIOS, либо и тем, и другим. Обычно эти устройства «устанавливаются» с использованием machine.inf, который имеет гигантский список неизвестных драйверов.

Что касается любого программного обеспечения, которое утверждает, что поддерживает драйверы для этих устройств, либо они просто копируют INF, либо они полны, потому что нет ничего, кроме INF для резервного копирования.

-scott

+0

В этих файлах INF есть очевидные ссылки на файлы. Я вижу их в INF, я могу найти их в каталоге Windows. Вот пример: http://pastebin.com/Xu3VpjnW – ReVolly

+0

Конечно, machine.inf устанавливает не только эти устройства. Обратите внимание на раздел для контроллера DMA: 105.% * PNP0200.DeviceDesc% = NO_DRV_X, * PNP0200; DMA – snoone

+0

Итак, почему файлы драйверов, очевидно, используются, но система их не «видит»? Почему DoubleDriver может создавать резервные копии этого драйвера устройства? Благодарим за отзыв. – ReVolly