如何将 USB 设备功能添加到应用部件清单
本主题介绍使用 Windows.Devices.Usb 命名空间的 Windows 应用所需的设备功能。
- 必须使用 USB 设备功能更新 Package.appxmanifest。
- 设备类必须是受支持的类之一。
USB 设备功能使用情况
USB 应用必须在其 应用包清单 中包含某些设备功能,以指定有关设备的关键信息。 下面是按层次结构顺序排列的必需元素:
<DeviceCapability>: Name 属性必须为“usb”。
<设备>: Id 属性必须指定供应商/产品 ID,也可以是“any”,以允许访问与函数类型匹配的任何设备。
<函数>: 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 类的设备只能由 OEM 为该电脑显式声明的特权应用访问。
由于这些接口未知,因此应用需要指定这些类代码的供应商/产品 ID。
- CDC (0x02)
- CDC-data (0x0A)
- 其他 (0xEF)
- 特定于应用程序的 (0xFE)
- 供应商特定的 (0xFF)
不支持以下 USB 设备类:
- 类 (0x00) 无效
- 音频类 (0x01)
- HID 类 (0x03)
- 图像类 (0x06)
- 打印机类 (0x07)
- 大容量存储类 (0x08)
- Smart 卡 类 (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 访问设备。
在这种情况下,设备 ID 值不能等于“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>