Windows.Devices.Usb Namespace
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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
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 undlowLevelDevices
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äteschnittstelleneigenschaftDEVPKEY_DeviceInterface_Restricted
TRUE
auf der WinUSB-GeräteschnittstelleGUID_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 gesuchtUpperFilters
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, wobeipszDeviceInterface
dieselbe Zeichenfolge wie an FromIdAsync übergeben wird.
- Die Geräteeinschränkung wird teilweise durch
- 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:
|
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:
|
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:
|
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. |