UsbDevice Klasse

Definition

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
Object Platform::Object IInspectable UsbDevice
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_078E0x045E die Anbieter-ID und die Produkt-ID 0x078E.
  • 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:

  1. 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.
  2. Übergeben Sie die abgerufene Zeichenfolge an FindAllAsync. Der Aufruf ruft ein DeviceInformationCollection-Objekt ab.
  3. Durchlaufen Sie die Auflistung. Jede Iteration ruft ein DeviceInformation-Objekt ab.
  4. 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}.
  5. 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.

Gilt für:

Weitere Informationen