共用方式為


如何將 USB 裝置功能新增至應用程式指令清單

本主題描述使用 Windows.Devices.Usb 命名空間之 Windows 應用程式所需的裝置功能。

  • 您必須使用 USB 裝置功能更新 Package.appxmanifest。
  • 裝置類別必須是其中一個支持的類別。

USB 裝置功能使用方式

您的 USB 應用程式必須在其 應用程式套件指令清單 中包含特定裝置功能,以指定裝置的重要資訊。 以下是階層式順序的必要元素:

<DeviceCapability>Name 屬性必須是 “usb”。

<裝置>Id 屬性必須指定廠商/產品標識符,或可以是“any”,以允許存取符合函式類型的任何裝置。

<函>式: Type 屬性可以指定裝置類別代碼、名稱或裝置介面 GUID。

注意

您無法在 Microsoft Visual Studio 2013 中修改 USB 裝置功能。 您必須以滑鼠右鍵按兩下 方案總管中的 Package.appxmanifest 檔案,然後選取 [開啟 With...],然後選取 [XML (Text) 編輯器]。 檔案會以純 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 類別的裝置只能由 OEM 針對該電腦明確宣告的特殊許可權應用程式存取。

因為這些是未知的介面,所以應用程式必須指定這些類別代碼的廠商/產品標識碼。

  • CDC (0x02)
  • CDC-data (0x0A)
  • 其他 (0xEF)
  • 應用程式特定 (0xFE)
  • 廠商特定 (0xFF)

不支援這些 USB 裝置類別:

  • 無效的類別 (0x00)
  • 音訊類別 (0x01)
  • HID 類別 (0x03)
  • 影像類別 (0x06)
  • 印表機類別 (0x07)
  • 大型儲存類別 (0x08)
  • 智慧卡類別 (0x0B)
  • 音訊/視訊類別 (0x10)
  • 無線控制器 (,例如無線 USB 主機/中樞) (0xE0)

USB 裝置功能範例

下列範例可讓應用程式在任何裝置上存取任何 ActiveSyncStillImage 介面。 應用程式不需要指定廠商和產品標識碼,因為這些是已知的類別類型。

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

下列範例可讓應用程式存取 OSR USB Fx2 裝置上的廠商特定介面。

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

下列範例可讓應用程式在不同的OSR USB Fx2裝置版本上存取廠商特定的介面。 請注意 classId 格式:“ff * *”。 類別程式代碼為 「ff」,後面接著通配符 (* *) ,以包含任何子類別和通訊協議程序代碼。

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

下列範例可讓應用程式使用 MS OS 描述元或裝置 INF 中定義的裝置介面 GUID 來存取裝置。

在此情況下,[裝置標識符] 值不得等於 「任何」。

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

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>