Резервное копирование драйверов с помощью setupapi - PullRequest
0 голосов
/ 26 января 2011

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

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

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

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

Некоторые специальные программы, такие как DriverMax и DoubleDriver, на самом деле МОГУТ сделать резервную копию этого драйвера.Итак, эта проблема может быть решена.

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

1 Ответ

2 голосов
/ 26 января 2011

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

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

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

-Скотт

...