Condividi tramite


Introduzione allo sviluppo USB

Un dispositivo USB (Universal Serial Bus) definisce le funzionalità e le funzionalità tramite configurazioni, interfacce, impostazioni alternative ed endpoint. In questo argomento viene fornita una panoramica generale di questi concetti. Per informazioni dettagliate, vedere le specifiche USB in Documenti universali del bus seriale.

Contenuto della sezione

Argomento Descrizione
Layout del dispositivo USB Un dispositivo USB definisce le funzionalità e le funzionalità tramite configurazioni, interfacce, impostazioni alternative ed endpoint. In questo argomento viene fornita una panoramica generale di questi concetti.
Descrittori USB standard Un dispositivo USB fornisce informazioni su se stesso nelle strutture di dati denominate descrittori USB. In questa sezione vengono fornite informazioni su descrittori di dispositivo, configurazione, interfaccia ed endpoint e modi per recuperarli da un dispositivo USB.
Endpoint USB e pipe Un dispositivo USB dispone di endpoint usati per i trasferimenti di dati. Sul lato host gli endpoint sono rappresentati da pipe. Questo argomento distingue questi due termini.
USB in Windows - Domande frequenti Questo argomento presenta domande frequenti per gli sviluppatori di driver che non hanno esperienza nello sviluppo e nell'integrazione di dispositivi e driver USB con sistemi operativi Windows.

Scenari USB comuni

1: ottenere l'handle del dispositivo per la comunicazione e usare l'handle o l'oggetto recuperato per inviare trasferimenti di dati.

Driver client App UWP App desktop di Windows
KMDF:
WdfUsbTargetDeviceCreateWithParameters

UMDF:
IWDFUsbTargetDevice
UsbDevice

Come connettersi a un dispositivo USB
WinUsb_Initialize

Scrivere un'app desktop di Windows basata sul modello WinUSB

Recupero descrittore USB per ottenere informazioni sulle configurazioni del dispositivo, sulle impostazioni, sulle impostazioni e sui relativi endpoint.

Driver client App UWP App desktop di Windows
KMDF:

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

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

Come ottenere descrittori USB
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

Eseguire una query sul dispositivo per descrittori USB

2- Configurare il dispositivo per selezionare una configurazione USB attiva e l'impostazione per ogni interfaccia.

Driver client App UWP App desktop di Windows
KMDF:
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

Come selezionare una configurazione per un dispositivo USB.

Come selezionare un'impostazione alternativa in un'interfaccia USB.

UMDF:
La selezione della configurazione non è supportata

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

Come selezionare un'impostazione dell'interfaccia USB
WinUsb_SetCurrentAlternateSetting

3- Inviare trasferimenti di controllo per la configurazione del dispositivo e l'esecuzione di comandi fornitore specifici per un dispositivo specifico.

Driver client App UWP App desktop di Windows
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
USBD_SelectConfigUrbAllocateAndBuild

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

Come inviare un trasferimento di controllo USB
SendControlInTransferAsync
SendControlOutTransferAsync

Come inviare un trasferimento di controllo USB
WinUsb_ControlTransfer

Inviare il trasferimento del controllo all'endpoint predefinito

4- Inviare trasferimenti in blocco, in genere usati dai dispositivi di archiviazione di massa che trasferiscono grandi quantità di dati.

Driver client App UWP App desktop di Windows
KMDF:
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

Come inviare richieste di trasferimento bulk USB

Come usare il lettore continuo per la lettura dei dati da una pipe USB

UMDF:
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

Come inviare una richiesta di trasferimento bulk USB
WinUsb_WritePipe
WinUsb_ReadPipe

Inviare richieste di I/O

5- Inviare trasferimenti di interrupt. I dati vengono letti per recuperare i dati di interruzione hardware.

Driver client App UWP App desktop di Windows
Uguale ai trasferimenti in blocco UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

Come inviare una richiesta di trasferimento di interrupt USB
Uguale ai trasferimenti in blocco

6- Inviare trasferimenti isocroni, usati principalmente per i dispositivi di streaming multimediale.

Driver client App UWP App desktop di Windows
KMDF:
WdfUsbTargetDeviceCreateIsochUrb

Come trasferire i dati agli endpoint isocroni USB

UMDF:
Non supportato
Non supportato WinUsb_RegisterIsochBuffer
WinUsb_UnregisterIsochBuffer
WinUsb_WriteIsochPipeAsap
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_ReadIsochPipe
WinUsb_GetCurrentFrameNumber
WinUsb_GetAdjustedFrameNumber

Invio di trasferimenti isocroni USB da un'app desktop WinUSB

7- Sospensione selettiva USB per consentire al dispositivo di entrare in uno stato di bassa potenza e riportare il dispositivo allo stato di lavoro.

Driver client App UWP App desktop di Windows
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

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

Come inviare un dispositivo alla sospensione selettiva
Non supportato WinUsb_SetPowerPolicy

Risparmio energia WinUSB

Vedi anche