| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | «  : 16-05-2012 15:05 »  |  | 
 
 Добрый день! Только начинаю разбираться с написанием драйвером и есть задание написать драйвер VirtualSerial COM <=> Ethernet. Планируется написать UMDF драйвер исходя из исходника в DDK \src\serial\VirtualSerial. Вторым я хочу взять для примера \src\general\echo\umdfSocketEcho\Driver.  Хотелось бы узнать реально ли это из этого исходника и небольшой план действий?  |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #1 : 16-05-2012 20:50 »  |  | 
 
 про второй пример не знаю, смотреть надо... скорее да, чем нет)план - книги Соломон-руссинович, Вальтер Они, Пенни Орвик.
 разобраться с компилятором-линкером.
 разобраться с отладчиком и методами отладки.
 разобраться с примерами по отдельности чтобы знать что делает каждая строчка и каждая переменная.
 попробовать маленько их помодифицировать.
 потом научится отправлять собственные пакеты.
 и только потом пытаться их скрестить.
 
 Ethernet - не совсем понял, что имеется в виду.... просто сетевой сокет?
 |  
						| 
								|  |  
								| « Последнее редактирование: 16-05-2012 20:54 от Ochkarik » |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | « Ответ #2 : 17-05-2012 06:36 »  |  | 
 
 С компилятором и отладчиком разобрался , делаю всё через студию. А читаю Пенни Орвис Гай Смит. Но нужно ещё читать и читать. Нужно чтоб все данные входящие в COM отправлялись по TCP/IP и так же обратно. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #3 : 17-05-2012 10:42 »  |  | 
 
 настоятельно рекомендую полистать руссиновича для дзен и просветления) если с ядром впервые. |  
						| 
								|  |  
								| « Последнее редактирование: 17-05-2012 10:44 от Ochkarik » |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | « Ответ #4 :  25-05-2012 17:45 »   |  | 
 
 Привет ещё раз! По немного читаю л-ру и разбираюсь с кодом, даже получается) Отработал пакет с возвратом параметров COM порта. Вроде ничего сложного, но это наверное из-за того что UMDF. Но возник вопрос. Почему я не могу мониторить свой виртуальный порт прогой PortMon (Руссиновича), пишет что порт занят (конкретней не могу сказать, всё на работе)?   |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #5 : 25-05-2012 22:28 »  |  | 
 
 ну.. надо конкретней) и с кодом... у меня DDK только на работе) даже пример не посмотреть) |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | « Ответ #6 : 28-05-2012 06:59 »  |  | 
 
 Ну код это в принципе пример DDK \src\serial\VirtualSerial, если будет возможность попробуй его установить и подключиться PortMon-ом. Я думаю, что проблема не с самим драйвером, а что-то с его инсталляцией, больше всего меня смущает имя в реестре HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| dimedrol 
								Помогающий    Offline | 
								|  | « Ответ #7 : 30-05-2012 05:48 »  |  | 
 
 Можно еще подсмотреть в опенсорс проекте com0com. |  
						| 
								|  |  
								|  |  Записан | 
 
 Как говориться, cемь бед - один Reset   |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #8 : 31-05-2012 21:54 »  |  | 
 
 про "инсталляцию" - не понял. поставить у себя - с ходу не удалось а времени разбираться не было(
 про реестр тоже не понял, что смущает?
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | « Ответ #9 : 06-06-2012 12:53 »  |  | 
 
 С PortMon-ом понятно стало, он работает только с km - драйверами. Теперь другая задача, нужно чтоб к устройству могло подключится только одно приложение. Для этого я обрабатываю пакет IRP_MJ_CREATE в IQueueCallbackCreate. Как правильно реализовать, чтоб драйвер отвечал, что он занят? |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #10 : 06-06-2012 13:06 »  |  | 
 
 где то в IoCreateDevice был флаг чтобы подключатся мог только один процесс.либо при открытии проверять ID запрашивающего потока по текущему контексту процесса либо в IRP (помоему там какое то поле было).
 или имеется в виду - какой статус возвращать? нуу... зависит от того что вы хотите получить)
 |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | « Ответ #11 : 07-06-2012 14:44 »  |  | 
 
 У меня UMDF драйвер, там есть CreateIoQueue и CreateDevice. Но в параметрах я не нашел такого чтоб подключатся мог только один процесс. Именно статус, что порт занят другим приложением мне и надо... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	|  | 
	| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | « Ответ #13 : 12-06-2012 13:02 »  |  | 
 
 Привет! Для моего драйвера, нужна дополнительная вкладка в свойствах драйвера. Почитал и по примеру сделал её и столкнулся с такой проблемой: При установке драйвера, в дереве всех устройств он начал появятся с жёлтым значком, а вкладка нормально добавилась, но устройство не работало... Если я в своём .ini файле убрал всё что касается дополнительной вкладки, то всё ОК и главное, если я после этого обновляю драйвер уже с дополнительной вкладкой, то всё нормально... Короче глюк в установке. Вот мой ини файл, погляди пожалуйста:
 ;
 ; VirtualSerial.inf
 ;
 
 [Version]
 Signature="$Windows NT$"
 Class=Ports
 ClassGuid={4D36E978-E325-11CE-BFC1-08002BE10318}
 Provider=%MSFTUMDF%
 CatalogFile=WUDF.cat
 DriverVer=05/25/2012,6.1.7600.16435
 
 [Manufacturer]
 %MSFTUMDF%=Microsoft,NTx86
 
 [Microsoft.NTx86]
 %VirtualSerialDeviceName%=VirtualSerial_Install,UMDF\VirtualSerial
 
 [SourceDisksFiles]
 Virtualserial.dll=1
 WudfUpdate_01009.dll=1
 
 [SourceDisksNames]
 1 = %MediaDescription%
 
 ; =================== UMDF VirtualSerial Device ==================================
 
 [VirtualSerial_Install.NT]
 CopyFiles=UMDriverCopy
 AddReg=PropGUI_AddReg
 
 [VirtualSerial_Install.NT.hw]
 AddReg=VirtualSerial_RegistryAdd
 
 [VirtualSerial_RegistryAdd]
 HKR,,DeviceType,0x10001,0x0000001b
 
 [VirtualSerial_Install.NT.Services]
 AddService=WUDFRd,0x000001fa,WUDFRD_ServiceInstall
 
 [VirtualSerial_Install.NT.CoInstallers]
 CopyFiles=CoInstallers_CopyFiles
 AddReg=CoInstallers_AddReg
 
 [VirtualSerial_Install.NT.Wdf]
 UmdfService=VirtualSerial,VirtualSerial_Install
 UmdfServiceOrder=VirtualSerial
 
 [VirtualSerial_Install]
 UmdfLibraryVersion=1.9.0
 ServiceBinary=%12%\UMDF\Virtualserial.dll
 DriverCLSID={C8ECC087-6B79-4de5-8FB4-C03358A29617}
 
 [WUDFRD_ServiceInstall]
 DisplayName = %WudfRdDisplayName%
 ServiceType = 1
 StartType = 3
 ErrorControl = 1
 ServiceBinary = %12%\WUDFRd.sys
 LoadOrderGroup = Base
 
 [CoInstallers_CopyFiles]
 WudfUpdate_01009.dll
 PropPage.dll
 
 [CoInstallers_AddReg]
 HKR,,CoInstallers32,0x00010000,"WUDFUpdate_01009.dll;PropPage.dll"
 
 [PropGUI_AddReg]
 HKR,,EnumPropPages32,,"PropPage.dll,MixPropPageProvider"
 
 [DestinationDirs]
 UMDriverCopy=12,UMDF ; copy to drivers\UMDF
 CoInstallers_CopyFiles=11
 PropPage.dll=12,UMDF
 
 [UMDriverCopy]
 Virtualserial.dll
 PropPage.dll
 
 ; =================== Generic ==================================
 
 [Strings]
 MSFTUMDF="Microsoft"
 MediaDescription="Microsoft Sample Driver Installation Media"
 WudfRdDisplayName="Windows Driver Foundation - User-mode Driver Framework Reflector"
 VirtualSerialDeviceName="Microsoft VirtualSerial User-Mode Device Sample"
 
 
 
 Добавлено через 1 час, 48 минут и 34 секунды:
 Сори, тут я разобрался! А как такие вещи дебажить, я имею ввиду библиотеку с закладкой настроек...
 |  
						| 
								|  |  
								| « Последнее редактирование: 12-06-2012 14:51 от Artemprodigy » |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #14 : 12-06-2012 20:46 »  |  | 
 
 эээ.... попробуйте поставить в библиотеке бряк... и может быть, когда система до него дойдет - может быть получите запрос на открытие студии для отладки... хотя точно не уверен. отпишитесь если получится) |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| Artemprodigy 
								Интересующийся    Offline | 
								|  | « Ответ #15 : 13-06-2012 09:39 »  |  | 
 
 Сори, а как это сделать? В C# я в курсе, а вот в MFC не в курсе... |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #16 : 13-06-2012 09:54 »  |  | 
 
 |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	| 
			| 
					
						| kkmspb 
								Новенький    Offline | 
								|  | « Ответ #17 : 05-08-2018 13:13 »  |  | 
 
 Добрый день! Только начинаю разбираться с написанием драйвером и есть задание написать драйвер VirtualSerial COM <=> Ethernet. Планируется написать UMDF драйвер исходя из исходника в DDK \src\serial\VirtualSerial. Вторым я хочу взять для примера \src\general\echo\umdfSocketEcho\Driver.  Хотелось бы узнать реально ли это из этого исходника и небольшой план действий? 
 на http://kkmspb.ru/development/programming/device-driver/windows/  занимаюсь подобным проектом в качестве познания основ написания UMDF драйвера . Проект пока не завершен. Все пишется в виде шпаргалок "для себя". Слушающий TCP поток работает норм. Прием / передача по COM порту в драйвер норм. Остается все собрать вместе. В итоге все будет с открытым исх.кодом представлено на сайте.  Если кто знает подобный (бесплатный,открытый) проект в мире просьба просигнализировать, ибо я долго искал и не нашел. |  
						| 
								|  |  
								|  |  Записан | 
 |  |  | 
	| 
			| 
					
						| Ochkarik | 
								|  | « Ответ #18 : 06-08-2018 10:12 »  |  | 
 
 когда то давно натыкался на исходники для поддержки сокетов в WDM драйвере  Kernel Mode Sockets Library, подумывал использовать - но так и не сподобился). вроде есть много подобного реализованного в виде приложений и сервисов.
 |  
						| 
								|  |  
								|  |  Записан | 
 
 RTFM уже хоть раз наконец!     :[ ну или хотя бы STFW ... |  |  | 
	|  |