Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 06.12.07 14:53
Оценка:
Здравствуйте всё.

Опишу задачу которую надо реализовать. Значит есть две машины в сети под управлнием Windows. Назовём из A и B. В машину А втыкаеться USB утройство. Нужно создать для системы на машине B впечатление того что это устройство там появилось. То есть как-то объявить на B устройство и транслировать команды посылаемые ему операционной системой в устройство на машине A. То есть ОС должна сама подбрать к эмулируемому утройству соответствующее драйвера. Заранее оговорюсь что список версий windows таков, что можно использовать WDF(и KMDF, и UMDF). Подскажи в каком направлении копать и какие типы драйверов нужно создавать.
Так же нужно сделать так чтобы на машине A устройство было недоступно.

Спасибо за внимание.

PS: Драйверы до этого никогда не писал, но есть время заняться изучением материала. Сейчас читаю справку по WDF в MSDN'е.
itommyalice.blogspot.com
Re: Мэпинг USB утройств по сети на другую машину
От: Maxim S. Shatskih Россия  
Дата: 06.12.07 18:31
Оценка:
Нужно создать виртуальный usb host controller драйвер. Тяжкая задача, на этом уровне все недокументировано, совсем все.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[2]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 07.12.07 07:40
Оценка:
Здравствуйте, Maxim S. Shatskih, Вы писали:

MSS>Нужно создать виртуальный usb host controller драйвер. Тяжкая задача, на этом уровне все недокументировано, совсем все.


С документацией действительно всё плохо. В процессе чтения доков по wdf наткнулся на такую вот штуку: Device Simulation Framework Design Guide.
Там есть возможность при помощи реализации всяким там ком интерфейсов эмулировать устройства и контроллер. Однако! Я может что-то не так понял, но они везде там пишут что всё это тестирования и бла бла бла. Возможно это работает медленно и стоит написать настоящий драйвер.

Спасибо за ввнимание
itommyalice.blogspot.com
Re[2]: Мэпинг USB утройств по сети на другую машину
От: michael_srv  
Дата: 07.12.07 07:43
Оценка:
Здравствуйте, Maxim S. Shatskih, Вы писали:

MSS>Нужно создать виртуальный usb host controller драйвер. Тяжкая задача, на этом уровне все недокументировано, совсем все.


в сети можно найти исходники для усб эмулятора хаспа — там как раз виртуальный хост-контроллер. Взяв их за базу вполне можно прикрутить на втором конце реальное устройство. На самом деле не особо сложно.
Re[3]: Мэпинг USB утройств по сети на другую машину
От: pva  
Дата: 07.12.07 18:04
Оценка:
Здравствуйте, michael_srv, Вы писали:

_>в сети можно найти исходники для усб эмулятора хаспа — там как раз виртуальный хост-контроллер. Взяв их за базу вполне можно прикрутить на втором конце реальное устройство. На самом деле не особо сложно.

Он сделан на базе тостера из ddk и весьма условно подходит для решения задачи, поскольку создает единичное устройство на уровне usb шины. По поводу перехвата втыкаемого usb устройства — помотрите в сторону аналогичной поделки от vmware workstation. С host controller'om будет сложнее.
newbie
Re[3]: Мэпинг USB утройств по сети на другую машину
От: Maxim S. Shatskih Россия  
Дата: 08.12.07 12:51
Оценка:
TA>С документацией действительно всё плохо. В процессе чтения доков по wdf наткнулся на такую вот штуку: Device Simulation Framework Design Guide.

Я даже с ее автором пиво в Редмонде пил

Работает эта штука так: используются те же самые бинари UHCD или OPENHCI, но в их импортах _хукаются функции WRITE_REGISTER_XXX и похожие_.

Хукер содержит в себе эмуляцию HC железа — примерно такую же, как виртуальное железо в VMWare или MS VPC.

Начиная с какого-то уровня речь идет уже не об эмуляции HC, а об эмуляции воткнутых в него устройств, и где-то там стоит inverted call в юзер моду, а юзер-модная часть фреймворка уже и загружает COMовские модули-эмуляторы конкретных устройств.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[4]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 10.12.07 12:38
Оценка:
Здравствуйте, pva, Вы писали:

pva>Он сделан на базе тостера из ddk и весьма условно подходит для решения задачи, поскольку создает единичное устройство на уровне usb шины. По поводу перехвата втыкаемого usb устройства — помотрите в сторону аналогичной поделки от vmware workstation. С host controller'om будет сложнее.


Ну тостер я думаю подойдет, щас буду ковыряться с ним

Я использую Vista DDK (build 6000), там есть тостер переписанный на WDF, и там сказано:

dynamic
Dynamic version shows how to enumerate child devices by using child list objects.
Dynamic enumeration enables a driver to detect and report changes to the number and type of devices that are connected to the system while the system is running.


Так что будем разбираться.

Самое худшее то, что как было упоямнуто никакой документации по написанию реализации USB host controller нету ваще никакой, кроме как для Windows CE.

На самом деле же надо написать два драйвера — один, который будет перехватывать usb устройство на одной тачке, и один который буит эмулировать устройство на другой. Для начала хочу разобраться с эмуляцией. В vmware никто ничего не эмулярует на уровне дров виндоус. И чтоб это поведение с эмулировать (появление там устройств) надо обязательно host controller делать. Всё таки я думаю встроенные драйверы виндоус, для таких устройств как mass storage, должны запросы на чтение в конце концов отправлять драйверу шины. То есть как раз то что я хотел.

Спасибо за внимание
itommyalice.blogspot.com
Re[5]: Мэпинг USB утройств по сети на другую машину
От: Maxim S. Shatskih Россия  
Дата: 11.12.07 17:26
Оценка:
TA>На самом деле же надо написать два драйвера — один, который будет перехватывать usb устройство на одной тачке

Вот это и есть virtual USB host controller.

TA>эмуляцией. В vmware никто ничего не эмулярует на уровне дров виндоус.


На уровне регистров хост контроллера.

TA>И чтоб это поведение с эмулировать (появление там устройств) надо обязательно host controller делать. Всё таки я думаю встроенные драйверы виндоус, для таких устройств как mass storage, должны запросы на чтение в конце концов отправлять драйверу шины.


Драйвера USB HC, как и драйвера любого PCI железа, сами в железку лазят.

Драйвера storage LUNов типа Disk.sys отправляют все на PDO под собой. Этот PDO создан драйвером шины (storage port driver). Если этот драйвер у нас ATAPI, то он в итоге сам лазит в порты ATA controller, и обращается к сменному модулю внутри себя — IntelIde или PciIde — только для DMA.

Если это SCSIPORT, то внутри него сидит минипорт, который опять же лазит в железку.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[6]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 12.12.07 06:34
Оценка:
Здравствуйте, Maxim S. Shatskih, Вы писали:

TA>>На самом деле же надо написать два драйвера — один, который будет перехватывать usb устройство на одной тачке


MSS>Вот это и есть virtual USB host controller.


Не понял. Я думал что virtual USB host controller — это как раз второй, который будет эмулировать полявление USB утройств на второй машине.
itommyalice.blogspot.com
Re[7]: Мэпинг USB утройств по сети на другую машину
От: Maxim S. Shatskih Россия  
Дата: 12.12.07 11:31
Оценка:
TA>Не понял. Я думал что virtual USB host controller — это как раз второй, который будет эмулировать полявление USB утройств на второй машине.

У вас как-то странно было написано — "эмулировать" и "перехватывать".

На серверной машине будет код, который будет отзываться на запросы по сети с клиента, и их исполнять — либо отправляя вниз на реальное устройство, либо эмулируя их прямо в юзер моде.

На клиентской машине будет virtual USB host controller, который будет все запросы отправлять по сети.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[8]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 12.12.07 12:57
Оценка:
Здравствуйте, Maxim S. Shatskih, Вы писали:

TA>>Не понял. Я думал что virtual USB host controller — это как раз второй, который будет эмулировать полявление USB утройств на второй машине.


MSS>У вас как-то странно было написано — "эмулировать" и "перехватывать".


MSS>На серверной машине будет код, который будет отзываться на запросы по сети с клиента, и их исполнять — либо отправляя вниз на реальное устройство, либо эмулируя их прямо в юзер моде.


MSS>На клиентской машине будет virtual USB host controller, который будет все запросы отправлять по сети.


Так ну вроде с эмуляцей разобрались — сделаем виртуальный хост контроллер, который будет, говорить о появлении новых устройств (которые на самом деле были подключены на другой машине), а видноус будет сам разбираться с подбором к ним драйверов и прочего.

Вопрос с блокированием устройств которые должны смапиться на другую машину остался открытым, тут вапще не понятно, ведь когда виндоус опрашивает хост контроллер на наличие устройств подключенных к нему, тот обязательно вернёт ему устройство которое надо смэпить и от этого никуда не деться. Возможно можно поставить какой-нить фильтр который не пустит виндоус к этому устройству. В общем тоже не понятно.
itommyalice.blogspot.com
Re[9]: Мэпинг USB утройств по сети на другую машину
От: Maxim S. Shatskih Россия  
Дата: 12.12.07 13:40
Оценка:
TA>Вопрос с блокированием устройств которые должны смапиться на другую машину остался открытым, тут вапще не понятно, ведь когда виндоус опрашивает хост контроллер на наличие устройств подключенных к нему, тот обязательно вернёт ему устройство которое надо смэпить и от этого никуда не деться. Возможно можно поставить какой-нить фильтр который не пустит виндоус к этому устройству. В общем тоже не понятно.

Ага, bus filter driver.
Занимайтесь LoveCraftом, а не WarCraftом!
Re[10]: Мэпинг USB утройств по сети на другую машину
От: Аноним  
Дата: 12.12.07 13:53
Оценка:
Здравствуйте, Maxim S. Shatskih, Вы писали:
MSS>Ага, bus filter driver.

Тогда уж скорее еще и нечто напоминающее device lower filter, один bus upper filter в деле блокировки не сильно поможет.
Re: Мэпинг USB утройств по сети на другую машину
От: HotDog Швейцария www.denebspace.com
Дата: 14.12.07 08:48
Оценка: +1
Здравствуйте, TommyAlice, Вы писали:

TA>PS: Драйверы до этого никогда не писал, но есть время заняться изучением материала. Сейчас читаю справку по WDF в MSDN'е.


Может проще будет купить ?
http://www.eltima.com/products/usb-over-ethernet/
Re[2]: Мэпинг USB утройств по сети на другую машину
От: Andrew.W Worobow https://github.com/Worobow
Дата: 14.12.07 09:03
Оценка: +1
Здравствуйте, HotDog, Вы писали:

TA>>PS: Драйверы до этого никогда не писал, но есть время заняться изучением материала. Сейчас читаю справку по WDF в MSDN'е.


HD>Может проще будет купить ?


Или заоутсорсить? — заказать разработку на строне. И проще и дешевле... и качественней и быстрей. Или вам просто для себя, что называется?
Не все кто уехал, предал Россию.
Re[3]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 17.12.07 08:02
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Здравствуйте, HotDog, Вы писали:


TA>>>PS: Драйверы до этого никогда не писал, но есть время заняться изучением материала. Сейчас читаю справку по WDF в MSDN'е.


HD>>Может проще будет купить ?


AWW>Или заоутсорсить? — заказать разработку на строне. И проще и дешевле... и качественней и быстрей. Или вам просто для себя, что называется?


гггг на нас самих это дело и аутсорсят :-D
Смешно получилось)) Видать кому-то этот совет уже дали
itommyalice.blogspot.com
Re[11]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 17.12.07 08:04
Оценка:
Здравствуйте, Аноним, Вы писали:

А>Здравствуйте, Maxim S. Shatskih, Вы писали:

MSS>>Ага, bus filter driver.

А>Тогда уж скорее еще и нечто напоминающее device lower filter, один bus upper filter в деле блокировки не сильно поможет.


Так сейчас займусь и поковыряю, посмотрим что может помочь.
itommyalice.blogspot.com
Re[4]: Мэпинг USB утройств по сети на другую машину
От: Andrew.W Worobow https://github.com/Worobow
Дата: 17.12.07 11:01
Оценка:
Здравствуйте, TommyAlice, Вы писали:

TA>гггг на нас самих это дело и аутсорсят :-D

TA>Смешно получилось)) Видать кому-то этот совет уже дали

Действительно смешно. ... Скажите кто оутсорсит, я напишу, что не туда они это сделалали...
Не все кто уехал, предал Россию.
Re[5]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 17.12.07 12:27
Оценка:
Здравствуйте, Andrew.W Worobow, Вы писали:

AWW>Здравствуйте, TommyAlice, Вы писали:


TA>>гггг на нас самих это дело и аутсорсят :-D

TA>>Смешно получилось)) Видать кому-то этот совет уже дали

AWW>Действительно смешно. ... Скажите кто оутсорсит, я напишу, что не туда они это сделалали...


Ацк нет, мы уже давно с ними работаем, хотя там странные люди сидят, но мне самому интереснее будет сделать это)))
itommyalice.blogspot.com
Re[8]: Мэпинг USB утройств по сети на другую машину
От: TommyAlice Россия itommyalice.blogspot.com
Дата: 18.12.07 14:17
Оценка:
Здравствуйте, Maxim S. Shatskih, Вы писали:

TA>>Не понял. Я думал что virtual USB host controller — это как раз второй, который будет эмулировать полявление USB утройств на второй машине.


MSS>У вас как-то странно было написано — "эмулировать" и "перехватывать".


MSS>На серверной машине будет код, который будет отзываться на запросы по сети с клиента, и их исполнять — либо отправляя вниз на реальное устройство, либо эмулируя их прямо в юзер моде.


MSS>На клиентской машине будет virtual USB host controller, который будет все запросы отправлять по сети.


На самом деле остаёться тогда такой простой вопрос. Каким способом к контроллеру попадает информация с устройтсв, которые он создал. Я так понимаю что мне не нужно рабираться там что и как, главное обработать все эти методды и передать на другую машину.

И ещё я не совсем понимаю что такое USB Pipe'ы. Как информация которая была переданна им попадёт на контроллер.

Спасибо за внимание.
itommyalice.blogspot.com
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.