UsbDevice Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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à
- 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:
- 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.
- Passare la stringa recuperata a FindAllAsync. La chiamata recupera un oggetto DeviceInformationCollection .
- Scorrere l'insieme. Ogni iterazione ottiene un oggetto DeviceInformation .
- 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}
. - 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. |