UsbDevice 类
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
表示 USB 设备。 对象提供应用可用于枚举 WinUSB 设备和发送 IN 和 OUT 控制传输的方法和属性。
public ref class UsbDevice sealed : IClosable
/// [Windows.Foundation.Metadata.ContractVersion(Windows.Foundation.UniversalApiContract, 65536)]
/// [Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
class UsbDevice final : IClosable
[Windows.Foundation.Metadata.ContractVersion(typeof(Windows.Foundation.UniversalApiContract), 65536)]
[Windows.Foundation.Metadata.MarshalingBehavior(Windows.Foundation.Metadata.MarshalingType.Agile)]
public sealed class UsbDevice : System.IDisposable
Public NotInheritable Class UsbDevice
Implements IDisposable
- 继承
- 属性
- 实现
Windows 要求
设备系列 |
Windows 10 (在 10.0.10240.0 中引入)
|
API contract |
Windows.Foundation.UniversalApiContract (在 v1.0 中引入)
|
示例
此示例代码演示如何通过指定供应商/产品 ID 获取 UsbDevice 对象。
protected override async void OnLaunched(LaunchActivatedEventArgs args)
{
UInt32 vid = 0x045E;
UInt32 pid = 0x078F;
string aqs = UsbDevice.GetDeviceSelector(vid, pid);
var myDevices = await Windows.Devices.Enumeration.DeviceInformation.FindAllAsync(aqs, null);
if (myDevices.Count == 0)
{
ShowError("Device not found!");
return;
}
UsbDevice device = await UsbDevice.FromIdAsync(myDevices[0].Id);
// Send a control transfer.
UsbSetupPacket initSetupPacket = new UsbSetupPacket()
{
Request = initRequest,
RequestType = new UsbControlRequestType()
{
Recipient = UsbControlRecipient.DefaultInterface,
ControlTransferType = UsbControlTransferType.Vendor
}
};
await device.SendOutControlTransferAsync(initSetupPacket);
}
注解
在获取对 UsbDevice 对象的引用之前,必须具有以下标识符之一:
- 物理设备的供应商和产品标识符。 这些标识符是硬件 ID 字符串的一部分。 或者,可以从 设备管理器 中的 Hardware Ids 属性派生标识符。 例如,如果 硬件 ID 为
USB\VID_045E&PID_078E
,则供应商 ID 为0x045E
,产品 ID 为0x078E
。 - 设备接口 GUID。 可以从 以下的 DeviceInterfaceGuids 注册表项获取该 GUID: HKEY_LOCAL_MACHINE\System\CurrentControlSet\枚举\USB\<设备标识符>\<实例标识符>\设备参数
- 设备的类、子类和协议代码。 可以从“设备参数”项下的 CompatibleIds 注册表项获取该信息。
获取 UsbDevice 对象:
- 获取高级查询语法 (AQS) 字符串,该字符串包含用于在枚举设备集合中查找设备的搜索条件。 如果要按供应商 ID/产品 ID 或设备接口 GUID 进行搜索,请调用 GetDeviceSelector。 如果要按设备类进行搜索,请调用 GetDeviceClassSelector。 这两个调用都检索格式化的 AQS 字符串。
- 将检索到的字符串传递到 FindAllAsync。 调用检索 DeviceInformationCollection 对象。
- 循环访问集合。 每次迭代都会获取 一个 DeviceInformation 对象。
- 获取 DeviceInformation.Id 属性值。 字符串值是设备实例路径。 例如,
\\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}
。 - 通过传递设备实例字符串并获取 UsbDevice 对象来调用 FromIdAsync 。 然后,可以使用 UsbDevice 对象执行其他操作,例如发送控制传输。 应用使用完 UsbDevice 对象后,应用必须通过调用 Close 释放它。
属性
Configuration |
获取一个 对象,该对象表示 USB 配置,包括所有接口及其终结点。 |
DefaultInterface |
获取表示 USB 配置中默认接口或第一个接口的 对象。 |
DeviceDescriptor |
获取表示 USB 设备描述符的 对象。 |
方法
Close() |
释放对以前通过调用 FromIdAsync 获取的 UsbDevice 对象的引用。 |
Dispose() |
执行与释放或重置非托管资源关联的应用程序定义的任务。 |
FromIdAsync(String) |
启动创建 UsbDevice 对象的异步操作。 |
GetDeviceClassSelector(UsbDeviceClass) |
获取高级查询语法 (AQS) 字符串,应用可以传递给 DeviceInformation.FindAllAsync 以查找特定类型的 USB 设备。 |
GetDeviceSelector(Guid) |
根据应用指定的设备接口 GUID 标识符,获取 AQS) 字符串 (高级查询语法。 应用将字符串传递给 DeviceInformation.FindAllAsync ,以便查找特定类型的 USB 设备。 |
GetDeviceSelector(UInt32, UInt32) |
根据应用指定的供应商和产品标识符,获取 (AQS) 字符串的高级查询语法。 应用将字符串传递给 DeviceInformation.FindAllAsync ,以便查找特定类型的 USB 设备。 |
GetDeviceSelector(UInt32, UInt32, Guid) |
根据应用指定的供应商、产品和设备接口 GUID 标识符,获取 (AQS) 字符串的高级查询语法。 应用将字符串传递给 DeviceInformation.FindAllAsync ,以便查找特定类型的 USB 设备。 |
SendControlInTransferAsync(UsbSetupPacket) |
启动从设备的默认控制终结点读取数据的零长度 USB 控制传输。 |
SendControlInTransferAsync(UsbSetupPacket, IBuffer) |
启动 USB 控制传输,以从设备的默认控制终结点接收数据。 |
SendControlOutTransferAsync(UsbSetupPacket) |
启动写入设备的默认控制终结点的零长度 USB 控制传输。 |
SendControlOutTransferAsync(UsbSetupPacket, IBuffer) |
启动 USB 控制传输,将数据发送到设备的默认控制终结点。 |