UsbDevice Classe

Definizione

Rappresenta un dispositivo USB. L'oggetto fornisce metodi e proprietà che un'app può usare per enumerare i dispositivi WinUSB e inviare trasferimenti di controllo IN e OUT.

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
Ereditarietà
Object Platform::Object IInspectable UsbDevice
Attributi
Implementazioni

Requisiti Windows

Famiglia di dispositivi
Windows 10 (è stato introdotto in 10.0.10240.0)
API contract
Windows.Foundation.UniversalApiContract (è stato introdotto in v1.0)

Esempio

Questo codice di esempio mostra come ottenere l'oggetto UsbDevice specificando l'ID fornitore/prodotto.

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);
}

Commenti

Prima di ottenere un riferimento all'oggetto UsbDevice, è necessario avere uno di questi identificatori:

  • Fornitore e identificatori di prodotto per il dispositivo fisico. Tali identificatori fanno parte della stringa ID hardware. In alternativa, è possibile derivare gli identificatori dalla proprietà Ids hardware in Gestione dispositivi. Ad esempio, se l'ID hardware è USB\VID_045E&PID_078E, l'ID fornitore è 0x045E e l'ID prodotto è 0x078E.
  • GUID dell'interfaccia del dispositivo. È possibile ottenere tale GUID dalla voce del Registro di sistema DeviceInterfaceGuids in: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB\<Device Identifier Instance Identifier>\<>\Device Parameters
  • La classe, la sottoclasse e i codici di protocollo del dispositivo. È possibile ottenere tali informazioni dalla voce del Registro di sistema CompatibleIds , disponibile nella chiave Parametri dispositivo .

Per ottenere l'oggetto UsbDevice:

  1. Ottenere la stringa AQS (Advanced Query Syntax) che contiene i criteri di ricerca per trovare il dispositivo nella raccolta di dispositivi enumerata. Se si vuole eseguire una ricerca in base all'ID fornitore/ID prodotto o al GUID dell'interfaccia del dispositivo, chiamare GetDeviceSelector. Se si vuole eseguire una ricerca in base alla classe del dispositivo, chiamare GetDeviceClassSelector. Entrambe le chiamate recuperano stringhe AQS formattate.
  2. Passare la stringa recuperata a FindAllAsync. La chiamata recupera un oggetto DeviceInformationCollection .
  3. Scorrere l'insieme. Ogni iterazione ottiene un oggetto DeviceInformation .
  4. Ottiene il valore della proprietà DeviceInformation.Id . Il valore stringa è il percorso dell'istanza del dispositivo. Ad esempio, \\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}.
  5. Chiamare FromIdAsync passando la stringa di istanza del dispositivo e ottenere l'oggetto UsbDevice. È quindi possibile utilizzare l'oggetto UsbDevice per eseguire altre operazioni, ad esempio l'invio di un trasferimento di controllo. Al termine dell'uso dell'app tramite l'oggetto UsbDevice, l'app deve rilasciarla chiamando Close.

Proprietà

Configuration

Ottiene un oggetto che rappresenta una configurazione USB, incluse tutte le interfacce e i relativi endpoint.

DefaultInterface

Ottiene l'oggetto che rappresenta il valore predefinito o la prima interfaccia in una configurazione USB.

DeviceDescriptor

Ottiene l'oggetto che rappresenta il descrittore del dispositivo USB.

Metodi

Close()

Rilascia il riferimento all'oggetto UsbDevice ottenuto in precedenza chiamando FromIdAsync.

Dispose()

Esegue attività definite dall'applicazione, come rilasciare o reimpostare risorse non gestite.

FromIdAsync(String)

Avvia un'operazione asincrona che crea un oggetto UsbDevice .

GetDeviceClassSelector(UsbDeviceClass)

Ottiene una stringa AQS (Advanced Query Syntax) che l'app può passare a DeviceInformation.FindAllAsync per trovare un tipo specifico di dispositivo USB.

GetDeviceSelector(Guid)

Ottiene una stringa AQS (Advanced Query Syntax), in base all'identificatore GUID dell'interfaccia del dispositivo, specificato dall'app. L'app passa la stringa a DeviceInformation.FindAllAsync per trovare un tipo specifico di dispositivo USB.

GetDeviceSelector(UInt32, UInt32)

Ottiene una stringa AQS (Advanced Query Syntax), in base ai fornitori e agli identificatori del prodotto, specificati dall'app. L'app passa la stringa a DeviceInformation.FindAllAsync per trovare un tipo specifico di dispositivo USB.

GetDeviceSelector(UInt32, UInt32, Guid)

Ottiene una stringa AQS (Advanced Query Syntax), in base a identificatori GUID fornitore, prodotto e interfaccia del dispositivo, specificati dall'app. L'app passa la stringa a DeviceInformation.FindAllAsync per trovare un tipo specifico di dispositivo USB.

SendControlInTransferAsync(UsbSetupPacket)

Avvia un trasferimento di controllo USB di lunghezza zero che legge dall'endpoint di controllo predefinito del dispositivo.

SendControlInTransferAsync(UsbSetupPacket, IBuffer)

Avvia un trasferimento di controllo USB per ricevere dati dall'endpoint di controllo predefinito del dispositivo.

SendControlOutTransferAsync(UsbSetupPacket)

Avvia un trasferimento di controllo USB di lunghezza zero che scrive nell'endpoint di controllo predefinito del dispositivo.

SendControlOutTransferAsync(UsbSetupPacket, IBuffer)

Avvia un trasferimento di controllo USB per inviare dati all'endpoint di controllo predefinito del dispositivo.

Si applica a

Vedi anche