如何將 USB 裝置功能新增至應用程式指令清單
本主題描述使用 Windows.Devices.Usb 命名空間之 Windows 應用程式所需的裝置功能。
- 您必須使用 USB 裝置功能來更新 Package.appxmanifest。
- 裝置類別必須是其中一個支持的類別。
USB 裝置功能使用方式
您的 USB 應用程式必須在其 應用程式套件指令清單中包含特定裝置功能, 以指定裝置的重要資訊。 以下是階層式順序的必要元素:
<DeviceCapability>:Name 屬性必須是「usb」。
<裝置>:標識碼 屬性必須指定廠商/產品識別符,或可以是「任何」,以允許存取符合函式類型的任何裝置。
<函式>:Type 屬性可以指定裝置類別代碼、名稱或裝置介面 GUID。
備註
您無法在 Microsoft Visual Studio 2013 中修改 USB 裝置的功能。 您必須以滑鼠右鍵點擊 [方案總管] 中的 Package.appxmanifest 檔案,然後選取 [開啟方式...],選擇 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 裝置功能範例
下列範例可讓應用程式在任何裝置上存取任何 ActiveSync 或 StillImage 介面。 應用程式不需要指定廠商和產品標識碼,因為這些是已知的類別類型。
<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 來存取裝置。
在此情況下,裝置標識碼值不得等於 「any」。。
<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>