Windows.Devices.Usb Namespace

Dieser Namespace definiert Windows-Runtime Klassen, die eine UWP-App für die Kommunikation mit WinUSB-Geräten verwenden kann. Diese Geräte werden vom Posteingangstreiber winusb.sys verarbeitet und von einem bestimmten Microsoft-Betriebssystemdeskriptor identifiziert.

Ein gültiges WinUSB-Gerät verfügt über eine kompatible ID von USB\MS_COMP_WINUSB

Kompatible Ids von Geräte-Manager für SuperMUTT WinUSB-Gerät

Geräteunterstützung

Dieser Namespace unterstützt die meisten WinUSB-Geräte. Es bietet jedoch keinen Zugriff auf USB-Geräte mit Geräteklassen der folgenden:

  • Audio (0x01)
  • HID (0x03)
  • Bild (0x06)
  • Drucker (0x07)
  • Massenspeicher (0x08)
  • Smartcard (0x0B)
  • Audio/Video (0x10)
  • Drahtloser Controller (0xE0)

USB-Gerätefunktionen

Eine UWP-App, die auf ein USB-Gerät zugreift, muss bestimmte Gerätefunktionsdaten im Funktionsknoten ihres Manifests enthalten. Diese Daten identifizieren das Gerät und seinen Zweck (oder seine Funktion). Beachten Sie, dass einige Geräte möglicherweise über mehrere Funktionen verfügen.

Seit Windows 10, Version 1809 (Oktober 2018 Update)

<DeviceCapability Name="usb"/>

Vor Windows 10, Version 1809 (Update vom Oktober 2018)

Seit 1809 müssen die VendorId/ProductId und der Funktionstyp nicht mehr angegeben werden und werden auf neueren Systemen ignoriert. Wenn Sie Systeme unter 1809 anvisieren, lesen Sie die älteren USB-Gerätefunktionen.

Problembehandlung

  • Überprüfen Sie, ob sich die USB-Funktion (usb) im Anwendungsmanifest befindet.
  • Überprüfen Sie, ob der Benutzer der Anwendung die Berechtigung erteilt hat, USB-Geräte zu verwenden.
  • Überprüfen Sie, ob der Gerätetyp nicht als nicht zugänglich gekennzeichnet ist.
  • Auf computerinterne Geräte (DEVPKEY_Device_InLocalMachineContainer == TRUE) kann im Allgemeinen nur zugegriffen werden, wenn sie auf einer SKU mit eingebettetem Modus und lowLevelDevices Funktionen ausgeführt werden.
  • Geräte mit Stapeln, die obere/niedrigere Filtertreiber enthalten, sind in der Regel nicht zugänglich. Diese werden manchmal von dritten Parteien hinzugefügt, um zusätzliche Funktionen für benutzerdefinierte Hardware zu aktivieren.
    • Die Geräteeinschränkung wird teilweise durch winusb.sys die Geräteaufzählung bestimmt, wodurch die Geräteschnittstelleneigenschaft DEVPKEY_DeviceInterface_RestrictedTRUE auf der WinUSB-Geräteschnittstelle GUID_DEVINTERFACE_WINUSB_WINRT basierend auf dem Vorhandensein von Geräte-/Klassenfiltern festgelegt werden kann.
    • Das Vorhandensein von UpperFilter/LowerFilter-Treibern des Geräts kann mithilfe von DeviceManager ermittelt werden, indem Nach und LowerFilters Eigenschaften gesucht UpperFilters werden.
    • Das Vorhandensein von Treibern der WinUSB-Klasse UpperFilter/LowerFilter kann mithilfe von DeviceManager ermittelt werden, indem Sie nach Eigenschaften und Class lower filters suchenClass upper filters.
    • Geräteschnittstelleneigenschaften können überprüft werden, indem aufgerufen CM_Get_Device_Interface_Property wird, wobei pszDeviceInterface dieselbe Zeichenfolge wie an FromIdAsync übergeben wird.
  • Diese Einschränkungen können beim Erstellen eines benutzerdefinierten Geräts umgangen werden, indem Sie mit dem Treiberentwickler zusammenarbeiten, um eine Hardwaresupport-App zu erstellen.

Klassen

UsbBulkInEndpointDescriptor

Der Endpunktdeskriptor für einen USB-Massen-IN-Endpunkt. Der Deskriptor gibt den Endpunkttyp, die Richtung, die Zahl und auch die maximale Anzahl von Bytes an, die vom Endpunkt in einer einzelnen Übertragung gelesen werden können.

UsbBulkInPipe

Stellt die Pipe dar, die der zugrunde liegende USB-Treiber öffnet, um mit einem USB-Massen-IN-Endpunkt des Geräts zu kommunizieren. Die App kann einen Eingabestream aus der Pipe abrufen, und Zugriffsdaten werden vom Endpunkt gelesen.

UsbBulkOutEndpointDescriptor

Der Endpunktdeskriptor für einen USB-Bulk OUT-Endpunkt. Der Deskriptor gibt den Endpunkttyp, die Richtung, die Zahl und auch die maximale Anzahl von Bytes an, die in eine einzelne Übertragung in den Endpunkt geschrieben werden können.

UsbBulkOutPipe

Stellt die Pipe dar, die der zugrunde liegende USB-Treiber für die Kommunikation mit einem USB-Massenoutendpunkt des Geräts öffnet. Das -Objekt bietet Zugriff auf einen Ausgabedatenstrom, in den die App Daten schreiben kann, die an den Endpunkt gesendet werden sollen.

UsbConfiguration

Stellt Informationen zu einer USB-Konfiguration, deren Deskriptoren und den in dieser Konfiguration definierten Schnittstellen bereit. Eine Erläuterung einer USB-Konfiguration finden Sie in Abschnitt 9.6.3 der USB-Spezifikation (Universal Serial Bus).

UsbConfigurationDescriptor

Leitet Informationen aus den ersten 9 Bytes eines USB-Konfigurationsdeskriptors ab. Die Informationen umfassen die Energiefunktionen des Geräts, wenn die Konfiguration aktiv ist, und die Anzahl der schnittstellen, die in dieser Konfiguration enthalten sind. Eine Erläuterung eines Konfigurationsdeskriptors finden Sie in Abschnitt 9.6.3 Universal Serial Bus Specification. Informationen zu Deskriptorfeldern finden Sie unter:

  • Tabelle 9.15 in der Universal Serial Bus 3.0-Spezifikation
  • Tabelle 9.10 in der Universal Serial Bus Specification (Version 2.0)
UsbControlRequestType

Stellt Informationen zur USB-Steuerungsübertragung, zum Typ der Steuerungsanforderung, zur Angabe, ob die Daten vom oder an den Host gesendet werden, und zum Empfänger der Anforderung im Gerät bereit.

UsbDescriptor

Stellt Informationen zum Typ des Deskriptors, seiner Größe (in Bytes) bereit und ruft die Deskriptordaten ab.

UsbDevice

Stellt ein USB-Gerät dar. Das -Objekt stellt Methoden und Eigenschaften bereit, die eine App verwenden kann, um WinUSB-Geräte aufzulisten und IN- und OUT-Steuerelementübertragungen zu senden.

UsbDeviceClass

Bietet eine Möglichkeit für die App, eine AQS-Zeichenfolge (Advanced Query Syntax) abzurufen, indem sie den Klassencode, den Unterklassencode und den vom Gerät definierten Protokollcode angibt. Die Eigenschaften in dieser Klasse werden im Aufruf von GetDeviceClassSelector übergeben.

UsbDeviceClasses

Bietet eine Möglichkeit, ein UsbDeviceClass-Objekt basierend auf der USB-Geräteklasse eines Geräts abzurufen. Die in dieser Klasse definierten Eigenschaften stellen die unterstützten USB-Geräteklassen dar und geben UsbDeviceClass-Objekte zurück.

Informationen zu USB-Geräteklassen finden Sie auf der offiziellen USB-Website für genehmigte Klassenspezifikationsdokumente.

UsbDeviceDescriptor

Leitet Informationen vom USB-Gerätedeskriptor des Geräts ab. Eine Erklärung zum Gerätedeskriptor finden Sie in Tabelle 9.8 in der Universal Serial Bus Specification.

UsbEndpointDescriptor

Leitet Informationen vom USB-Endpunktdeskriptor des Endpunkts ab, z. B. Typ, Richtung und Endpunktnummer. Dieses Objekt ruft auch die spezifischen Endpunktdeskriptoren basierend auf dem Typ des Endpunkts ab. Eine Erläuterung eines Endpunktdeskriptors finden Sie in Abschnitt 9.6.5 der Universal Serial Bus-Spezifikation:

  • Tabelle 9.18 in der Spezifikation "Universal Serial Bus 3.0"
  • Tabelle 9.13 in der Universal Serial Bus Specification (Version 2.0)
UsbInterface

Stellt Informationen zur USB-Schnittstelle einschließlich ihrer Endpunkte, der Anzahl der von der Schnittstelle unterstützten alternativen Einstellungen bereit und ruft die gesamte Deskriptoreinstellung für diese Einstellungen ab. Außerdem werden Pipes abgerufen, die den von der Schnittstelle unterstützten Endpunkten zugeordnet sind.

UsbInterfaceDescriptor

Beschreibt eine alternative USB-Einstellung (einer Schnittstelle) in einem Schnittstellendeskriptor. Eine Erklärung für einen Schnittstellendeskriptor finden Sie in Abschnitt 9.6.5 der Universal Serial Bus-Spezifikation:

  • Tabelle 9.15 in der Universal Serial Bus 3.0-Spezifikation
  • Tabelle 9.12 in der Universal Serial Bus Specification (Version 2.0)
UsbInterfaceSetting

Stellt Informationen zu einer alternativen Einstellung bereit, und wählt diese Einstellung aus. Die App kann die USB-Schnittstellendeskriptoren für die Einstellung und ihre Endpunkte abrufen und bestimmen, ob diese Einstellung derzeit ausgewählt ist.

UsbInterruptInEndpointDescriptor

Der Endpunktdeskriptor für einen USB-Interrupt-IN-Endpunkt. Der Deskriptor gibt den Endpunkttyp, die Richtung, die Zahl und auch die maximale Anzahl von Bytes an, die vom Endpunkt in einer einzelnen Übertragung gelesen werden können. Die App kann auch Informationen darüber abrufen, wie oft der Host den Endpunkt nach Daten abruft.

UsbInterruptInEventArgs

Stellt das -Objekt dar, das als Parameter an den Ereignishandler für das DataReceived-Ereignis übergeben wird.

UsbInterruptInPipe

Stellt die Pipe dar, die der zugrunde liegende USB-Treiber öffnet, um mit einem USB-Interrupt-IN-Endpunkt des Geräts zu kommunizieren. Das -Objekt ermöglicht es der App auch, einen Ereignishandler anzugeben. Dieser Handler, der aufgerufen wird, wenn Daten vom Endpunkt gelesen werden.

UsbInterruptOutEndpointDescriptor

Der Endpunktdeskriptor für einen USB-Interrupt-OUT-Endpunkt. Der Deskriptor gibt den Endpunkttyp, die Richtung, die Zahl und auch die maximale Anzahl von Bytes an, die in eine einzelne Übertragung in den Endpunkt geschrieben werden können. Die App kann auch Informationen darüber abrufen, wie oft der Host den Endpunkt abruft, um Daten zu senden.

UsbInterruptOutPipe

Stellt die Pipe dar, die der zugrunde liegende USB-Treiber öffnet, um mit einem USB-Interrupt-OUT-Endpunkt des Geräts zu kommunizieren. Das -Objekt bietet Zugriff auf einen Ausgabedatenstrom, in den die App Daten schreiben kann, die an den Endpunkt gesendet werden sollen.

UsbSetupPacket

Beschreibt das Setuppaket für eine USB-Steuerungsübertragung. Eine Erläuterung des Setuppakets finden Sie in Tabelle 9.2 in der USB-Spezifikation (Universal Serial Bus).

Enumerationen

UsbControlRecipient

Definiert Konstanten, die den Empfänger einer USB-Steuerungsübertragung angeben. Der Empfänger wird im Setuppaket der Steuerelementanforderung definiert. Siehe Tabelle 9.2 von Abschnitt 9.3 der USB-Spezifikation (Universal Serial Bus) (www.usb.org).

UsbControlTransferType

Definiert Konstanten, die den Typ der USB-Steuerungsübertragung angeben: Standard, Klasse oder Anbieter.

UsbEndpointType

Definiert Konstanten, die den Typ des USB-Endpunkts angeben: Control, Bulk, Isochronous oder Interrupt.

UsbReadOptions

Definiert Konstanten für Konfigurationsflags, die für eine USB-Pipe festgelegt werden können, die der Host für einen USB-Massen-IN-Endpunkt öffnet.

UsbTransferDirection

Definiert Konstanten, die die Richtung der USB-Übertragung angeben: IN- oder OUT-Übertragungen.

UsbWriteOptions

Definiert Konstanten für Konfigurationsflags, die für eine USB-Pipe festgelegt werden können, die der Host für einen USB OUT-Endpunkt öffnet.

Weitere Informationen