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.
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.
4- Inviare trasferimenti in blocco, in genere usati dai dispositivi di archiviazione di massa che trasferiscono grandi quantità di dati.
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.
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 |