Windows.Devices.Usb Namespace

Esse namespace define Windows Runtime classes que um aplicativo UWP pode usar para se comunicar com dispositivos WinUSB. Esses dispositivos são manipulados pelo driver de caixa de entrada winusb.sys e são identificados por um Descritor de SO da Microsoft específico.

Um dispositivo WinUSB válido terá uma ID compatível de USB\MS_COMP_WINUSB

IDs compatíveis do Gerenciador de Dispositivos para o dispositivo WinUSB do SuperMUTT

Suporte ao dispositivo

Esse namespace dá suporte à maioria dos dispositivos WinUSB. No entanto, ele não fornece acesso a dispositivos USB com classes de dispositivo do seguinte:

  • Áudio (0x01)
  • HID (0x03)
  • Imagem (0x06)
  • Impressora (0x07)
  • Armazenamento em massa (0x08)
  • Cartão Inteligente (0x0B)
  • Áudio/Vídeo (0x10)
  • Controlador sem fio (0xE0)

Funcionalidades do dispositivo USB

Um aplicativo UWP que acessa um dispositivo USB deve incluir dados de funcionalidade de dispositivo específicos no nó de funcionalidades de seu manifesto. Esses dados identificam o dispositivo e sua finalidade (ou função). Observe que alguns dispositivos podem ter várias funções.

Desde Windows 10, versão 1809 (Atualização de outubro de 2018)

<DeviceCapability Name="usb"/>

Antes de Windows 10, versão 1809 (Atualização de outubro de 2018)

Desde 1809, o ProductId vendorId/ e o tipo de função não precisam mais ser especificados e serão ignorados em sistemas mais recentes. Se estiver direcionando sistemas abaixo de 1809, consulte recursos de dispositivo USB herdados.

Solução de problemas

  • Verifique se a funcionalidade USB (usb) está no manifesto do aplicativo.
  • Verifique se o usuário concedeu permissão para o aplicativo utilizar dispositivos USB.
  • Valide se o tipo de dispositivo não é designado como inacessível.
  • Os dispositivos internos do computador (DEVPKEY_Device_InLocalMachineContainer == TRUE) geralmente não são acessíveis, a menos que sejam executados em um SKU com o modo elowLevelDevices a funcionalidade inseridos.
  • Os dispositivos com pilhas que contêm drivers de filtro superior/inferior geralmente não são acessíveis. Às vezes, eles são adicionados por terceiros para habilitar funcionalidades adicionais para hardware personalizado.
    • A restrição do dispositivo é parcialmente determinada por winusb.sys durante a enumeração do dispositivo, que pode definir a propriedade DEVPKEY_DeviceInterface_Restricted de interface do dispositivo como TRUE na Interface GUID_DEVINTERFACE_WINUSB_WINRT do Dispositivo WinUSB com base na presença de filtros de dispositivo/classe.
    • A presença de drivers UpperFilter/LowerFilter do dispositivo pode ser determinada usando DeviceManager procurando UpperFilters propriedades e LowerFilters .
    • A presença dos drivers UpperFilter/LowerFilter da classe WinUSB pode ser determinada usando DeviceManager procurando Class upper filters propriedades e Class lower filters .
    • As propriedades da Interface do Dispositivo podem ser inspecionadas chamando CM_Get_Device_Interface_Property onde pszDeviceInterface é a mesma cadeia de caracteres que seria passada para FromIdAsync.
  • Essas restrições podem ser ignoradas ao criar um dispositivo personalizado trabalhando com o driver-desenvolvedor para criar um aplicativo de suporte de hardware

Classes

UsbBulkInEndpointDescriptor

O descritor de ponto de extremidade para um ponto de extremidade USB em massa no ponto de extremidade. O descritor especifica o tipo de ponto de extremidade, a direção, o número e também o número máximo de bytes que podem ser lidos do ponto de extremidade, em uma única transferência.

UsbBulkInPipe

Representa o pipe que o driver USB subjacente abre para se comunicar com um ponto de extremidade USB em massa NO do dispositivo. O aplicativo pode obter um fluxo de entrada do pipe e os dados de acesso estão sendo lidos do ponto de extremidade.

UsbBulkOutEndpointDescriptor

O descritor de ponto de extremidade para um ponto de extremidade USB bulk OUT. O descritor especifica o tipo de ponto de extremidade, a direção, o número e também o número máximo de bytes que podem ser gravados no ponto de extremidade, em uma única transferência.

UsbBulkOutPipe

Representa o pipe que o driver USB subjacente abre para se comunicar com um ponto de extremidade USB bulk OUT do dispositivo. O objeto fornece acesso a um fluxo de saída no qual o aplicativo pode gravar dados para enviar para o ponto de extremidade.

UsbConfiguration

Fornece informações sobre uma configuração USB, seus descritores e as interfaces definidas dentro dessa configuração. Para obter uma explicação de uma configuração USB, consulte Seção 9.6.3 na especificação do Barramento Serial Universal (USB).

UsbConfigurationDescriptor

Deriva informações dos primeiros 9 bytes de um descritor de configuração USB. As informações incluem os recursos de energia do dispositivo quando a configuração estiver ativa e o número de interfaces incluídas nessa configuração. Para obter uma explicação de um descritor de configuração, Seção 9.6.3 Especificação universal do barramento serial. Para obter informações sobre campos de descritor, consulte:

  • Tabela 9.15 na Especificação universal do Barramento Serial 3.0
  • Tabela 9.10 na Especificação universal do barramento serial (versão 2.0)
UsbControlRequestType

Fornece informações sobre a transferência de controle USB, o tipo de solicitação de controle, se os dados são enviados de ou para o host e o destinatário da solicitação no dispositivo.

UsbDescriptor

Fornece informações sobre o tipo de descritor, seu tamanho (em bytes) e obtém os dados do descritor.

UsbDevice

Representa um dispositivo USB. O objeto fornece métodos e propriedades que um aplicativo pode usar para enumerar dispositivos WinUSB e enviar transferências de controle IN e OUT.

UsbDeviceClass

Fornece uma maneira de o aplicativo obter uma cadeia de caracteres AQS (Sintaxe de Consulta Avançada) especificando o código de classe, o código de subclasse e o código de protocolo definido pelo dispositivo. As propriedades nessa classe são passadas na chamada para GetDeviceClassSelector.

UsbDeviceClasses

Fornece uma maneira de recuperar um objeto UsbDeviceClass com base na classe de dispositivo USB de um dispositivo. As propriedades definidas nessa classe representam as classes de dispositivo USB com suporte e retornam objetos UsbDeviceClass .

Para obter informações sobre classes de dispositivo USB, consulte o site usb oficial para documentos de especificação de classe aprovados.

UsbDeviceDescriptor

Deriva informações do descritor de dispositivo USB do dispositivo. Para obter uma explicação do descritor do dispositivo, consulte Tabela 9.8 na Especificação universal do barramento serial.

UsbEndpointDescriptor

Deriva informações do descritor de ponto de extremidade USB do ponto de extremidade, como tipo, direção e número do ponto de extremidade. Esse objeto também obtém os descritores de ponto de extremidade específicos com base no tipo de ponto de extremidade. Para obter uma explicação de um descritor de ponto de extremidade, consulte a Seção 9.6.5 na Especificação universal do barramento serial:

  • Tabela 9.18 na Especificação universal do Barramento Serial 3.0
  • Tabela 9.13 na Especificação universal do barramento serial (versão 2.0)
UsbInterface

Fornece informações sobre a interface USB, incluindo seus pontos de extremidade, o número de configurações alternativas compatíveis com a interface e obtém todo o descritor definido para essas configurações. Ele também obtém pipes associados aos pontos de extremidade aos quais a interface dá suporte.

UsbInterfaceDescriptor

Descreve uma configuração alternativa USB (de uma interface) em um descritor de interface. Para obter uma explicação de um descritor de interface, consulte Seção 9.6.5 na Especificação universal do barramento serial:

  • Tabela 9.15 na Especificação universal do Barramento Serial 3.0
  • Tabela 9.12 na Especificação universal do barramento serial (versão 2.0)
UsbInterfaceSetting

Fornece informações sobre uma configuração alternativa e selecione essa configuração. O aplicativo pode obter os descritores da interface USB para a configuração e seus pontos de extremidade e determinar se essa configuração está selecionada no momento.

UsbInterruptInEndpointDescriptor

O descritor de ponto de extremidade para uma interrupção USB no ponto de extremidade. O descritor especifica o tipo de ponto de extremidade, a direção, o número e também o número máximo de bytes que podem ser lidos do ponto de extremidade, em uma única transferência. O aplicativo também pode obter informações sobre a frequência com que o host sonda o ponto de extremidade em busca de dados.

UsbInterruptInEventArgs

Representa o objeto que é passado como um parâmetro para o manipulador de eventos do evento DataReceived .

UsbInterruptInPipe

Representa o pipe que o driver USB subjacente abre para se comunicar com uma interrupção USB no ponto de extremidade do dispositivo. O objeto também permite que o aplicativo especifique um manipulador de eventos. Esse manipulador que é invocado quando os dados são lidos do ponto de extremidade.

UsbInterruptOutEndpointDescriptor

O descritor de ponto de extremidade para um ponto de extremidade DE SAÍDA de interrupção USB. O descritor especifica o tipo de ponto de extremidade, a direção, o número e também o número máximo de bytes que podem ser gravados no ponto de extremidade, em uma única transferência. O aplicativo também pode obter informações sobre a frequência com que o host sonda o ponto de extremidade para enviar dados.

UsbInterruptOutPipe

Representa o pipe que o driver USB subjacente abre para se comunicar com um ponto de extremidade DE SAÍDA de interrupção USB do dispositivo. O objeto fornece acesso a um fluxo de saída no qual o aplicativo pode gravar dados para enviar para o ponto de extremidade.

UsbSetupPacket

Descreve o pacote de instalação de uma transferência de controle USB. Para obter uma explicação do pacote de instalação, consulte Tabela 9.2 na especificação do Barramento Serial Universal (USB).

Enumerações

UsbControlRecipient

Define constantes que indicam o destinatário de uma transferência de controle USB. O destinatário é definido no pacote de instalação da solicitação de controle. Confira a Tabela 9.2 da seção 9.3 da especificação do Barramento Serial Universal (USB) (www.usb.org).

UsbControlTransferType

Define constantes que indicam o tipo de transferência de controle USB: padrão, classe ou fornecedor.

UsbEndpointType

Define constantes que indicam o tipo de ponto de extremidade USB: controle, massa, isócrono ou interrupção.

UsbReadOptions

Define constantes para sinalizadores de configuração que podem ser definidos para um pipe USB que o host abre para um ponto de extremidade USB bulk IN.

UsbTransferDirection

Define constantes que indicam a direção da transferência USB: transferências IN ou OUT.

UsbWriteOptions

Define constantes para sinalizadores de configuração que podem ser definidos para um pipe USB que o host abre para um ponto de extremidade USB OUT.

Confira também