Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
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:
aplicativo UWP para um dispositivo USB
O Windows 8.1 fornece o namespace Windows.Devices.USB , que não pode ser usado em versões anteriores do Windows. Para outros recursos da Microsoft Store, consulte a documentação da Plataforma Universal do Windows.
#B0 aplicação de ambiente de trabalho do Windows para um dispositivo USB #C1
Antes do Windows 8.1, as aplicações que comunicavam através Winusb.sys, eram aplicações de ambiente de trabalho escritas utilizando funções WinUSB. No Windows 8.1, o conjunto de APIs foi estendido. Para obter mais informações sobre o desenvolvimento de aplicativos do Windows, consulte Desenvolver para Windows.
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 00name:activeSync, classId:ef 01 01name:palmSync, classId:ef 01 02name:deviceFirmwareUpdate, classId:fe 01 01name:irda, classId:fe 02 00name: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 |