如何將 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 裝置功能範例
下列範例可讓應用程式在任何裝置上存取任何 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 來存取裝置。
在此情況下,[裝置標識符] 值不得等於 「任何」。
<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>