Comment ajouter des fonctionnalités de périphérique USB au manifeste de l’application

Cette rubrique décrit les fonctionnalités d’appareil requises pour une application Windows qui utilise l’espace de noms Windows.Devices.Usb .

  • Vous devez mettre à jour Package.appxmanifest avec les fonctionnalités d’appareil USB.
  • La classe d’appareil doit être l’une des classes prises en charge.

Utilisation de la fonctionnalité de périphérique USB

Votre application USB doit inclure certaines fonctionnalités d’appareil dans son manifeste de package d’application pour spécifier des informations clés sur l’appareil. Voici les éléments requis dans l’ordre hiérarchique :

<DeviceCapability> : l’attribut Name doit être « usb ».

<Appareil> : l’attribut Id doit spécifier l’ID fournisseur/produit ou peut être « n’importe quel » pour autoriser l’accès à n’importe quel appareil qui correspond au type de fonction.

<Fonction> : l’attribut Type peut spécifier le code de classe d’appareil, le nom ou le GUID de l’interface de l’appareil.

Notes

Vous ne pouvez pas modifier la fonctionnalité de périphérique USB dans Microsoft Visual Studio 2013. Vous devez cliquer avec le bouton droit sur le fichier Package.appxmanifest dans Explorateur de solutions, sélectionner Ouvrir avec..., puis XML (Texte) Editor. Le fichier s’ouvre en XML brut.

<DeviceCapability Name="usb">
    <Device Id="vidpid:xxxx xxxx">
      <Function Type="classId:xx xx xx"/>
      <Function Type="name:xxxxx"/>
      <Function Type="winUsbId:xxxxx"/>
    </Device>
</DeviceCapability>

Classes de périphériques USB prises en charge

Les noms et valeurs de code des classes d’appareils prises en charge sont les suivants :

  • name:cdcControl, classId:02 * *

  • name:physical, classId:05 * *

  • name:personalHealthcare, classId:0f 00 00

  • name:activeSync, classId:ef 01 01

  • name:palmSync, classId:ef 01 02

  • name:deviceFirmwareUpdate, classId:fe 01 01

  • name:irda, classId:fe 02 00

  • name:measurement, classId:fe 03 *

  • name:vendorSpecific, classId:ff * *

    Notes

    Les appareils qui appartiennent à la classe DeviceFirmwareUpdate ne sont accessibles que par les applications privilégiées déclarées explicitement par l’OEM pour ce PC.

Étant donné qu’il s’agit d’interfaces inconnues, l’application doit spécifier l’ID fournisseur/produit pour ces codes de classe.

  • CDC (0x02)
  • CDC-data (0x0A)
  • Divers (0xEF)
  • Spécifique à l’application (0xFE)
  • Propre au fournisseur (0xFF)

Ces classes de périphériques USB ne sont pas prises en charge :

  • Classe non valide (0x00)
  • Classe audio (0x01)
  • HID class(0x03)
  • Classe Image (0x06)
  • Classe Printer (0x07)
  • Classe de stockage de masse (0x08)
  • Classe smart carte (0x0B)
  • Classe audio/vidéo (0x10)
  • Contrôleur sans fil (par exemple, hôte/hub USB sans fil) (0xE0)

Exemples de fonctionnalités de périphérique USB

L’exemple suivant permet à l’application d’accéder à n’importe quelle interface ActiveSync ou StillImage sur n’importe quel appareil. L’application n’est pas tenue de spécifier les identificateurs de fournisseur et de produit, car il s’agit de types de classes connus.

<DeviceCapability Name="usb">
  <Device Id="any">
    <Function Type="classId:ef 01 01"/>
    <Function Type="name:stillImage"/>
  </Device>
</DeviceCapability>

L’exemple suivant permet à l’application d’accéder à une interface spécifique au fournisseur sur l’appareil OSR USB Fx2.

<DeviceCapability Name="usb">
  <Device Id="vidpid:045e 930a">
    <Function Type="name:vendorSpecific"/>
  </Device>
</DeviceCapability>

L’exemple suivant permet à l’application d’accéder à une interface spécifique au fournisseur sur une autre version de l’appareil OSR USB Fx2. Notez le format classId : « ff * * ». Le code de classe est « ff » suivi de caractères génériques (* *) pour inclure tout code de sous-classe et de protocole.

<DeviceCapability Name="usb">
  <Device Id="vidpid:045e 930a">
    <Function Type="classId:ff * *"/>
  </Device>
</DeviceCapability>

L’exemple suivant permet à l’application d’accéder à l’appareil avec un GUID d’interface d’appareil défini soit dans le descripteur MS OS, soit dans l’INF de l’appareil.

Dans ce cas, la valeur ID d’appareil ne doit pas être égale à « any ».

<DeviceCapability Name="usb">
  <Device Id=" vidpid:1234 5678">
    <Function Type="winUsbId:"xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"/>
  </Device>
</DeviceCapability>

Package de manifeste d’application pour l’exemple CustomUsbDeviceAccess

  <Capabilities>
      <!--When the device's classId is FF * *, there is a predefined name for the class. 
          You can use the name instead of the class id. 
          There are also other predefined names that correspond to a classId.-->
      <m2:DeviceCapability Name="usb">
          <!--OSRFX2 Device-->
          <m2:Device Id="vidpid:0547 1002">
              <m2:Function Type="classId:ff * *"/>
              <!--<m2:Function Type="name:vendorSpecific"/>-->
          </m2:Device>
          <!--SuperMutt Device-->
          <m2:Device Id="vidpid:045E 0611">
              <!--<m2:Function Type="classId:ff * *"/>-->
              <m2:Function Type="name:vendorSpecific"/>
          </m2b:Device>
      </m2:DeviceCapability>
  </Capabilities>