USB デバイス機能をアプリ マニフェストに追加する方法

このトピックでは、Windows.Devices.Usb 名前空間を使う Windows ストア アプリに必要なデバイス機能について説明します。

USB デバイス機能の使用

デバイスに関するキー情報を指定するために、USB アプリのアプリ パッケージ マニフェストには特定のデバイス機能が含まれている必要があります。以下では、必要な要素を階層に沿って説明します。

<DeviceCapability>: Name 属性は "usb" にする必要があります。

<Device>: Id 属性では、ベンダー/製品 ID を指定するか、"any" を指定して機能タイプに一致するあらゆるデバイスへのアクセスを許可する必要があります。

<Function>: Type 属性では、デバイス クラス コード、名前、またはデバイス インターフェイス GUID を指定できます。

  Microsoft Visual Studio 2013 では、USB デバイス機能を変更できません。ソリューション エクスプローラーで Package.appxmanifest ファイルを右クリックし、[プログラムから開く] をクリックして、[XML (テキスト) エディター] を選ぶ必要があります。ファイルがプレーン XML で開きます。
<DeviceCapability Name="usb">
    <Device Id="vidpid:xxxx xxxx">
      <Function Type="classId:xx xx xx"/>
      <Function Type="name:xxxxx"/>
      <Function Type="winUsbId:xxxxx"/>
    </Device>
</DeviceCapability>

サポートされる USB デバイス クラス

  • サポートされるデバイス クラスの名前とコード値は、次のとおりです。

    • 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 * *
      DeviceFirmwareUpdate クラスに属するデバイスには、この PC の OEM によって明示的に宣言された特権アプリだけがアクセスできます。
  • これらの不明なインターフェイスであるため、アプリでは次のクラス コードのベンダー/製品 ID を指定する必要があります。

    • CDC (0x02)
    • CDC データ (0x0A)
    • その他 (0xEF)
    • アプリケーション固有 (0xFE)
    • ベンダー固有 (0xFF)
  • 次の USB デバイス クラスはサポートされません。

    • 無効 クラス (0x00)
    • オーディオ クラス (0x01)
    • HID クラス (0x03)
    • 画像 クラス (0x06)
    • プリンター クラス (0x07)
    • 大容量記憶装置 クラス (0x08)
    • スマート カード クラス (0x0B)
    • オーディオ/ビデオ クラス (0x10)
    • 無線コントローラー (無線 USB ホスト/ハブなど) (0xE0)

USB デバイス機能の例

USB デバイス機能の定義の例を次に示します。

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

アプリが任意のデバイスのあらゆる ActiveSync インターフェイスまたは StillImage インターフェイスにアクセスできるようにします。 これらの既知のクラス タイプであるため、アプリでベンダー/製品 ID を指定する必要はありません。

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

アプリが OSR USB Fx2 デバイスのベンダー固有のインターフェイスにアクセスできるようにします。

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

アプリが各種バージョンの OSR USB Fx2 デバイスのベンダー固有のインターフェイスにアクセスできるようにします。classId の形式 ("ff * *") に注意してください。クラス コードは "ff" の後にワイルドカード (*) が続き、すべてのサブクラスとプロトコル コードが含められます。

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

アプリが MS OS 記述子またはデバイス INF 内で定義されたデバイス インターフェイス GUID を持つ デバイスにアクセスできるようにします。

この場合、Device Id 値は "any" と等しくしないでください。

 

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>

関連トピック

USB デバイス対応 Windows ストア アプリ

 

 

表示:
© 2015 Microsoft