Partilhar via


Introdução ao desenvolvimento usb

Um dispositivo USB (Barramento Serial Universal) define seus recursos e recursos por meio de configurações, interfaces, configurações alternativas e pontos de extremidade. Este tópico fornece uma visão geral de alto nível desses conceitos. Para obter detalhes, consulte as especificações USB em Documentos do Barramento Serial Universal.

Nesta seção

Tópico Descrição
Layout do dispositivo USB Um dispositivo USB define seus recursos e recursos por meio de configurações, interfaces, configurações alternativas e pontos de extremidade. Este tópico fornece uma visão geral de alto nível desses conceitos.
Descritores USB padrão Um dispositivo USB fornece informações sobre si mesmo em estruturas de dados chamadas descritores USB. Esta seção fornece informações sobre descritores de dispositivo, configuração, interface e ponto de extremidade e maneiras de recuperá-los de um dispositivo USB.
Pontos de extremidade USB e seus pipes Um dispositivo USB tem pontos de extremidade usados para transferências de dados. No lado do host, os pontos de extremidade são representados por pipes. Este tópico diferencia esses dois termos.
USB no Windows – perguntas frequentes Este tópico apresenta perguntas frequentes para desenvolvedores de driver que são novos no desenvolvimento e integração de dispositivos USB e drivers com sistemas operacionais Windows.

Cenários USB comuns

1 – Obtenha o identificador do dispositivo para comunicação e use o identificador ou objeto recuperado para enviar transferências de dados.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
KMDF:
WdfUsbTargetDeviceCreateWithParameters

UMDF:
IWDFUsbTargetDevice
Usbdevice

Como se conectar a um dispositivo USB
WinUsb_Initialize

Escrever um aplicativo da área de trabalho do Windows com base no modelo do WinUSB

Recuperação de descritor USB para obter informações sobre as configurações do dispositivo, interfaces, configurações e seus pontos de extremidade.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
KMDF:

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

Descritores USB
UsbDevice.DeviceDescriptor
UsbConfiguration.Descriptors
UsbInterface.Descriptors
UsbInterfaceSetting.Descriptors

Como obter descritores USB
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

Consultar o dispositivo para descritores USB

2 — Configure o dispositivo para selecionar uma configuração USB ativa e uma configuração por interface.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
KMDF:
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

Como selecionar uma configuração para um dispositivo USB.

Como selecionar uma configuração alternativa em uma interface USB.

UMDF:
Não há suporte para a seleção de configuração

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

Como selecionar uma configuração de interface USB
WinUsb_SetCurrentAlternateSetting

3 – Enviar transferências de controle para configurar o dispositivo e executar comandos de fornecedor específicos para determinado dispositivo.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
USBD_SelectConfigUrbAllocateAndBuild

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

Como enviar uma transferência de controle USB
SendControlInTransferAsync
SendControlOutTransferAsync

Como enviar uma transferência de controle USB
WinUsb_ControlTransfer

Enviar transferência de controle para o ponto de extremidade padrão

4 – Enviar transferências em massa, normalmente usadas por dispositivos de armazenamento em massa que transferem uma grande quantidade de dados.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
KMDF:
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

Como enviar solicitações de transferência em massa USB

Como usar o leitor contínuo para ler dados de um pipe USB

UMDF:
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

Como enviar uma solicitação de transferência em massa USB
WinUsb_WritePipe
WinUsb_ReadPipe

Solicitações de E/S do problema

5 – Enviar transferências de interrupção. Os dados são lidos para recuperar dados de interrupção de hardware.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
O mesmo que transferências em massa UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

Como enviar uma solicitação de transferência de interrupção USB
O mesmo que transferências em massa

6 – Enviar transferências isocronas, usadas principalmente para dispositivos de streaming de mídia.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
KMDF:
WdfUsbTargetDeviceCreateIsochUrb

Como transferir dados para pontos de extremidade isócronos USB

UMDF:
Sem suporte
Sem suporte WinUsb_RegisterIsochBuffer
WinUsb_UnregisterIsochBuffer
WinUsb_WriteIsochPipeAsap
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_ReadIsochPipe
WinUsb_GetCurrentFrameNumber
WinUsb_GetAdjustedFrameNumber

Enviando transferências isocronas USB de um aplicativo da área de trabalho do WinUSB

7 — Suspensão seletiva usb para permitir que o dispositivo insira um estado de baixa potência e traga o dispositivo de volta ao estado de trabalho.

Driver do cliente Aplicativo UWP Aplicativo da área de trabalho do Windows
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

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

Como enviar um dispositivo para a suspensão seletiva
Sem suporte WinUsb_SetPowerPolicy

Gerenciamento de Energia do WinUSB

Confira também