Необходимо портировать под Win 98 Ndis miniport driver, работающий под платформами >= Windows NT SP4. К сожалению, такие задачи ещё встречаются .
Как я выяснил NDIS 5.0 входит в состав Windows 98. Для сборки драйвера я поставил DDK 98 и попробовал скомпилить — сразу получил кучу ошибок на тему NDIS. При этом, в DDK Help, поставляемом с DDK 98, написано, что за информацией по NDIS обращайтесь к Win2000 DDK. В связи с этим возник вопрос: как правильно собирать Ndis miniport driver для Win 98 — из под DDK 98 или из под Win2000 DDK?
По поводу различий между NDIS в 98 и 2000 я нашёл только одну статейку (http://support.microsoft.com/kb/198582), там перечислено не так много различий, но при сборке из под DDK 98 у меня повылазило куча undefine-ов, не упомянутых в этой статье.
Знающие Люди, посоветуйте, пожалуйста, как правильно осуществлять такую сборку! Спасибо!
Здравствуйте, sergmann, Вы писали:
S>По поводу различий между NDIS в 98 и 2000 я нашёл только одну статейку (http://support.microsoft.com/kb/198582), там перечислено не так много различий, но при сборке из под DDK 98 у меня повылазило куча undefine-ов, не упомянутых в этой статье.
А попробовать собрать стандартный драйвер под DDK 2000, и подсунуть его под 98? В отношении WDM-драйверов тоже везде написано, что они отличаются, и надо обязательно делать разные бинарники под 98 и 2k/XP, но грамотно сделанный и собранный драйвер отлично работает и там, и там.
NDIS-драйверы под 98 грузить не пробовал, поэтому только предполагаю.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>А попробовать собрать стандартный драйвер под DDK 2000, и подсунуть его под 98? В отношении WDM-драйверов тоже везде написано, что они отличаются, и надо обязательно делать разные бинарники под 98 и 2k/XP, но грамотно сделанный и собранный драйвер отлично работает и там, и там.
Сейчас бьюсь над этой задачей ... пытаюсь установить под 98 простейший Miniport, собранный для W2k. Пока не удаётся установить драйвер при помощи inf — файла (у меня был inf-файл для W2k, я его немного поправил), система пишет — "В указанной папке сведения об оборудовании отсутствуют". Пока не могу понять причину такого сообщения.
Здравствуйте, Евгений Музыченко, Вы писали:
ЕМ>Здравствуйте, sergmann, Вы писали:
S>>Пока не удаётся установить драйвер при помощи inf — файла
ЕМ>А вот методы установки там, как помнится, кардинально различны. Тут надо почитать DDK.
Уйму времени сегодня убил, пытаясь проинсталлировать простейший Miniport при помощи inf-файла, всё перепробовал — пишет ошибку и всё ... в итоге оказалось, что загвоздка была в регистре букв (имя драйвера). Меня осенило, когда увидел, что все имена драйверов в ..\system32\drivers в верхнем регистре ... сказывается отсутствие какого-либо опыта под Win9x. Теперь не отрабатывает DriverEntry, завершается с ошибкой — "функционал не поддерживается". Завтра буду разбираться, похоже, что Ndis5 там просто так не работает (на сайте майкрософт указано, что Ndis5 включена в Windows98), придётся разбираться как правильно заставить работать Ndis5 в Win98.
А как в Windows 98 выполнить инсталляцию виртуального минипорта. В 2000 в inf файле указываем Characteristics = 0x1 (NCF_VIRTUAL). В 98-ом DDk в разделе inf нет такого параметра, поэтому, видимо, система отказывается грузить зарегистрированный NDIS miniport драйвер.
Если вдруг кому-то понадобится ответ на вопрос темы, то информирую о своих результатах.
В результате длительных экспериментов мне удалось портировать урезанную (выброшены некоторые неразрешённые ссылки) версию сэмпла NETVMINI (шаблон виртуального NDIS минипорта) из DDK_Server_2003_SP1. Работоспособность проверялась пока только в Windows 98SE.
Для сборки я использовал:
Windows 2000 DDK;
Visual Studio 6.0.
Сборка драйвера осуществляется из Windows ME build environment (входит в DDK 2000).
Инсталляционный Inf-файл почти полностью аналогичен inf-у из примера VPacket, включенного в DDK 98.
Для сборки необходимо подключить wdm.lib и ndis.lib из DDK 2000.
Для отладки можно использовать SoftIce из Driver Studio 2.7 (не выше).