Erste Schritte mit der USB-Entwicklung

Ein USB-Gerät (Universal Serial Bus) definiert seine Funktionen und Features über Konfigurationen, Schnittstellen, alternative Einstellungen und Endpunkte. Dieses Thema bietet eine allgemeine Übersicht über diese Konzepte. Weitere Informationen finden Sie in den USB-Spezifikationen unter Universal Serial Bus Documents( Universal Serial Bus Documents).

In diesem Abschnitt

Thema BESCHREIBUNG
USB-Gerätelayout Ein USB-Gerät definiert seine Funktionen und Features über Konfigurationen, Schnittstellen, alternative Einstellungen und Endpunkte. Dieses Thema bietet eine allgemeine Übersicht über diese Konzepte.
STANDARD-USB-Deskriptoren Ein USB-Gerät stellt Informationen über sich selbst in Datenstrukturen bereit, die als USB-Deskriptoren bezeichnet werden. Dieser Abschnitt enthält Informationen zu Geräte-, Konfigurations-, Schnittstellen- und Endpunktdeskriptoren und Möglichkeiten, diese von einem USB-Gerät abzurufen.
USB-Endpunkte und ihre Pipes Ein USB-Gerät verfügt über Endpunkte, die für Datenübertragungen verwendet werden. Auf der Hostseite werden Endpunkte durch Pipes dargestellt. In diesem Thema wird zwischen diesen beiden Begriffen unterschieden.
USB unter Windows – Häufig gestellte Fragen Dieses Thema enthält häufig gestellte Fragen für Treiberentwickler, die noch nicht mit der Entwicklung und Integration von USB-Geräten und -Treibern in Windows-Betriebssysteme vertraut sind.

Häufige USB-Szenarien

1– Rufen Sie das Gerätehandle für die Kommunikation ab, und verwenden Sie das abgerufene Handle oder Objekt, um Datenübertragungen zu senden.

Clienttreiber UWP-App Windows Desktop-App
KMDF:
WdfUsbTargetDeviceCreateWithParameters

UMDF:
IWDFUsbTargetDevice
UsbDevice

Herstellen einer Verbindung mit einem USB-Gerät
WinUsb_Initialize

Schreiben einer Windows-Desktop-App basierend auf der WinUSB-Vorlage

USB-Deskriptorabruf zum Abrufen von Informationen zu den Konfigurationen, Schnittstellen, Einstellungen und endpunkten des Geräts.

Clienttreiber UWP-App Windows Desktop-App
KMDF:

WdfUsbTargetDeviceGetDeviceDescriptor
WdfUsbTargetDeviceRetrieveConfigDescriptor

UMDF:

IWDFUsbTargetDevice::RetrieveDescriptor

USB-Deskriptoren
UsbDevice.DeviceDescriptor
UsbConfiguration.Descriptors
UsbInterface.Descriptors
UsbInterfaceSetting.Descriptors

Abrufen von USB-Deskriptoren
WinUsb_GetDescriptor
WinUsb_QueryInterfaceSettings
WinUsb_QueryPipe

Abfragen des Geräts nach USB-Deskriptoren

2– Konfigurieren Sie das Gerät , um eine aktive USB-Konfiguration und -Einstellung pro Schnittstelle auszuwählen.

Clienttreiber UWP-App Windows Desktop-App
KMDF:
WdfUsbTargetDeviceSelectConfig
WdfUsbTargetDeviceCreateUrb
USBD_SelectConfigUrbAllocateAndBuild
WdfUsbInterfaceSelectSetting

Auswählen einer Konfiguration für ein USB-Gerät

Auswählen einer alternativen Einstellung in einer USB-Schnittstelle.

UMDF:
Die Konfigurationsauswahl wird nicht unterstützt.

IWDFUsbInterface::SelectSetting
UsbInterfaceSetting.SelectSettingAsync

Auswählen einer USB-Schnittstelleneinstellung
WinUsb_SetCurrentAlternateSetting

3– Senden von Steuerungsübertragungen zum Konfigurieren des Geräts und Ausführen von Anbieterbefehlen, die für ein bestimmtes Gerät spezifisch sind.

Clienttreiber UWP-App Windows Desktop-App
KMDF:
WdfUsbTargetDeviceSendControlTransferSynchronously
WdfUsbTargetDeviceFormatRequestForControlTransfer
USBD_SelectConfigUrbAllocateAndBuild

UMDF:
IWDFUsbTargetDevice::FormatRequestForControlTransfer

Senden einer USB-Steuerübertragung
SendControlInTransferAsync
SendControlOutTransferAsync

Senden einer USB-Steuerübertragung
WinUsb_ControlTransfer

Senden der Steuerungsübertragung an den Standardendpunkt

4– Senden von Massenübertragungen, die in der Regel von Massenspeichergeräten verwendet werden, die große Datenmengen übertragen.

Clienttreiber UWP-App Windows Desktop-App
KMDF:
WdfUsbTargetPipeReadSynchronously
WdfUsbTargetPipeWriteSynchronously
WdfUsbTargetPipeFormatRequestForRead
WdfUsbTargetPipeFormatRequestForWrite

Senden von USB-Massenübertragungsanforderungen

Verwenden des fortlaufenden Readers zum Lesen von Daten aus einer USB-Pipe

UMDF:
IUsbTargetPipeContinuousReaderCallbackReadComplete
IWDFUsbTargetPipe
IWDFUsbTargetPipe2
UsbBulkInPipe.InputStream
UsbBulkOutPipe.OutputStream

Senden einer USB-Massenübertragungsanforderung
WinUsb_WritePipe
WinUsb_ReadPipe

E/A-Problemanforderungen

5 – Senden von Interruptübertragungen. Daten werden gelesen, um Hardwareunterbrechungsdaten abzurufen.

Clienttreiber UWP-App Windows Desktop-App
Identisch mit Massenübertragungen UsbInterruptInPipe.DataReceived
UsbInterruptOutPipe.OutputStream

Senden einer USB-Interruptübertragungsanforderung
Identisch mit Massenübertragungen

6– Senden von isochronen Übertragungen, die hauptsächlich für Medienstreaminggeräte verwendet werden.

Clienttreiber UWP-App Windows Desktop-App
KMDF:
WdfUsbTargetDeviceCreateIsochUrb

Übertragen von Daten an isochrone USB-Endpunkte

UMDF:
Nicht unterstützt
Nicht unterstützt WinUsb_RegisterIsochBuffer
WinUsb_UnregisterIsochBuffer
WinUsb_WriteIsochPipeAsap
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_ReadIsochPipe
WinUsb_GetCurrentFrameNumber
WinUsb_GetAdjustedFrameNumber

Senden isochroner USB-Übertragungen von einer WinUSB-Desktop-App

7 – SELEKTIVES ANHALTEN , damit das Gerät in einen Energiesparmodus wechseln und das Gerät wieder in den Betriebszustand versetzt wird.

Clienttreiber UWP-App Windows Desktop-App
KMDF:
WDF_DEVICE_POWER_POLICY_IDLE_SETTINGS
WdfDeviceAssignS0IdleSettings

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

Senden eines Geräts zum selektiven Anhalten
Nicht unterstützt WinUsb_SetPowerPolicy

WinUSB-Energieverwaltung

Weitere Informationen