Поделиться через


Последовательный usb-драйвер (Usbser.sys)

Важно!

Этот раздел предназначен для программистов. Если у вас возникли проблемы с USB, см. статью Устранение распространенных проблем с USB.

Используйте предоставленный корпорацией Майкрософт USB-драйвер (Usbser.sys) для устройств управления связью и CDC. Корпорация Майкрософт рекомендует по возможности использовать драйверы, входящие в состав Windows.

Поддерживаемые версии

  • Windows 11
  • Windows 10

Применяется к

  • Производители устройств управления CDC

В Windows 10 драйвер был перезаписан с помощью платформы драйверов в режиме ядра, что улучшило общую стабильность драйвера.

  • Улучшены Plug and Play и управление питанием с помощью драйвера.
  • Добавлены функции управления питанием, такие как выборочная приостановка USB.

Кроме того, приложения UWP теперь могут использовать API,предоставляемые пространством имен Windows.Devices.SerialCommunication , которые позволяют приложениям взаимодействовать с этими устройствами.

установка Usbser.sys

Загрузите предоставленный корпорацией Майкрософт встроенный драйвер (Usbser.sys) для устройства управления связью и CDC.

Примечание

Если вы пытаетесь установить драйвер класса USB-устройства, включенный в Windows, скачивать драйвер не нужно. Они устанавливаются автоматически. Если они не устанавливаются автоматически, обратитесь к производителю устройства. Список драйверов класса USB-устройств, включенных в Windows, см. в статье Драйверы класса USB-устройств, включенные в Windows.

Начиная с Windows 10, usbser.inf был добавлен в каталог %Systemroot%\INF, который загружает Usbser.sys в качестве объекта функционального устройства (FDO) в стеке устройств. Если устройство принадлежит к классу устройств управления cdc и связи, Usbser.sys загружается автоматически. Вам не нужно писать собственный INF-файл для ссылки на драйвер. Драйвер загружается на основе совместимого сопоставления идентификаторов, аналогичного другим драйверам класса USB-устройств, включенным в Windows.

USB\Class_02

USB\Class_02&SubClass_02

  • Если вы хотите загружать Usbser.sys автоматически, задайте для кода класса значение 02, а для кода подкласса — 02 в дескрипторе устройства. При таком подходе вам не нужно распространять INF-файлы для устройства, так как система использует Usbser.inf. Дополнительные сведения см. в разделе Определения классов для устройств связи 1.2.

  • Если на устройстве указан код класса 02, но значение кода подкласса, отличное от 02, Usbser.sys не загружается автоматически. Менеджер Plug and Play пытается найти драйвер. Если подходящий драйвер не найден, возможно, на устройстве не загружен драйвер. Может потребоваться загрузить собственный драйвер или написать INF-файл, который ссылается на другой встроенный драйвер.

  • Если на устройстве заданы коды классов и подклассов 02 и вы хотите загрузить другой драйвер вместо Usbser.sys, необходимо написать INF-файл, указывающий идентификатор оборудования устройства и устанавливаемого драйвера. Например, просмотрите INF-файлы, включенные в примеры драйверов , и найдите устройства, аналогичные вашему устройству. Дополнительные сведения о разделах INF см. в разделе Общие сведения о файлах INF.

Настройка выборочной приостановки для Usbser.sys

Начиная с Windows 10 ,Usbser.sys поддерживает выборочную приостановку USB. Это позволяет подключенному usb-последовательному устройству переходить в состояние низкого энергопотребления, когда оно не используется, в то время как система остается в состоянии S0. Когда обмен данными с устройством возобновляется, устройство может выйти из состояния приостановки и возобновить работу. Эта функция отключена по умолчанию и может быть включена и настроена, задав запись IdleUsbSelectiveSuspendPolicy в этом разделе реестра:

HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\<hardware id>\\<instance id>\\Device Parameters

Чтобы настроить функции управления питанием Usbser.sys, можно задать для IdleUsbSelectiveSuspendPolicy следующее :

  • "0x00000001": вводит выборочную приостановку при простое, то есть при отсутствии активных данных, передаваемых на устройство или с устройства.

  • "0x00000000": вводит выборочную приостановку только при отсутствии открытых дескрипторов для устройства.

Эта запись может быть добавлена одним из двух способов:

  • Напишите INF-файл, ссылающийся на inf-файл установки, и добавьте запись реестра в HW. Раздел AddReg .

  • Опишите запись реестра в дескрипторе функций ОС с расширенными свойствами. Добавьте раздел настраиваемого свойства, который задает для поля bPropertyName строку Юникода IdleUsbSelectiveSuspendPolicy и wPropertyNameLength размером 62 байта. Задайте для поля bPropertyData значение "0x00000001" или "0x00000000". Значения свойств хранятся в виде 32-разрядных целых чисел.

    Дополнительные сведения см. в разделе Дескрипторы ОС Майкрософт.

Разработка приложений Windows для USB-устройства CDC

Начиная с Windows 10 приложение для Windows может отправлять запросы кUsbser.sys с помощью пространства имен Windows.Devices.SerialCommunication. Он определяет среда выполнения Windows классов, которые могут использовать для взаимодействия с USB-устройством CDC через последовательный порт или некоторую абстракцию последовательного порта. Классы предоставляют функциональные возможности для обнаружения таких последовательных устройств, чтения и записи данных, а также управления последовательных свойств для управления потоком, таких как настройка скорости передачи данных, состояния сигнала.