Начало работы с разработкой USB

Устройство универсальной последовательной шины (USB) определяет свои возможности и функции с помощью конфигураций, интерфейсов, альтернативных параметров и конечных точек. В этом разделе представлен общий обзор этих понятий. Дополнительные сведения см. в спецификациях USB в документации по универсальной последовательной шине.

В этом разделе

Раздел Описание
Макет USB-устройства USB-устройство определяет свои возможности и функции с помощью конфигураций, интерфейсов, альтернативных параметров и конечных точек. В этом разделе представлен общий обзор этих понятий.
Стандартные дескрипторы USB USB-устройство предоставляет сведения о себе в структурах данных, называемых дескрипторами USB. В этом разделе содержатся сведения об дескрипторов устройства, конфигурации, интерфейсах и конечных точках, а также способах их получения с USB-устройства.
Конечные точки USB и их каналы USB-устройство имеет конечные точки, которые используются для передачи данных. На стороне узла конечные точки представлены каналами. В этом разделе эти два термина различаются.
USB в Windows — вопросы и ответы В этом разделе представлены часто задаваемые вопросы для разработчиков драйверов, которые не знакомы с разработкой и интеграцией USB-устройств и драйверов с операционными системами Windows.

Распространенные сценарии ИСПОЛЬЗОВАНИЯ USB

1— получение дескриптора устройства для обмена данными и использование полученного дескриптора или объекта для отправки данных.

Клиентский драйвер Приложение UWP Классическое приложение Windows
KMDF:
WdfUsbTargetDeviceCreateWithParameters

UMDF:
IWDFUsbTargetDevice
UsbDevice

Подключение к USB-устройству
WinUsb_Initialize

Создание классического приложения для Windows на основе шаблона WinUSB

Получение дескриптора USB для получения сведений о конфигурациях устройства, интерфейсах, параметрах и их конечных точках.

Клиентский драйвер Приложение UWP Классическое приложение Windows
KMDF:

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

Дескрипторы USB
UsbDevice.DeviceDescriptor
UsbConfiguration.Descriptors
Дескрипторы UsbInterface.
Дескрипторы UsbInterfaceSetting.Descriptors

Получение дескрипторов USB
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

Запрос устройства на наличие дескрипторов USB

2. Настройте устройство для выбора активной конфигурации USB и параметра для каждого интерфейса.

Клиентский драйвер Приложение UWP Классическое приложение Windows
KMDF:
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

Выбор конфигурации для USB-устройства.

Выбор альтернативного параметра в ИНТЕРФЕЙСе USB.

UMDF:
Выбор конфигурации не поддерживается

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

Выбор параметра интерфейса USB
WinUsb_SetCurrentAlternateSetting

3. Отправка передачи элементов управления для настройки устройства и выполнения команд поставщика, относящихся к конкретному устройству.

Клиентский драйвер Приложение UWP Классическое приложение Windows
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
USBD_SelectConfigUrbAllocateAndBuild

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

Отправка передачи элементов управления ЧЕРЕЗ USB
SendControlInTransferAsync
SendControlOutTransferAsync

Отправка передачи элементов управления ЧЕРЕЗ USB
WinUsb_ControlTransfer

Отправка передачи управления в конечную точку по умолчанию

4. Отправка массовых передач, обычно используемых запоминающими устройствами, которые передают большой объем данных.

Клиентский драйвер Приложение UWP Классическое приложение Windows
KMDF:
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

Отправка запросов на массовую передачу по USB

Использование непрерывного считывания данных из USB-канала

UMDF:
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

Как отправить запрос на массовую передачу USB
WinUsb_WritePipe
WinUsb_ReadPipe

Выдача запросов ввода-вывода

5 — отправка передачи прерываний. Данные считываются для получения данных об аппаратных прерываниях.

Клиентский драйвер Приложение UWP Классическое приложение Windows
То же, что и массовая передача UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

Отправка запроса на передачу прерывания USB
То же, что и массовая передача

6 — отправка изохронной передачи, которая в основном используется для устройств потоковой передачи мультимедиа.

Клиентский драйвер Приложение UWP Классическое приложение Windows
KMDF:
WdfUsbTargetDeviceCreateIsochUrb

Передача данных в изохронные конечные точки USB

UMDF:
Не поддерживается
Не поддерживается WinUsb_RegisterIsochBuffer
WinUsb_UnregisterIsochBuffer
WinUsb_WriteIsochPipeAsap
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_ReadIsochPipe
WinUsb_GetCurrentFrameNumber
WinUsb_GetAdjustedFrameNumber

Отправка изохронной передачи по USB из классического приложения WinUSB

7 — выборочная приостановка USB,чтобы разрешить устройству перейти в состояние низкого энергопотребления и вернуть устройство в рабочее состояние.

Клиентский драйвер Приложение UWP Классическое приложение Windows
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

UMDF:
IWDFUsbTargetDevice::SetPowerPolicy
IWDFDevice2::AssignS0IdleSettings
IWDFDevice3::AssignS0IdleSettingsEx

Как отправить устройство для выборочной приостановки
Не поддерживается WinUsb_SetPowerPolicy

Управление питанием WinUSB

См. также раздел