oddy
Гость
|
|
« : 16-07-2003 11:21 » |
|
Объясните, в чем заключается принципиальное различие WDM драйверов, написанных для Win 98 и WinXP (Отличие в структуре inf файлов и в реестре понятно). Т.е. могу я инсталлировать драйвер, написанный для Win98 в Win2000/XP? У Walter Oney написано, что не все функции, используемые в 2000, могут работать в 98-м, а также некоторые IRP. Что же касается win98, то на сколько я понимаю, так ограничений нет?
|
|
|
Записан
|
|
|
|
Артем
Опытный
Offline
Пол:
Beware the wolf in sheep's clothing.
|
|
« Ответ #1 : 16-07-2003 11:34 » |
|
Объясните, в чем заключается принципиальное различие WDM драйверов, написанных для Win 98 и WinXP (Отличие в структуре inf файлов и в реестре понятно). Т.е. могу я инсталлировать драйвер, написанный для Win98 в Win2000/XP? У Walter Oney написано, что не все функции, используемые в 2000, могут работать в 98-м, а также некоторые IRP. Что же касается win98, то на сколько я понимаю, так ограничений нет? Написанный для Win2000 драйвер инсталлировать в Win98 можно. Сам пробовал. А вот наооборот не знаю К примеру одно из отличий заключается в именах массива указателей на обработчики IRP. Т.е. понятно, что IRP_MJ_CREATE он и в африке IRP_MJ_CREATE. А вот IRP_MJ_POWER-это в Win2000, а в Win98 этот указатель имеет ,по-моему, другое имя.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #2 : 16-07-2003 11:38 » |
|
Есть некоторые отличия - точнее е скажешь - так как внутри надо смотреть и читать...
Думаю, что Славик может знать более точно.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #3 : 16-07-2003 12:07 » |
|
А я не знаю. Я win98 не люблю и под эту полуоперационку не пишу.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #4 : 16-07-2003 14:38 » |
|
Ладно копну немного...
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
maaaaaad
Гость
|
|
« Ответ #5 : 22-07-2003 00:26 » |
|
Я тоже не лублу 9x. У меня просто начинаются судорги, как только я подумаю что когда нибудь придется переносить какой нибудь навороченный wdm драйвер из XP в 98 =)) Думаю что из 98 в NT перенести легче......и вобще у меня начинается глаз дергаться, когда я долго сижу в 98-))...... насчет что перереноса из NT в 98, так об этом Walter говорит в конце каждой главы. Хотя не все. Кроме отличия в архитектуре WDM (некоторые IRP не держатся, другие держатся криво......).....отличия есть и в пераметрах некоторых функций.
|
|
|
Записан
|
|
|
|
Juggernaut
Гость
|
|
« Ответ #6 : 22-07-2003 07:06 » |
|
Во блин я попал. Мне то надо и под 98 и под 2000 дрова написать. А я даже не знаю чем отличается один тип дров от других. Тока понял что мне надо писать дрова режима ядра, которые являются PnP и WDM по совместительству.
|
|
|
Записан
|
|
|
|
oddy
Гость
|
|
« Ответ #7 : 23-07-2003 08:25 » |
|
Я попробывал перенести исходники драйверов из винь 98DDK в винь 2000DDK, установленный на 98-м (а именно - дрова BulkUsb) и скомпилить их там. Драйвер работает как в 98-м, так и в XP. Я посмотрел - исходный код не отличается, т.е. главное - под какую систему компилировать. Лучше сразу компилировать в DDk2000 - тогда ставится и там, и там.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #8 : 23-07-2003 08:39 » |
|
Скажу честно - так и не понял я нихрена - времеин было маловато. Но точно скажу.
1. Есть возможость ставить драйвера одинакового кода на 2000 , XP, NT4 SP3 и выше. 2. Есть возможность написанные драйвера ставить только тогда , когда они собраны соответствующим DDK
3. НЕ ВСЕ драйвера WDM ставились в 98 после компиляции того же кода, что и под 2000... НО при этом точного списка различий составить мне не удалось.
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
dorador
Гость
|
|
« Ответ #9 : 05-09-2003 14:17 » |
|
В разных источниках выкопал такие рекомендации: 1. для работы драйвера под Win98 его надо собрать с DDK 98 (мой опыт: драйвер, собранный с DDK 2000, работает и под Win98) 2. Драйверы, предназначенные только для Windows 2000, могут использовать не только те функции, которые объявлены в wdm.h, но и объявленные в ntddk.h. Если функция не включена в wdm.h, то ее нельзя использовать под Windows 98 и Windows Me (мой опыт: IoGetDeviceProperty, объявленная в wdm.h, не всегда ПРАВИЛЬНО работает под Win98. В частности, с DevicePropertyAddress и DevicePropertyUINumber. Впрочем, рекомендации это не противоречит).
|
|
|
Записан
|
|
|
|
dorador
Гость
|
|
« Ответ #10 : 14-01-2004 14:45 » |
|
Еще по теме: Написал небольшой WDM-драйвер устройства, собрал его с DDK2000, отладил под WinXP. Все замечательно. Попытался установить этот драйвер под Win98 - установился с восклицательным знаком в списке устройств в Системе, пишет что не может загрузить; смотрю в SoftICE диагностические сообщения - не произошло входа даже в DriverEntry. Провозился целый день и выяснил, что использовал функцию MmMapLockedPagesSpecifyCache, которая определена только в ntddk.h, а в wdm.h не определена. Я так понял, что система во время загрузки драйвера проверяет все ссылки на внешние функции и, не найдя этой функции, не стала грузить драйвер.
|
|
|
Записан
|
|
|
|
TEK
Гость
|
|
« Ответ #11 : 25-03-2004 17:59 » |
|
Пацаны а как в DDK скомпелировать драйвер? И чем SYS отличается от VxD и WDM?
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #12 : 25-03-2004 20:04 » |
|
Пацаны а как в DDK скомпелировать драйвер?
Компилятором и линковщиком! Все вместе- смотри утилитину build. И чем SYS отличается от VxD и WDM?
Sys- это расширения для имени, обычно используемое для драйверов. WDM- название для спецификации. VxD- какие то там драйвера для 9x, не оотвествуют модели WDM и здравому смыслу, т о есть это спецификация на драйвера для 9x.
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #13 : 28-03-2004 10:19 » |
|
Не какие-то а виртуальные. Не обижай
|
|
|
Записан
|
|
|
|
maaaaaad
Гость
|
|
« Ответ #14 : 28-03-2004 10:21 » |
|
Те сам давно "утилитой билд" пользовался? =)
|
|
|
Записан
|
|
|
|
SlavaI
Главный специалист
Offline
|
|
« Ответ #15 : 29-03-2004 12:29 » |
|
Те сам давно "утилитой билд" пользовался? =)
Я ей вобще не пользуюсь.
|
|
|
Записан
|
|
|
|
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии
Offline
Пол:
Бодрый птах
|
|
« Ответ #16 : 29-03-2004 13:16 » |
|
SlavaI, maaaaaad, кончайте ругаться - не забывайте про смайлики - Слав - свяжись со мной по почте - разговор есть!!
|
|
|
Записан
|
А птичку нашу прошу не обижать!!!
|
|
|
TEK
Гость
|
|
« Ответ #17 : 30-03-2004 16:54 » |
|
Про Build можно по-подобней плз!!!
|
|
|
Записан
|
|
|
|
Mayor
Специалист
Offline
|
|
« Ответ #18 : 01-04-2004 02:26 » |
|
Использование BUILD 1 Требуется задать переменные окружения(EV) : проще всего это сделать с помощью setenv.bat входящий в состав DDK ( желательно \ обязательно должна быть VS6) , просто указываешь ему путь к DDK 98/XP и тип chk\fre учти то, что EV унаследуются только процессом порожденным из оболочки где ты запустил setenv.bat 2 Запустить build из директории с твоим "проектом" 3 Особенности проекта : в каталоге проекта должен находиться makefile содержания !INCLUDE $(NTMAKEENV)\makefile.def и sources файл вида : TARGETNAME= пишешь имя драйвера .sys добавится автоматически TARGETTYPE=DRIVER (указывает тип программы который надо слинковать ) TARGETPATH= пишешь каталог где создавать бинарник C_DEFINES= параметры которые передадут компилятору возможно потребуется /TC , чтобы файлы компилировались как .с файлы LINKER_FLAGS= соответсвенно линкеру SOURCES= список файлов твоего проекта ( к сожелению я не научился включать в проект С++ файлы ) Более подробная информация на http://www.wd-3.com/archive/WinBuild.htm
|
|
|
Записан
|
1n c0de we trust
|
|
|
|