Partilhar via


Visão geral do desenvolvimento de aplicativos do Windows para dispositivos USB

Sumário:

  • Diretrizes para escolher o modelo de programação certo
  • Experiência do desenvolvedor de aplicativos UWP e aplicativos de desktop

APIs importantes:

Este artigo fornece diretrizes para decidir se você deve escrever um aplicativo UWP ou um aplicativo da área de trabalho do Windows para se comunicar com um dispositivo USB.

O Windows fornece conjuntos de API que você pode usar para escrever aplicativos que conversam com dispositivos USB personalizados. A API executa tarefas comuns relacionadas com USB, tais como, encontrar o dispositivo, transferências de dados.

Dispositivo personalizado, neste contexto, refere-se a um dispositivo para o qual a Microsoft não fornece um driver de classe incluído. Em vez disso, você pode instalar WinUSB (Winusb.sys) como o driver de dispositivo.

Escolher um modelo de programação

Se você instalar Winusb.sys, aqui estão as opções de modelo de programação:

A estratégia para escolher o melhor modelo de programação depende de vários fatores.

  • Seu aplicativo se comunicará com um dispositivo USB interno?

    As APIs são projetadas principalmente para acessar dispositivos periféricos. A API também pode acessar dispositivos USB internos do PC. No entanto, o acesso a dispositivos USB internos do PC a partir de um aplicativo UWP é limitado a um aplicativo privilegiado que é explicitamente declarado nos metadados do dispositivo pelo OEM desse PC.

  • A sua aplicação irá comunicar-se com endereços finais isócronos USB?

    Se a sua aplicação transmitir dados de ou para pontos de extremidade isócronos do dispositivo, tem de escrever uma aplicação de ambiente de trabalho do Windows. No Windows 8.1, novas funções WinUSB foram adicionadas ao conjunto de APIs que permite que um aplicativo da área de trabalho envie e receba dados de pontos de extremidade isócronos.

  • Seu aplicativo é um tipo de aplicativo de "painel de controle"?

    Os aplicativos UWP são aplicativos por usuário e não têm a capacidade de fazer alterações fora do escopo de cada aplicativo. Para esses tipos de aplicativos, você deve escrever um aplicativo da área de trabalho do Windows.

  • A classe de dispositivo USB é suportada por classes de aplicativos UWP?

    Escreva um aplicativo UWP se o seu dispositivo pertencer a uma dessas classes de dispositivo.

    • 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 * *

    Observação

    Se o dispositivo pertencer à classe DeviceFirmwareUpdate, seu aplicativo deverá ser um aplicativo privilegiado.

Se o seu dispositivo não pertencer a uma das classes de dispositivo anteriores, escreva uma aplicação de ambiente de trabalho do Windows.

Requisitos do condutor

Requisitos do condutor Aplicativo UWP Aplicação de ambiente de trabalho do Windows
Driver de função Winusb.sys fornecido pela Microsoft (driver de modo kernel). Winusb.sys fornecido pela Microsoft (driver de modo kernel).
Driver de filtro Se houver drivers de filtro, o acesso será limitado a aplicações privilegiadas. O aplicativo é declarado como aplicativos privilegiados nos metadados do dispositivo pelo OEM. O driver de filtro pode estar presente na pilha de dispositivos em modo kernel, desde que não bloqueie o acesso a Winusb.sys.

Exemplos de código

Exemplo Aplicativo UWP Aplicação de ambiente de trabalho do Windows
Comece com estes exemplos

Ferramentas de desenvolvimento

Ferramentas de desenvolvimento Aplicativo UWP Aplicação de ambiente de trabalho do Windows
Ambiente de programador Microsoft Visual Studio 2013

Microsoft Windows Software Development Kit (SDK) para Windows 8.1
Use o modelo Aplicativo WinUSB incluído no Visual Studio (Ultimate ou Professional) e no Kit de Driver do Windows (WDK) 8 ou posterior.

Para transferências isócronas, Visual Studio 2013 com Windows Driver Kit (WDK) 8.1 ou posterior.
Linguagens de programação C#, VB.NET, C++, JavaScript C/C++

Implementação de funcionalidades

Cenário-chave Aplicativo UWP Aplicação de ambiente de trabalho do Windows
Descoberta de dispositivos Utilize o namespace Windows.Devices.Enumeration para obter um UsbDevice. Use SetupAPI e WinUsb_Initialize para obter um WINUSB_INTERFACE_HANDLE.
Transferência de controle USB UsbSetupPacket
UsbControlRequestType
UsbDevice.SendControlInTransferAsync
UsbDevice.SendControlOutTransferAsync
WINUSB_SETUP_PACKET
WinUsb_ControlTransfer
Obter descritores USB UsbDevice.DeviceDescritor
UsbConfiguration.Descritores
UsbInterface.Descritores
UsbEndpointDescritor
WinUsb_GetDescriptor
Envio de transferência USB em massa UsbBulkInPipe
UsbBulkOutPipe
WinUsb_ReadPipe
WinUsb_WritePipe
Envio de transferência USB por interrupção UsbInterruptInPipe
UsbInterruptOutPipe
WinUsb_ReadPipe
WinUsb_WritePipe
Envio de transferência isócrona USB Não suportado. WinUsb_ReadIsochPipe
WinUsb_ReadIsochPipeAsap
WinUsb_WriteIsochPipe
WinUsb_WriteIsochPipeAsap
Fechar o dispositivo UsbDevice.Fechar WinUsb_Free

Documentação

Documentação Aplicativo UWP Aplicação de ambiente de trabalho do Windows
Guia de programação Interação com dispositivos USB, do início ao fim Como acessar um dispositivo USB usando funções WinUSB
Referência da API Windows.Devices.Usb Funções WinUSB