UsbDevice Klasse
Definition
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.
Stellt ein USB-Gerät dar. Das -Objekt stellt Methoden und Eigenschaften bereit, mit denen eine App WinUSB-Geräte auflisten und IN- und OUT-Steuerungsübertragungen senden kann.
public ref class UsbDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UsbDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UsbDevice : System.IDisposable
Public NotInheritable Class UsbDevice
Implements IDisposable
- Vererbung
- Attribute
- Implementiert
Windows-Anforderungen
Gerätefamilie |
Windows 10 (eingeführt in 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (eingeführt in v1.0)
|
Beispiele
Dieser Beispielcode zeigt, wie Sie das UsbDevice-Objekt abrufen, indem Sie die Anbieter-/Produkt-ID angeben.
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
UInt32 vid = 0x045E;
UInt32 pid = 0x078F;
string aqs = UsbDevice.GetDeviceSelector(vid, pid);
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqs, null);
if (myDevices.Count == 0)
{
ShowError("Device not found!");
return;
}
UsbDevice device = await UsbDevice.FromIdAsync(myDevices[0].Id);
// Send a control transfer.
UsbSetupPacket initSetupPacket = new UsbSetupPacket()
{
Request = initRequest,
RequestType = new UsbControlRequestType()
{
Recipient = UsbControlRecipient.DefaultInterface,
ControlTransferType = UsbControlTransferType.Vendor
}
};
await device.SendOutControlTransferAsync(initSetupPacket);
}
Hinweise
Bevor Sie einen Verweis auf das UsbDevice-Objekt erhalten, benötigen Sie einen der folgenden Bezeichner:
- Die Anbieter- und Produkt-IDs für das physische Gerät. Diese Bezeichner sind Teil der Hardware-ID-Zeichenfolge. Alternativ können Sie die Bezeichner von der Eigenschaft Hardware-IDs in Geräte-Manager ableiten. Wenn die Hardware-ID beispielsweise lautet, lautet
USB\VID_045E&PID_078E
0x045E
die Anbieter-ID und die Produkt-ID0x078E
. - Die GUID der Geräteschnittstelle. Sie können diese GUID aus dem Registrierungseintrag DeviceInterfaceGuids abrufen unter: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB Device\<Identifier>\<Instance Identifier>\Device Parameters
- Die Klassen-, Unterklassen- und Protokollcodes des Geräts. Sie können diese Informationen aus dem Registrierungseintrag CompatibleIds abrufen, der sich unter dem Geräteparameterschlüssel befindet.
So rufen Sie das UsbDevice-Objekt ab:
- Rufen Sie die AQS-Zeichenfolge (Advanced Query Syntax) ab, die Suchkriterien für die Suche nach dem Gerät in der aufgezählten Gerätesammlung enthält. Wenn Sie nach der Anbieter-ID/Produkt-ID oder der Geräteschnittstellen-GUID suchen möchten, rufen Sie GetDeviceSelector auf. Wenn Sie nach der Geräteklasse suchen möchten, rufen Sie GetDeviceClassSelector auf. Beide Aufrufe rufen formatierte AQS-Zeichenfolgen ab.
- Übergeben Sie die abgerufene Zeichenfolge an FindAllAsync. Der Aufruf ruft ein DeviceInformationCollection-Objekt ab.
- Durchlaufen Sie die Auflistung. Jede Iteration ruft ein DeviceInformation-Objekt ab.
- Rufen Sie den Wert der DeviceInformation.Id-Eigenschaft ab. Der Zeichenfolgenwert ist der Pfad des Geräts instance. Beispiel:
\\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}
. - Rufen Sie FromIdAsync auf, indem Sie die instance Zeichenfolge des Geräts übergeben und das UsbDevice-Objekt abrufen. Anschließend können Sie das UsbDevice-Objekt verwenden, um andere Vorgänge auszuführen, z. B. das Senden einer Steuerungsübertragung. Wenn die App die Verwendung des UsbDevice-Objekts abgeschlossen hat, muss es von der App durch Aufrufen von Close freigegeben werden.
Eigenschaften
Configuration |
Ruft ein -Objekt ab, das eine USB-Konfiguration einschließlich aller Schnittstellen und deren Endpunkte darstellt. |
DefaultInterface |
Ruft das -Objekt ab, das die Standardschnittstelle oder die erste Schnittstelle in einer USB-Konfiguration darstellt. |
DeviceDescriptor |
Ruft das -Objekt ab, das den USB-Gerätedeskriptor darstellt. |
Methoden
Close() |
Gibt den Verweis auf das UsbDevice-Objekt frei, das zuvor durch Aufrufen von FromIdAsync abgerufen wurde. |
Dispose() |
Führt anwendungsspezifische Aufgaben durch, die mit der Freigabe, der Zurückgabe oder dem Zurücksetzen von nicht verwalteten Ressourcen zusammenhängen. |
FromIdAsync(String) |
Startet einen asynchronen Vorgang, der ein UsbDevice-Objekt erstellt. |
GetDeviceClassSelector(UsbDeviceClass) |
Ruft eine AQS-Zeichenfolge (Advanced Query Syntax) ab, die die App an DeviceInformation.FindAllAsync übergeben kann, um einen bestimmten Typ von USB-Gerät zu finden. |
GetDeviceSelector(Guid) |
Ruft eine AQS-Zeichenfolge (Advanced Query Syntax) ab, die auf dem GUID-Bezeichner der Geräteschnittstelle basiert, der von der App angegeben wird. Die App übergibt die Zeichenfolge an DeviceInformation.FindAllAsync , um einen bestimmten Typ von USB-Gerät zu finden. |
GetDeviceSelector(UInt32, UInt32) |
Ruft eine AQS-Zeichenfolge (Advanced Query Syntax) ab, die auf Anbieter- und Produktbezeichnern basiert, die von der App angegeben werden. Die App übergibt die Zeichenfolge an DeviceInformation.FindAllAsync , um einen bestimmten Typ von USB-Gerät zu finden. |
GetDeviceSelector(UInt32, UInt32, Guid) |
Ruft eine Zeichenfolge der erweiterten Abfragesyntax (Advanced Query Syntax, AQS) ab, die auf den GUID-Bezeichnern von Anbietern, Produkten und Geräten basiert, die von der App angegeben werden. Die App übergibt die Zeichenfolge an DeviceInformation.FindAllAsync , um einen bestimmten Typ von USB-Gerät zu finden. |
SendControlInTransferAsync(UsbSetupPacket) |
Startet eine USB-Steuerübertragung der Länge Null, die vom Standardsteuerungsendpunkt des Geräts liest. |
SendControlInTransferAsync(UsbSetupPacket, IBuffer) |
Startet eine USB-Steuerungsübertragung, um Daten vom Standardsteuerungsendpunkt des Geräts zu empfangen. |
SendControlOutTransferAsync(UsbSetupPacket) |
Startet eine USB-Steuerübertragung der Länge Null, die in den Standardsteuerungsendpunkt des Geräts schreibt. |
SendControlOutTransferAsync(UsbSetupPacket, IBuffer) |
Startet eine USB-Steuerungsübertragung, um Daten an den Standardsteuerungsendpunkt des Geräts zu senden. |