Это двуязычная снимок страницы, сохраненная пользователем в 2025-7-2 3:11 для https://app.immersivetranslate.com/markdown/, предоставлено с двуязычной поддержкой от Иммерсивный перевод. Узнать, как сохранить?

OSSign Banner

Информация об оссигнале

Что это?

Это форк исходного репозитория, предназначенный для создания двоичных файлов для обычной подписи кода.

Как продвигаются обновления?

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

Где публикуются подписанные двоичные файлы?

Подписанные драйверы загружаются в выпуски на [vadimgrn /usbip-win2], а сами выпуски подписываются сертификатом проекта.

Вы можете найти полностью подписанные двоичные файлы, включая установщик и деинсталлятор, в разделе релизы в этом репозитории этого репозитория.

Исходный Репозиторий

Этот репозиторий является зеркалом vadimgrn /usbip-win2 и регулярно синхронизируется с вышестоящим репозиторием. Пожалуйста, обратитесь к оригинальному репозиторию для получения самой последней информации.

USBip logo

latest release release date downloads commits since commit activity license

USB / IP-клиент для Windows

Требования

  • Windows 10 x64 версии 1903 (сборка ОС 18362) и более поздних версий
  • Windows 11 ARM64
  • USB / IP-сервер должен поддерживать протокол v.1.1.1

Ключевые особенности

  • UDE драйвер - это клиент USB / IP
  • Драйвер верхнего фильтра класса USB usbip2_filter используется в качестве дополнения к драйверу UDE
  • Используется NPI ядра Winsock
    • Драйвер устанавливает TCP / IP-соединение с сервером и осуществляет обмен данными
    • Это подразумевает низкую задержку и высокую пропускную способность, отсутствие частого переключения контекста процессора и большого количества системных вызовов
  • Для сетевых операций отправки и получения реализовананулевая копия буферов передачи
  • Для каждого виртуального устройства создается выделенный поток для получения данных с сервера

Отличия от Сезанна/usbip-win

  • Лицензия BSD, состоящая из 2 пунктов, начиная с версии 0.9.7.0
    • Если вы решите использовать драйверы WHQL, убедитесь, что они основаны на этой версии или новее, поскольку лицензия GPL 3.0, использовавшаяся до этой версии, несовместима с WHQL.
  • Совершенно новый драйвер UDE, не унаследованный от родительского репозитория
  • Полнофункциональное приложение с графическим интерфейсом
  • Код пользовательского пространства полностью переписан (утилита libusbip и usbip)
  • SDK для сторонних разработчиков (публичный API libusbip)
  • Установщик InnoSetup используется для установки драйверов и прочего пользовательского пространства
  • Требуется Windows 10 версии 1903 или более поздней
  • C ++ 20 используется для всех проектов
  • Используется Visual Studio 2022
  • Сервер (драйвер заглушки) удален
  • только сборки x64 / arm64

Строить

Инструменты для сборки

Создание решения Visual Studio

  • Установить git
    • Запустите программу установки Visual Studio
    • Выберите вкладку "Отдельные компоненты"
    • Введите "git" в поле поиска
    • Проверьте "Git для Windows"
    • Установка выбранных элементов
  • Клонируйте проект с помощью git или загрузите архив с github и извлеките исходный код
  • Запустите bootstrap.bat
  • Открыть usbip_win2.sln
  • Установите подпись драйвера сертификата для проекта пакета
    • Щелкните правой кнопкой мыши на Project > Properties > Driver Signing > Test Certificate
    • Введите usbip.pfx (пароль: usbip)
  • Создайте решение
  • Все выходные файлы создаются в папках {x64,ARM64}/{Debug,Release}.

Настройка USB / IP-сервера в Ubuntu Linux

  • Установите необходимые пакеты
    • Linux sudo apt install linux-tools-generic linux-cloud-tools-generic
    • Малиновый Пи sudo apt install usbip hwdata usbutils
  • Загрузите модули и запустите демон
sudo modprobe -a usbip-core usbip-host
sudo usbipd -D
  • Список доступных USB-устройств
    • usbip list -l
 - busid 3-2 (1005:b113)
   Apacer Technology, Inc. : Handy Steno/AH123 / Handy Steno 2.0/HT203 (1005:b113)
 - busid 3-3.2 (07ca:513b)
   AVerMedia Technologies, Inc. : unknown product (07ca:513b)
  • Привязать нужное USB-устройство
    • sudo usbip bind -b 3-2
usbip: info: bind device on busid 3-2: complete
  • Ваше устройство 3-2 теперь может использоваться клиентом usbip

Настройка USB / IP в Windows

Включить режим тестовой подписи Windows

  • bcdedit.exe /set testsigning on
  • Перезагрузите систему, чтобы применить

Установить USB /IP

  • Создайте точку восстановления, чтобы отменить возможные сбои системы
    • В поле поиска на панели задач введите "Создать точку восстановления" и выберите ее из списка результатов
    • На вкладке Защита системы в разделе Свойства системы
      • Убедитесь, что включена защита системного диска
      • Выберите Создать
      • Введите описание точки восстановления, а затем выберите Создать
  • Загрузите и запустите программу установки из выпусков
  • Некоторые антивирусные программы выдают ложные срабатывания при установке InnoSetup

Используется usbip.exe для подключения удаленных устройств

  • Запрашивать доступные USB-устройства на сервере
    • usbip.exe list -r <usbip server ip>
Exportable USB devices
======================
 - 192.168.1.9
        3-2: unknown vendor : unknown product (1005:b113)
           : /sys/devices/pci0000:00/0000:00:14.0/usb3/3-2
           : (Defined at Interface level) (00/00/00)
  • Подключите нужное удаленное USB-устройство, используя его busid
    • usbip.exe attach -r <usbip server ip> -b 3-2
successfully attached to port 1
  • В системе должно появиться новое USB-устройство, используйте его как обычно
  • Отсоедините удаленное USB-устройство с помощью его USB-порта, передайте команду -all, чтобы отсоединить все удаленные устройства
    • usbip.exe detach -p 1
port 1 is successfully detached

Удаление USB / IP

  • Удалить приложение USB / IP
  • Отключить подпись теста
    • bcdedit.exe /set testsigning off
    • Перезагрузите систему, чтобы применить
  • Если программа удаления повреждена, выполните эти команды от имени администратора
  • Если вы копируете команды в файл .bat, используйте %%P и %%~ nxP в инструкции FOR
set APPDIR=C:\Program Files\USBip
set HWID=ROOT\USBIP_WIN2\UDE

"%APPDIR%\usbip.exe" detach --all

"%APPDIR%\devnode.exe" remove %HWID% root
rem pnputil.exe /remove-device /deviceid %HWID% /subtree

rem WARNING: use %%P and %%~nxP if you run this command in a .bat file
FOR /f %P IN ('findstr /M /L %HWID% C:\WINDOWS\INF\oem*.inf') DO pnputil.exe /delete-driver %~nxP /uninstall

"%APPDIR%\classfilter.exe" uninstall "%APPDIR%\usbip2_filter.inf" DefaultUninstall.NTamd64
rd /S /Q "%APPDIR%"

Отключите режим тестовой подписи Windows без удаления USB / IP

  • Может быть полезно, если вы хотите временно отключить подписание тестов
  • После этого USBip не будет работать до тех пор, пока тестовая подпись не будет повторно включена
  • драйвер usbip2_filter должен быть отключен, иначе все USB-контроллеры / устройства не будут работать
devcon.exe classfilter usb upper !usbip2_filter
bcdedit.exe /set testsigning off
  • Чтобы включить его снова
devcon.exe classfilter usb upper +usbip2_filter
bcdedit.exe /set testsigning on
  • Если devcon.exe не установлен
    • Беги regedit.exe
    • Откройте ключ HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{36fc9e60-c465-11cf-8056-444553540000}
    • Удалите строку usbip2_filter из многострочного значения UpperFilters, чтобы отключить драйвер
    • Добавьте эту строку, чтобы включить драйвер

Получение журналов USB / IP в Windows

  • Используется программная трассировка WPP
  • Используйте инструменты для трассировки программного обеспечения, такие как TraceView, Tracelog, Tracefmt и Tracepdb, для настройки, запуска и остановки сеансов трассировки, а также для отображения и фильтрации сообщений трассировки
  • Эти инструменты включены в комплект драйверов для Windows
  • Выберите "Выбрать компоненты / Файлы базы данных программы" во время установки USBip
  • Запуск сеансов ведения журнала для драйверов (запуск команд от имени администратора)
rem change to your WDK version
set PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64

set NAME=usbip

tracelog.exe -stop %NAME%-flt
tracelog.exe -stop %NAME%-ude

del /F %NAME%-*.*
tracepdb.exe -f "C:\Program Files\USBip\*.pdb" -s -p %TEMP%\%NAME%

tracelog.exe -start %NAME%-flt -guid #90c336ed-69fb-43d6-b800-1552d72d200b -f %NAME%-flt.etl -flag 0x3 -level 5
tracelog.exe -start %NAME%-ude -guid #ed18c9c5-8322-48ae-bf78-d01d898a1562 -f %NAME%-ude.etl -flag 0xF -level 5
  • Воспроизведите проблему
  • Останавливайте сеансы ведения журнала и получайте обычные текстовые журналы (запускайте команды от имени администратора)
  • Если вы копируете команды в файл .bat, удвойте '%' в TRACE_FORMAT_PREFIX
rem change to your WDK version
set PATH=%PATH%;C:\Program Files (x86)\Windows Kits\10\bin\10.0.26100.0\x64

set NAME=usbip
set TRACE_FORMAT_PREFIX=[%9]%3!04x! %!LEVEL! %!FUNC!:

tracelog.exe -stop %NAME%-flt
tracelog.exe -stop %NAME%-ude

tracefmt.exe -nosummary -p %TEMP%\%NAME% -o %NAME%-flt.txt %NAME%-flt.etl
tracefmt.exe -nosummary -p %TEMP%\%NAME% -o %NAME%-ude.txt %NAME%-ude.etl

rem sed -i "s/TRACE_LEVEL_CRITICAL/CRT/;s/TRACE_LEVEL_ERROR/ERR/;s/TRACE_LEVEL_WARNING/WRN/;s/TRACE_LEVEL_INFORMATION/INF/;s/TRACE_LEVEL_VERBOSE/VRB/" %NAME%-*.txt
rem sed -i "s/`anonymous namespace':://" %NAME%-*.txt
rem del /F sed*

Отладка BSOD

  • Включить дамп памяти ядра
    • Откройте диалоговое окно "Свойства системы"
    • Выберите вкладку "Дополнительно"
    • Нажмите на "Настройки" в разделе "Запуск и восстановление".
    • "Системный сбой", "Запись отладочной информации", выберите "Автоматический дамп памяти" или "Дамп памяти ядра".
    • Установите флажок "Перезаписать любой существующий файл".
  • Запустите сеанс трассировки WPP для драйверов, как описано в предыдущем разделе
  • Когда произошел BSOD
    • Перезагрузите КОМПЬЮТЕР, если автоматическая перезагрузка не установлена
    • Запустите отладчик Windows WinDbg.exe от имени администратора
    • Нажмите Ctrl + D, чтобы открыть аварийный дамп в C:\Windows
    • Запустите следующие команды и скопируйте выходные данные
.sympath+ C:\Program Files\USBip
!wmitrace.searchpath +%TEMP%\usbip
!analyze -v
!wdfkd.wdfsearchpath %TEMP%\USBip
!wdfkd.wdfsettraceprefix [%9]%3!04x! %!LEVEL! %!FUNC!:
!wdfkd.wdflogdump usbip2_ude -d
!wdfkd.wdflogdump usbip2_ude -f

Получение журнала USB / IP в Linux

sudo killall usbipd
sudo modprobe -r usbip-host usbip-vudc vhci-hcd usbip-core
sudo modprobe usbip-core usbip_debug_flag=0xFFFFFFFF
sudo modprobe -a usbip-host usbip-vudc vhci-hcd
sudo usbipd -D
dmesg --follow | tee ~/usbip.log

Тестирование драйвера

  • Driver Verifier используется для тестирования
  • Запуск verifier.exe от имени администратора
  • Включить тестирование
verifier /rc 1 2 4 5 6 8 9 12 18 34  10 11 14 15 16 17 20 24 26 33 35 36 /driver usbip2_filter.sys usbip2_ude.sys
  • Имейте в виду, что правило класса 26 "Проверка целостности кода" обязывает использовать NonPagedPoolNx вместо NonPagedPool
  • Запрашивать статистику драйвера
verifier /query
  • Отключить тестирование
verifier /reset
  • Чтобы запустить Static Driver Verifier, установите для параметра "Рассматривать предупреждения как ошибки" значение "Нет" для проектов libdrv, usbip2_filter, usbip2_ude

Если вам нравится этот проект

Buy Me A Coffee