| 
							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 
						 | 
					 
				 
			 |  
		 
	 | 
	 |