Проблема разработки DDK/WDM... драйвер не загружается на платформе Windows x64

Я новичок в области разработки драйверов DDK/WDM. У меня есть задача, которая включает портирование драйвера виртуального устройства с x86 на x64 (intel). Я получил исходный код, немного его модифицировал и успешно скомпилировал с помощью DDK (среды сборки). Но когда я попытался загрузить его на компьютер с Windows Server ia64, он не захотел загружаться. Затем я попробовал несколько простых примеров драйверов устройств из

- http://www.codeproject.com/KB/system/driverdev.aspx (я поставил '-', чтобы иметь возможность разместить гиперссылку) и из других ссылок, но все еще та же проблема.

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

При сборке я использую параметры командной строки "-cefw", как это было предложено.

У меня нет ассоциированного файла *.inf, но я копирую его в system32/drivers и использую WinObj, чтобы проверить, загружен ли следующий перезапуск в память.

Я также пробовал эту программу ( http://www.codeproject.com/KB/system/tdriver.aspx) загрузить драйвер в память, но у меня все равно не получилось.

Пожалуйста, помогите мне... Я застрял на этом, и мой срок уже прошел. Я чувствую, что я тут с ума схожу, пытаясь понять, что я делаю не так.

3 ответа

Итак, подведем итог всему:

  1. Вам нужно собрать для архитектуры corect (x64 для процессоров Intel/AMD).
  2. Вы ДОЛЖНЫ подписать своего водителя. Вы должны сделать это даже в тестовом режиме с самозаверяющим сертификатом. Альтернативы нет.
  3. Вы ДОЛЖНЫ использовать файл.inf для установки. Если драйвер не pnp, то вам не нужен файл.inf, но очень маловероятно, что драйвер не pnp. В этом случае вам необходимо вручную создать связанную службу для драйвера в диспетчере управления службами с помощью sc.exe или программно с помощью API SCM. Если драйвер isw pnp (скорее всего), вы должны установить его через файл.inf (с помощью devcon.exe или другим способом). Кроме того, его установка - это не то же самое, что его загрузка. Для этого должно присутствовать соответствующее оборудование или вы должны перечислить его в программном обеспечении (например, с помощью devcon.exe).

Две вещи:

  1. Вы упоминаете как x64 (также называемый x86-64, AMD64 или EMT64), так и IA64 (Itanium). Вы понимаете, что это две совершенно разные архитектуры, верно? У вас есть система Itanium? Если нет, вам не следует ничего компилировать с использованием среды сборки IA-64. Он не будет работать на стандартном ПК (32 или 64).

  2. В 64-разрядной версии драйвер должен иметь цифровую подпись для производственного использования. Вам нужно будет получить сертификат Authenticode от Verisign или аналогичный. В целях тестирования вы можете обойти проверку подписи, нажав F8 во время загрузки. Вы также можете подписать с тестовым сертификатом.

    http://www.microsoft.com/whdc/winlogo/drvsign/drvsign.mspx

Я не написал драйвер, но на основании того, что я слышал от коллег: подписан ли у вас цифровой драйвер? Если нет, поищите информацию о загрузке неподписанных драйверов в 64-битных системах.

Другие вопросы по тегам