Compartilhar via


Introdução ao WinUSB para desenvolvedores

Como desenvolvedor de driver, entender o WinUSB (USB do Windows) pode simplificar significativamente seu processo de desenvolvimento, especialmente ao trabalhar com dispositivos USB. WinUSB é um driver genérico incluído no Windows que permite que você se comunique com dispositivos USB sem a necessidade de escrever um driver personalizado. Isso pode economizar tempo, reduzir a complexidade e garantir a compatibilidade entre diferentes versões do Windows.

Principais benefícios do uso do WinUSB

  1. Desenvolvimento simplificado:

    • Facilidade de uso: o WinUSB abstrai grande parte da complexidade envolvida na comunicação USB, facilitando a interação com dispositivos USB.
    • Nenhum driver personalizado necessário: Para muitos dispositivos USB, o WinUSB pode ser usado diretamente, eliminando a necessidade de escrever e manter um driver personalizado.
  2. Compatibilidade entre plataformas:

    • Interface padronizada: O WinUSB fornece uma interface padronizada para comunicação USB, o que pode ser benéfico para garantir a compatibilidade entre diferentes versões do Windows.
  3. Eficiência de tempo e custo:

    • Tempo de desenvolvimento reduzido: o uso do WinUSB pode reduzir significativamente o tempo necessário para desenvolver e testar um driver USB.
    • Custos de manutenção mais baixos: Como o WinUSB é mantido pela Microsoft, você pode contar com a atualização e o suporte, reduzindo os custos de manutenção a longo prazo.
  4. Acesso a recursos USB:

    • Funcionalidade USB completa: O WinUSB oferece suporte a uma ampla gama de recursos USB, incluindo transferências em massa, transferências de controle, transferências de interrupção e transferências isócronas.

O que você pode realizar com o WinUSB

  1. Comunicação do dispositivo:

    • Transferência de dados: Envie e receba dados de e para um dispositivo USB usando transferências em massa, controle, interrupção ou isócronas.
    • Solicitações de controle: envie solicitações de controle para configurar o dispositivo ou recuperar informações.
  2. Configuração do dispositivo:

    • Configuração de configuração: Configure o dispositivo USB selecionando configurações, interfaces e configurações alternativas.
    • Gerenciamento de endpoint: gerencie endpoints para transferência de dados.
  3. Enumeração de dispositivo:

    • Identificação do dispositivo: enumere e identifique dispositivos USB conectados ao sistema.
    • Recuperação do descritor: recupere descritores de dispositivo, descritores de configuração, descritores de interface e descritores de ponto de extremidade.
  4. Aplicações personalizadas:

    • Aplicativos no modo de usuário: desenvolva aplicativos no modo de usuário que se comunicam com dispositivos USB usando a API WinUSB.
    • Atualizações de firmware: implemente mecanismos de atualização de firmware para dispositivos USB.
  5. Teste e depuração:

    • Prototipagem: crie rapidamente protótipos de comunicação de dispositivos USB para testar a funcionalidade do hardware.
    • Depuração: use o WinUSB para depurar problemas de comunicação entre o host e o dispositivo USB.

Componentes do WinUSB

O WinUSB inclui:

  • Um driver de modo kernel (winusb.sys)
  • Uma biblioteca de vínculo dinâmico (winusb.dll) no modo de usuário que expõe as funções WinUSB descritas em winusb.h. Você pode usar essas funções para gerenciar dispositivos USB com software no modo de usuário.

Por padrão, winusb.sys é instalado na pilha do modo kernel do dispositivo como um driver de filtro superior. Os aplicativos se comunicam com o driver de função UMDF do dispositivo para emitir solicitações de controle de E/S de leitura, gravação ou dispositivo. Nessa configuração, winusb.sys serve como Plug and Play da pilha de dispositivos e proprietário de energia. Você também pode instalar winusb.sys como driver de função para um dispositivo USB.

Introdução ao WinUSB

Esta seção inclui informações sobre:

  • Selecionar o driver correto para um dispositivo
  • Usar o WinUSB para se comunicar com dispositivos USB
  • Instalando o winusb.sys como o driver de função para um dispositivo USB

Você também encontrará exemplos de código detalhados que mostram como aplicativos e dispositivos USB se comunicam.

Observação

O WinUSB dá suporte a transferências isócronas a partir do Windows 8.