Проблема разработки 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 ответа
Итак, подведем итог всему:
- Вам нужно собрать для архитектуры corect (x64 для процессоров Intel/AMD).
- Вы ДОЛЖНЫ подписать своего водителя. Вы должны сделать это даже в тестовом режиме с самозаверяющим сертификатом. Альтернативы нет.
- Вы ДОЛЖНЫ использовать файл.inf для установки. Если драйвер не pnp, то вам не нужен файл.inf, но очень маловероятно, что драйвер не pnp. В этом случае вам необходимо вручную создать связанную службу для драйвера в диспетчере управления службами с помощью sc.exe или программно с помощью API SCM. Если драйвер isw pnp (скорее всего), вы должны установить его через файл.inf (с помощью devcon.exe или другим способом). Кроме того, его установка - это не то же самое, что его загрузка. Для этого должно присутствовать соответствующее оборудование или вы должны перечислить его в программном обеспечении (например, с помощью devcon.exe).
Две вещи:
Вы упоминаете как x64 (также называемый x86-64, AMD64 или EMT64), так и IA64 (Itanium). Вы понимаете, что это две совершенно разные архитектуры, верно? У вас есть система Itanium? Если нет, вам не следует ничего компилировать с использованием среды сборки IA-64. Он не будет работать на стандартном ПК (32 или 64).
В 64-разрядной версии драйвер должен иметь цифровую подпись для производственного использования. Вам нужно будет получить сертификат Authenticode от Verisign или аналогичный. В целях тестирования вы можете обойти проверку подписи, нажав F8 во время загрузки. Вы также можете подписать с тестовым сертификатом.
Я не написал драйвер, но на основании того, что я слышал от коллег: подписан ли у вас цифровой драйвер? Если нет, поищите информацию о загрузке неподписанных драйверов в 64-битных системах.