Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Совместимость wdm драйверов для WinXP и Win98  (Прочитано 19221 раз)
0 Пользователей и 1 Гость смотрят эту тему.
oddy
Гость
« : 16-07-2003 11:21 » 

Объясните, в чем заключается принципиальное различие WDM драйверов, написанных для Win 98  и  WinXP (Отличие в структуре inf файлов и в реестре понятно). Т.е. могу я инсталлировать драйвер, написанный для Win98 в Win2000/XP?
У Walter Oney написано, что не все функции, используемые в 2000, могут работать в 98-м, а также некоторые IRP. Что же касается win98, то на сколько я понимаю, так ограничений нет?
Записан
Артем
Опытный

nz
Offline Offline
Пол: Мужской
Beware the wolf in sheep's clothing.


« Ответ #1 : 16-07-2003 11:34 » 

Цитата: oddy
Объясните, в чем заключается принципиальное различие 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 этот указатель имеет ,по-моему, другое имя.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #2 : 16-07-2003 11:38 » 

Есть некоторые отличия - точнее е скажешь - так как внутри надо смотреть и читать...

Думаю, что Славик может знать более точно.
Записан

А птичку нашу прошу не обижать!!!
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #3 : 16-07-2003 12:07 » 

А я не знаю. Я win98 не люблю и под эту полуоперационку не пишу.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline 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 - тогда ставится и там, и там.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline 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
Главный специалист

ru
Offline 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
Главный специалист

ru
Offline Offline

« Ответ #15 : 29-03-2004 12:29 » 

Цитата

Те сам давно "утилитой билд" пользовался? =)


Я ей вобще не пользуюсь.
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #16 : 29-03-2004 13:16 » 

SlavaI, maaaaaad, кончайте ругаться - не забывайте про смайлики - Слав - свяжись со мной по почте - разговор есть!!
Записан

А птичку нашу прошу не обижать!!!
TEK
Гость
« Ответ #17 : 30-03-2004 16:54 » 

Про Build можно по-подобней плз!!!
Записан
Mayor
Специалист

ru
Offline 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
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines