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