Поддельное устройство, подключающееся через USB - PullRequest
4 голосов
/ 29 апреля 2011

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

В частности, я пытаюсь создать приложение, которое может имитировать USB-устройство, которое имитирует Microsoft Zune.,Я хочу сделать так, чтобы мое приложение могло зарегистрироваться как устройство zune, а затем связаться с клиентом.Я добавил несколько DLL в свое приложение, чтобы попытаться определить вызовы, которые сообщают программному обеспечению, что подключенное устройство является законной Zune, но пока мне не повезло.

Я новичок вэтот тип разработки - это имитация аппаратных устройств, и я не очень опытен в импорте библиотек DLL, написанных на C / C ++.Я использую Visual Studio 2010 (.net 4.0) для разработки своего приложения, и я был бы признателен за любую помощь, которую кто-либо может предложить мне в имитации оборудования.У меня есть драйверы устройств, на которые Visual Studio отказывается ссылаться напрямую.У меня также есть реальное физическое устройство, поэтому я вижу, какие драйверы оно использует в диспетчере устройств.

Цель заключается в следующем

  1. Приложение регистрируется как USB-устройство., имитируя Microsoft Zune аналогично тому, как Virtual Clone Drive имитирует DVD-проигрыватель.
  2. Приложение распознается клиентом Zune как действительный Microsoft Zune.
  3. Программное обеспечение Zune работает с приложением как оноработает ли аппаратное устройство (синхронизация и т. д.)

Ответы [ 2 ]

3 голосов
/ 30 апреля 2011

Я только что нашел то, что называется Device Simulation Framework , что может быть именно тем, что вам нужно.Тем не менее, он все еще потребует значительных исследований того, как работает USB, чтобы завершить ваше решение.И, вероятно, все еще обычно это делается с использованием C или C ++.

. Zune использует модифицированную версию протокола MTP под названием MTPZ, но я нашел этот пример с использованием Device Simulation Framework для моделирования обычного MTP-устройства.Он называется MTP Device Simulator .Я не могу сказать, доступен ли исходный код.

2 голосов
/ 30 апреля 2011

Можете ли вы заменить библиотеки DLL, используемые клиентским программным обеспечением zune, на свои собственные библиотеки DLL? В этом случае вы можете обернуть оригинальные DLL своими DLL и перехватить операции.

Обновление: Чтобы узнать подписи функций в DLL, взгляните на инструмент Dependency Walker , который выведет список экспортируемых функций (и много другой информации ). Я предполагаю, что вы захотите написать свою заменяющую DLL в C.


В противном случае вам придется писать драйверы, которые регистрируют USB-устройство с соответствующими конечными точками. Я не уверен, как это сделать в Windows - я делал USB-кодирование только на стороне прошивки, а не на стороне драйвера. Вы должны иметь возможность использовать любое руководство для создания драйвера USB для Windows, например Начало работы с разработкой драйвера USB

Информация о специфике Zune также может быть полезна. Возможно, этот пост в блоге и его продолжение могут помочь: Внутри протокола Zune / USB: Часть 1

...