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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Драйвер VirtualSerial COM <=> Ethernet  (Прочитано 23353 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Artemprodigy
Интересующийся

ua
Offline Offline

« : 16-05-2012 15:05 » 

Добрый день! Только начинаю разбираться с написанием драйвером и есть задание написать драйвер VirtualSerial COM <=> Ethernet. Планируется написать UMDF драйвер исходя из исходника в DDK \src\serial\VirtualSerial. Вторым я хочу взять для примера \src\general\echo\umdfSocketEcho\Driver.  Хотелось бы узнать реально ли это из этого исходника и небольшой план действий?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 16-05-2012 20:50 » 

про второй пример не знаю, смотреть надо... скорее да, чем нет)
план - книги Соломон-руссинович, Вальтер Они, Пенни Орвик.
разобраться с компилятором-линкером.
разобраться с отладчиком и методами отладки.
разобраться с примерами по отдельности чтобы знать что делает каждая строчка и каждая переменная.
попробовать маленько их помодифицировать.
потом научится отправлять собственные пакеты.
и только потом пытаться их скрестить.

Ethernet - не совсем понял, что имеется в виду.... просто сетевой сокет?
« Последнее редактирование: 16-05-2012 20:54 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Artemprodigy
Интересующийся

ua
Offline Offline

« Ответ #2 : 17-05-2012 06:36 » 

С компилятором и отладчиком разобрался , делаю всё через студию. А читаю Пенни Орвис Гай Смит. Но нужно ещё читать и читать. Нужно чтоб все данные входящие в COM отправлялись по TCP/IP и так же обратно.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 17-05-2012 10:42 » 

настоятельно рекомендую полистать руссиновича для дзен и просветления) если с ядром впервые.
« Последнее редактирование: 17-05-2012 10:44 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Artemprodigy
Интересующийся

ua
Offline Offline

« Ответ #4 : 25-05-2012 17:45 » 

Привет ещё раз! По немного читаю л-ру и разбираюсь с кодом, даже получается) Отработал пакет с возвратом параметров COM порта. Вроде ничего сложного, но это наверное из-за того что UMDF. Но возник вопрос. Почему я не могу мониторить свой виртуальный порт прогой PortMon (Руссиновича), пишет что порт занят (конкретней не могу сказать, всё на работе)? 
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 25-05-2012 22:28 » 

ну.. надо конкретней) и с кодом... у меня DDK только на работе) даже пример не посмотреть)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Artemprodigy
Интересующийся

ua
Offline Offline

« Ответ #6 : 28-05-2012 06:59 » 

Ну код это в принципе пример DDK \src\serial\VirtualSerial, если будет возможность попробуй его установить и подключиться PortMon-ом. Я думаю, что проблема не с самим драйвером, а что-то с его инсталляцией, больше всего меня смущает имя в реестре HKEY_LOCAL_MACHINE\HARDWARE\DEVICEMAP\SERIALCOMM...
Записан
dimedrol
Помогающий

ru
Offline Offline

« Ответ #7 : 30-05-2012 05:48 » 

Можно еще подсмотреть в опенсорс проекте com0com.
Записан

Как говориться, cемь бед - один Reset Улыбаюсь
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #8 : 31-05-2012 21:54 » 

про "инсталляцию" - не понял.
поставить у себя - с ходу не удалось а времени разбираться не было(
про реестр тоже не понял, что смущает?
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Artemprodigy
Интересующийся

ua
Offline Offline

« Ответ #9 : 06-06-2012 12:53 » 

С PortMon-ом понятно стало, он работает только с km - драйверами. Теперь другая задача, нужно чтоб к устройству могло подключится только одно приложение. Для этого я обрабатываю пакет IRP_MJ_CREATE в IQueueCallbackCreate. Как правильно реализовать, чтоб драйвер отвечал, что он занят?
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 06-06-2012 13:06 » 

где то в IoCreateDevice был флаг чтобы подключатся мог только один процесс.
либо при открытии проверять ID запрашивающего потока по текущему контексту процесса либо в IRP (помоему там какое то поле было).
или имеется в виду - какой статус возвращать? нуу... зависит от того что вы хотите получить)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Artemprodigy
Интересующийся

ua
Offline Offline

« Ответ #11 : 07-06-2012 14:44 » 

У меня UMDF драйвер, там есть CreateIoQueue и CreateDevice. Но в параметрах я не нашел такого чтоб подключатся мог только один процесс. Именно статус, что порт занят другим приложением мне и надо...
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 07-06-2012 15:17 » 

аа... тогда не знаю) искать надо. либо возвращать какой нибудь NTSTATUS в  Irp->IoStatus из IRP_MJ_CREATE.
или просто выдавать статус по return(хотя это наверное не лучший вариант)
тут посмотрите... может быть получится.
http://msdn.microsoft.com/en-us/library/windows/hardware/ff559904(v=vs.85).aspx#ddk_setting_the_i_o_status_block_in_an_irp_kg
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Artemprodigy
Интересующийся

ua
Offline 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
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #14 : 12-06-2012 20:46 » 

эээ.... попробуйте поставить в библиотеке бряк... и может быть, когда система до него дойдет - может быть получите запрос на открытие студии для отладки... хотя точно не уверен. отпишитесь если получится)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Artemprodigy
Интересующийся

ua
Offline Offline

« Ответ #15 : 13-06-2012 09:39 » 

Сори, а как это сделать? В C# я в курсе, а вот в MFC не в курсе...
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #16 : 13-06-2012 09:54 » 

Debugging Visual C++
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
kkmspb
Новенький

ru
Offline 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
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #18 : 06-08-2018 10:12 » new

когда то давно натыкался на исходники для поддержки сокетов в WDM драйвере  Kernel Mode Sockets Library, подумывал использовать - но так и не сподобился).
вроде есть много подобного реализованного в виде приложений и сервисов.
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines