UsbDevice Classe
Définition
Important
Certaines informations portent sur la préversion du produit qui est susceptible d’être en grande partie modifiée avant sa publication. Microsoft exclut toute garantie, expresse ou implicite, concernant les informations fournies ici.
Représente un périphérique USB. L’objet fournit des méthodes et des propriétés qu’une application peut utiliser pour énumérer les appareils WinUSB et envoyer des transferts de contrôle IN et 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
- Héritage
- Attributs
- Implémente
Configuration requise pour Windows
Famille d’appareils |
Windows 10 (introduit dans 10.0.10240.0)
|
API contract |
Windows.Foundation.UniversalApiContract (introduit dans v1.0)
|
Exemples
Cet exemple de code montre comment obtenir l’objet UsbDevice en spécifiant l’ID de fournisseur/produit.
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);
}
Remarques
Avant d’obtenir une référence à l’objet UsbDevice, vous devez disposer de l’un des identificateurs suivants :
- Identificateurs de fournisseur et de produit pour l’appareil physique. Ces identificateurs font partie de la chaîne d’ID matériel. Vous pouvez également dériver les identificateurs de la propriété Ids matériels dans Gestionnaire de périphériques. Par exemple, si l’ID matériel est
USB\VID_045E&PID_078E
, l’ID du fournisseur est0x045E
et l’ID de produit est0x078E
. - GUID de l’interface de l’appareil. Vous pouvez obtenir ce GUID à partir de l’entrée de Registre DeviceInterfaceGuids sous HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB\<Device Identifier>\<Instance Identifier Parameters>\Device Parameters Device
- La classe, la sous-classe et les codes de protocole de l’appareil. Vous pouvez obtenir ces informations à partir de l’entrée de Registre CompatibleIds , qui se trouve sous la clé Paramètres de l’appareil .
Pour obtenir l’objet UsbDevice :
- Obtenez la chaîne AQS (Advanced Query Syntax) qui contient les critères de recherche pour rechercher l’appareil dans la collection d’appareils énumérée. Si vous souhaitez effectuer une recherche à l’aide de l’ID de fournisseur/id de produit ou du GUID de l’interface de l’appareil, appelez GetDeviceSelector. Si vous souhaitez effectuer une recherche par classe d’appareil, appelez GetDeviceClassSelector. Les deux appels récupèrent des chaînes AQS mises en forme.
- Passez la chaîne récupérée à FindAllAsync. L’appel récupère un objet DeviceInformationCollection .
- Effectuez une boucle dans la collection. Chaque itération obtient un objet DeviceInformation .
- Obtenez la valeur de la propriété DeviceInformation.Id . La valeur de chaîne est le chemin d’instance de l’appareil. Par exemple :
\\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}
. - Appelez FromIdAsync en passant la chaîne de instance de l’appareil et obtenez l’objet UsbDevice. Vous pouvez ensuite utiliser l’objet UsbDevice pour effectuer d’autres opérations, telles que l’envoi d’un transfert de contrôle. Lorsque l’application a fini d’utiliser l’objet UsbDevice, l’application doit la libérer en appelant Close.
Propriétés
Configuration |
Obtient un objet qui représente une configuration USB incluant toutes les interfaces et leurs points de terminaison. |
DefaultInterface |
Obtient l’objet qui représente la valeur par défaut ou la première interface dans une configuration USB. |
DeviceDescriptor |
Obtient l’objet qui représente le descripteur de périphérique USB. |
Méthodes
Close() |
Libère la référence à l’objet UsbDevice obtenu précédemment en appelant FromIdAsync. |
Dispose() |
Exécute les tâches définies par l'application associées à la libération ou à la redéfinition des ressources non managées. |
FromIdAsync(String) |
Démarre une opération asynchrone qui crée un objet UsbDevice . |
GetDeviceClassSelector(UsbDeviceClass) |
Obtient une chaîne AQS (Advanced Query Syntax) que l’application peut passer à DeviceInformation.FindAllAsync afin de rechercher un type spécifique de périphérique USB. |
GetDeviceSelector(Guid) |
Obtient une chaîne AQS (Advanced Query Syntax), basée sur l’identificateur GUID de l’interface d’appareil, spécifié par l’application. L’application transmet la chaîne à DeviceInformation.FindAllAsync afin de rechercher un type spécifique de périphérique USB. |
GetDeviceSelector(UInt32, UInt32) |
Obtient une chaîne AQS (Advanced Query Syntax), basée sur les identificateurs de fournisseur et de produit, spécifiés par l’application. L’application transmet la chaîne à DeviceInformation.FindAllAsync afin de rechercher un type spécifique de périphérique USB. |
GetDeviceSelector(UInt32, UInt32, Guid) |
Obtient une chaîne AQS (Advanced Query Syntax), basée sur les identificateurs GUID du fournisseur, du produit et de l’interface d’appareil, spécifiés par l’application. L’application transmet la chaîne à DeviceInformation.FindAllAsync afin de rechercher un type spécifique de périphérique USB. |
SendControlInTransferAsync(UsbSetupPacket) |
Démarre un transfert de contrôle USB de longueur zéro qui lit à partir du point de terminaison de contrôle par défaut de l’appareil. |
SendControlInTransferAsync(UsbSetupPacket, IBuffer) |
Démarre un transfert de contrôle USB pour recevoir des données à partir du point de terminaison de contrôle par défaut de l’appareil. |
SendControlOutTransferAsync(UsbSetupPacket) |
Démarre un transfert de contrôle USB de longueur zéro qui écrit sur le point de terminaison de contrôle par défaut de l’appareil. |
SendControlOutTransferAsync(UsbSetupPacket, IBuffer) |
Démarre un transfert de contrôle USB pour envoyer des données au point de terminaison de contrôle par défaut de l’appareil. |