UsbDevice 类

定义

表示 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
继承
Object Platform::Object IInspectable UsbDevice
属性
实现

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 属性派生标识符。 例如,如果 硬件 IDUSB\VID_045E&PID_078E,则供应商 ID 为 0x045E ,产品 ID 为 0x078E
  • 设备接口 GUID。 可以从 以下的 DeviceInterfaceGuids 注册表项获取该 GUID: HKEY_LOCAL_MACHINE\System\CurrentControlSet\枚举\USB\<设备标识符>\<实例标识符>\设备参数
  • 设备的类、子类和协议代码。 可以从“设备参数”项下的 CompatibleIds 注册表项获取该信息。

获取 UsbDevice 对象:

  1. 获取高级查询语法 (AQS) 字符串,该字符串包含用于在枚举设备集合中查找设备的搜索条件。 如果要按供应商 ID/产品 ID 或设备接口 GUID 进行搜索,请调用 GetDeviceSelector。 如果要按设备类进行搜索,请调用 GetDeviceClassSelector。 这两个调用都检索格式化的 AQS 字符串。
  2. 将检索到的字符串传递到 FindAllAsync。 调用检索 DeviceInformationCollection 对象。
  3. 循环访问集合。 每次迭代都会获取 一个 DeviceInformation 对象。
  4. 获取 DeviceInformation.Id 属性值。 字符串值是设备实例路径。 例如,\\?\USB#VID_045E&PID_078F#6&1b8ff026&0&5#{dee824ef-729b-4a0e-9c14-b7117d33a817}
  5. 通过传递设备实例字符串并获取 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 控制传输,将数据发送到设备的默认控制终结点。

适用于

另请参阅