Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Ndis дРАЙВЕР пОД 9Х

5.9K
18 марта 2004 года
Anry
15 / / 01.03.2004
Привет Коллеги!
есть проблема: имею нормально функционирующий драйвер (NDIS, Intermediate), который прекрасно инсталлится под 2000 и далее, но под 9х никак не могу его запустить (я в курсе, что под 9х нет секций в INF для сервисов, однако зашел в тупик - протокольная часть драйвера ещё как-то инсталлится, а вот с минипортом - никак).
ПОМОГИТЕ... пожалуйста - чего делать-то надо с этими INFами:???:
6.0K
22 марта 2004 года
TarasCo
28 / / 10.03.2004
Цитата:
однако зашел в тупик - протокольная часть драйвера ещё как-то инсталлится, а вот с минипортом - никак).


Не очень понятно - что имел ввиду? У драйвера запускается DriverEntry?
А вообще, нужно учесть, что драйвера от NT и w9x бинарно не совместимы - нужно перекомпилировать драйвер под каждую ОС.

5.9K
22 марта 2004 года
Anry
15 / / 01.03.2004
Цитата:
Originally posted by TarasCo

Не очень понятно - что имел ввиду? У драйвера запускается DriverEntry?
А вообще, нужно учесть, что драйвера от NT и w9x бинарно не совместимы - нужно перекомпилировать драйвер под каждую ОС.


Ситуацая такова: на сколько я знаю под 9х необходимо совершенно другие ИНФы составлять, и что интересно, для Intermediate драйвера нужен только один ИНФ (в противовес 2 под 2000+). Кстати пока всё только запутывается - я получил один ответ из ньюсгруппы Microsoft по этому поводу - дык там мужик вообще говорит о том, что после прохождения инсталляции надо минипорт вручную от TCPIP оторвать (зачем?). Что касается кода, то в MSDN говорится коротко и ясно: все клёво совпадает для NDIS под 9х и 2000 (если не пользовать нововведения для 2000 - я и не использую ничего лишнего - только что компилятор может выдавать специфичный код для 2000?)

6.0K
24 марта 2004 года
TarasCo
28 / / 10.03.2004
Цитата:

Ситуацая такова: на сколько я знаю под 9х необходимо совершенно другие ИНФы составлять


С небольшими отличиями :). На самом деле, я никогда не портировал драйвера под W9x, но особых различий не видно

Цитата:

и что интересно, для Intermediate драйвера нужен только один ИНФ (в противовес 2 под 2000+).


Ну это заблуждение видимо основанное на примере из DDK. Там два inf файла по следующей причине: один для службы (пустышка, нужно тока для того чтобы появлялась служба в настройках сетевого соединения), второй непосредственно для IM драйвера. Можно было бы обойтись и одним инфом - просто установка станет весьма сложным процессом (либо понадобится самопальный инсталлятор)

Цитата:

Что касается кода, то в MSDN говорится коротко и ясно: все клёво совпадает для NDIS под 9х и 2000 (если не пользовать нововведения для 2000 - я и не использую ничего лишнего - только что компилятор может выдавать специфичный код для 2000?)


MSDN имеет ввиду портабильность на уровне исходников. Повторяю, драйвера для W9x и NT бинарно не совместимы. Нужно отдельно компилировать под обе системы.

5.9K
24 марта 2004 года
Anry
15 / / 01.03.2004
Цитата:
Originally posted by TarasCo

С небольшими отличиями :). На самом деле, я никогда не портировал драйвера под W9x, но особых различий не видно


Ну это заблуждение видимо основанное на примере из DDK. Там два inf файла по следующей причине: один для службы (пустышка, нужно тока для того чтобы появлялась служба в настройках сетевого соединения), второй непосредственно для IM драйвера. Можно было бы обойтись и одним инфом - просто установка станет весьма сложным процессом (либо понадобится самопальный инсталлятор)


MSDN имеет ввиду портабильность на уровне исходников. Повторяю, драйвера для W9x и NT бинарно не совместимы. Нужно отдельно компилировать под обе системы.


Вот что я получил из Microsoft (ещё не пробовал, но выглядит сурово):

BUILDING:

This example uses the Windows 2000 DDK for all header files and libraries. But it uses the Windows 98 DDK BUILD utility.

<Win2Kddk>\BIN\SETENV <Win2KddkPath> Checked

To build the project, execute:

BUILD –cZ

This will create the binary and symbol file in <projectpath>\objchk\i386.

INSTALLING:

1) Start with a clean install of Windows 98 SE.

2) In Network Properties, remove the dialup adapter and the instance of TCP/IP that is bound to it (this will not be necessary when the completely clean installation is done).

3) Copy the .INF file from the project folder and the PASSTHRU.SYS binary to a floppy and insert the floppy in the test machine.

4) In Network Properties, select Add and then Add Protocol. Select “Have Disk” and point to the floppy drive. Select PASSTHRU and press OK. The installation process may complain that PASSMINI is required to be installed and that he INF file does not contain information about your hardware. If this occurs, cancel all the way out and launch Network Properties again. The second time through the hardware database will be built and the installation will work. This issue will be ironed out.

5) DO NOT reboot the machine when it asks you to do so. You will notice that the bindings are quite messed up. A 16-bit co-installer based off of the MyNDI (Network Device Installer) example will resolve this in a future milestone. Eventually, the bindings will be in this order:

Network Adapter
PASSTHRU Protocol
PASSTHRU Miniport
MS TCP/IP
Client for Microsoft Networks

6) These instructions create the proper bindings by editing them in RegEdit. A dump of my registry follows this discussion.

7) Run REGEDIT and expand the HKLM\Enum tree. Find the entry for your network adapter driver. It will be under ISAPNP, PCI or Root. Expand each entry until you find a device that is Class=”Net.” When you find the entry, expand one layer down to expose the Bindings key. There should be two entries: MSTCP\nnnn and PASSTHRU\nnnn. Delete the MSTCP\nnnn entry, but keep track of its number (nnnn). PASSTHRU\nnnn should be PASSTHRU\0000, for these instructions.

8) The HKLM\Enum\Network tree contains the remainer of the bindings. Make sure that PASSTHRU\0000’s bindings only point to PASSMINI\0000. And PASSMINI\0000’s binding should only point to MSTCP\nnnn, where nnnn is the same number that was originally bound to the adapter in the step above.

9) A devnode for the internal binding between PASSTHRU and PASSMINI is also necessary under HKLM\Enum\Root\NDIS\PASSTHRU. Verify that it is there. Otherwise NdisIMInitializeDeviceInstanceEx() in your Protocol Initialize section will not work. Furthermore, the instance number for HKLM\PASSMINI must be 0000. This value is hardcoded as MiniportInstanceString in the Protocol Initialize section. This will be stashed in the registry during the installation process when that part of the project is complete.

Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог