Поделиться через


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)

Примеры

В этом примере кода показано, как получить объект 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 необходимо иметь один из следующих идентификаторов:

  • Идентификаторы поставщика и продукта для физического устройства. Эти идентификаторы являются частью строки идентификатора оборудования. Кроме того, идентификаторы можно получить от свойства Hardware Ids в диспетчер устройств. Например, если идентификатор оборудования имеет значение USB\VID_045E&PID_078E, идентификатор поставщика — , 0x045E а идентификатор продукта — 0x078E.
  • GUID интерфейса устройства. Этот GUID можно получить из записи реестра DeviceInterfaceGuids в разделе: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Enum\USB\<Device Identifier>\<Instance Identifier>\Device Parameters
  • Коды класса, подкласса и протокола устройства. Эти сведения можно получить из записи реестра CompatibleIds , которая находится в разделе Параметры устройства .

Чтобы получить объект UsbDevice, выполните следующие действия:

  1. Получите строку расширенного синтаксиса запросов (AQS), содержащую условия поиска для поиска устройства в перечисленной коллекции устройств. Если вы хотите выполнить поиск по идентификатору поставщика или идентификатору продукта или 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. Вызовите Метод FromIdAsync , передав строку экземпляра устройства и получите объект UsbDevice. Затем можно использовать объект UsbDevice для выполнения других операций, таких как отправка передачи элементов управления. Когда приложение завершит работу с объектом UsbDevice, оно должно освободить его, вызвав close.

Свойства

Configuration

Возвращает объект , представляющий конфигурацию USB, включая все интерфейсы и их конечные точки.

DefaultInterface

Возвращает объект , представляющий интерфейс по умолчанию или первый интерфейс в конфигурации USB.

DeviceDescriptor

Возвращает объект , представляющий дескриптор USB-устройства.

Методы

Close()

Освобождает ссылку на объект UsbDevice , который ранее был получен путем вызова Метода FromIdAsync.

Dispose()

Выполняет определяемые приложением задачи, связанные с удалением, высвобождением или сбросом неуправляемых ресурсов.

FromIdAsync(String)

Запускает асинхронную операцию, которая создает объект UsbDevice .

GetDeviceClassSelector(UsbDeviceClass)

Возвращает строку расширенного синтаксиса запросов (AQS), которую приложение может передать в DeviceInformation.FindAllAsync для поиска определенного типа USB-устройства.

GetDeviceSelector(Guid)

Возвращает строку расширенного синтаксиса запросов (AQS) на основе идентификатора GUID интерфейса устройства, указанного приложением. Приложение передает строку в DeviceInformation.FindAllAsync , чтобы найти определенный тип USB-устройства.

GetDeviceSelector(UInt32, UInt32)

Возвращает строку расширенного синтаксиса запросов (AQS), основанную на идентификаторах поставщика и продукта, указанных приложением. Приложение передает строку в DeviceInformation.FindAllAsync , чтобы найти определенный тип USB-устройства.

GetDeviceSelector(UInt32, UInt32, Guid)

Возвращает строку расширенного синтаксиса запросов (AQS), основанную на идентификаторах GUID поставщика, продукта и интерфейса устройства, указанных приложением. Приложение передает строку в DeviceInformation.FindAllAsync , чтобы найти определенный тип USB-устройства.

SendControlInTransferAsync(UsbSetupPacket)

Запускает передачу элементов управления USB нулевой длины, которая считывает данные из конечной точки управления по умолчанию устройства.

SendControlInTransferAsync(UsbSetupPacket, IBuffer)

Запускает передачу элементов управления ЧЕРЕЗ USB для получения данных от конечной точки управления по умолчанию устройства.

SendControlOutTransferAsync(UsbSetupPacket)

Запускает передачу элементов управления usb нулевой длины, которая записывает данные в конечную точку управления по умолчанию устройства.

SendControlOutTransferAsync(UsbSetupPacket, IBuffer)

Запускает передачу элементов управления usb для отправки данных в конечную точку управления по умолчанию устройства.

Применяется к

См. также раздел