Share via


Hinzufügen von USB-Gerätefunktionen zum App-Manifest

In diesem Thema werden die Gerätefunktionen beschrieben, die für eine Windows-App erforderlich sind, die den Windows.Devices.Usb-Namespace verwendet.

  • Sie müssen Package.appxmanifest mit USB-Gerätefunktionen aktualisieren.
  • Die Geräteklasse muss eine der unterstützten Klassen sein.

USB-Gerätefunktion

Ihre USB-App muss bestimmte Gerätefunktionen im App-Paketmanifest enthalten, um Schlüsselinformationen zum Gerät anzugeben. Hier sind die erforderlichen Elemente in hierarchischer Reihenfolge:

<DeviceCapability>: Das Name-Attribut muss "usb" sein.

<Gerät>: Das Id-Attribut muss die Anbieter-/Produkt-ID angeben oder kann "any" sein, um den Zugriff auf jedes Gerät zu ermöglichen, das dem Funktionstyp entspricht.

<Funktion>: Das Type-Attribut kann den Geräteklassencode, den Namen oder die Geräteschnittstellen-GUID angeben.

Hinweis

Sie können die USB-Gerätefunktion in Microsoft Visual Studio 2013 nicht ändern. Klicken Sie in Projektmappen-Explorer mit der rechten Maustaste auf die Datei Package.appxmanifest, und wählen Sie Öffnen mit... und dann XML (Text)-Editor aus. Die Datei wird im einfachen XML-Format geöffnet.

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

Unterstützte USB-Geräteklassen

Die Namen und Codewerte der unterstützten Geräteklassen sind wie folgt:

  • 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 * *

    Hinweis

    Auf Geräte, die zur DeviceFirmwareUpdate-Klasse gehören, kann nur von privilegierten Apps zugegriffen werden, die vom OEM für diesen PC explizit deklariert werden.

Da es sich um unbekannte Schnittstellen handelt, muss die App die Anbieter-/Produkt-ID für diese Klassencodes angeben.

  • CDC (0x02)
  • CDC-daten (0x0A)
  • Sonstiges (0xEF)
  • Anwendungsspezifisch (0xFE)
  • Herstellerspezifisch (0xFF)

Diese USB-Geräteklassen werden nicht unterstützt:

  • Ungültige Klasse (0x00)
  • Audioklasse (0x01)
  • HID-Klasse(0x03)
  • Imageklasse (0x06)
  • Druckerklasse (0x07)
  • Massenspeicherklasse (0x08)
  • Smart Karte-Klasse (0x0B)
  • Audio-/Videoklasse (0x10)
  • Drahtloser Controller (z. B. drahtloser USB-Host/Hub) (0xE0)

Beispiele für USB-Gerätefunktionen

Im folgenden Beispiel kann die App auf jede ActiveSync- oder StillImage-Schnittstelle auf einem beliebigen Gerät zugreifen. Die App ist nicht erforderlich, um den Anbieter und die Produktbezeichner anzugeben, da es sich um bekannte Klassentypen handelt.

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

Im folgenden Beispiel kann die App auf eine herstellerspezifische Schnittstelle auf dem OSR USB Fx2-Gerät zugreifen.

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

Im folgenden Beispiel kann die App auf eine herstellerspezifische Schnittstelle auf einer anderen Version des OSR USB Fx2-Geräts zugreifen. Beachten Sie das classId-Format: "ff * *". Der Klassencode ist "ff" gefolgt von Platzhaltern (* *), um alle Unterklassen und Protokollcodes einzuschließen.

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

Das folgende Beispiel ermöglicht der App den Zugriff auf das Gerät mit einer Geräteschnittstellen-GUID, die entweder im MS OS-Deskriptor oder im Geräte-INF definiert ist.

In diesem Fall darf der Wert der Geräte-ID nicht gleich "any" sein.

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

App-Manifestpaket für das CustomUsbDeviceAccess-Beispiel

  <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>