в файле linkcmd.rsp размещены настройки линкера. Полный список выглядит так:
>-MACHINE:IX86
>-STACK:32768,4096
>-OPT:REF
>-OPT:ICF
>-INCREMENTAL:NO
>-FORCE:MULTIPLE
>-RELEASE
>-DEFAULTLIB:wdm.lib
>-DRIVER
>-ALIGN:0x20
>-SUBSYSTEM:NATIVE
>-BASE:0x10000
>-ENTRY:DriverEntry@8
>-OUT:disk1\asmdrv.sys
>asmdrv.obj
В результате сборки мы получаем файлAsmDrv.sys в подкаталоге Disk1.
Часть 6. Как правильно установить драйвер.
Чтобы установить драйвер в системе, нам потребуется специальный конфигурационный файл, хранящий некоторые дополнительные сведения о драйвере, важные для системы.
Это так называемый inf-файл.
Опять-таки, к счастью для вас, я уже написал этот файл – asmdrv.inf. Вы можете открыть его для просмотра и изучить.
Файл находится в подкаталоге Disk1 проекта.
Ну что же? – Пробуем установиться.
Открываем Панель управления, запускаем Мастер установки оборудования и указываем ему путь к файлу asmdrv.inf в режиме ручного выбора.
Завершаем установку.
Windows 98 на этом месте может попросить перезагрузки. Не отказывайте ей :)
Windows 2000/XP запускает драйвер сразу.
Вы можете проконтролировать установку, убедившись в наличии устройства "Простейший WDM драйвер на Ассемблере" в списке менеджера устройств.
Поздравляю, если вы всё сделали правильно, наш драйвер – о, чудо! – работает.
Часть 7. Тестовая программа.
Проект тестовой программы расположен в подкаталоге TestApp.
Откройте его в Delphi и перекомпилируйте.
В результате вы получите файл AsmDrvTest.exe, который нужно будет запустить.
В принципе, это одна из самых простых программ в мире. Она занимается отправкой драйверу AsmDrv.sys запросов IOCTL_USER_REQUEST_1 и _2по требованию пользователя, передавая драйверу строку символов.
Работу этой программы рекомендуется изучить самостоятельно.
Одновременно с тестовой программой используйте утилиту DbgView для просмотра отладочного вывода.
Мы убедились ещё раз, что не боги горшки обжигают.
Следует ли писать драйверы WDM на ассемблере? –
Зависит от желания и возможностей.
Однако вопрос оставлю открытым.
В любом случае, мне интересно было бы узнать, использовал ли кто-нибудь этот пример для создания своего драйвера? Пишите.