Partilhar via


Introdução ao WinUSB para desenvolvedores

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

Principais benefícios do uso do WinUSB

  • Desenvolvimento simplificado

    • Facilidade de uso: WinUSB abstrai grande parte da complexidade envolvida na comunicação USB, o que torna mais fácil para você interagir com dispositivos USB.
    • Nenhum driver personalizado necessário: Para muitos dispositivos USB, WinUSB pode ser usado diretamente, o que elimina a necessidade de escrever e manter um driver personalizado.
  • Compatibilidade entre plataformas

    • Interface padronizada: WinUSB fornece uma interface padronizada para comunicação USB, que pode ajudar a garantir a compatibilidade entre diferentes versões do Windows.
  • Eficiência de tempo e custos

    • Tempo de desenvolvimento reduzido: Usar WinUSB pode reduzir significativamente o tempo necessário para desenvolver e testar um driver USB.
    • Custos de manutenção mais baixos: Como a Microsoft mantém o WinUSB, você pode confiar que ele seja atualizado e suportado, o que reduz os custos de manutenção a longo prazo.
  • Acesso a funcionalidades USB

    • Funcionalidade USB completa: WinUSB suporta 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 WinUSB

  • 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.
  • Configuração do dispositivo

    • Definição de configuração: Selecione configurações, interfaces e configurações alternativas para configurar o dispositivo USB.
    • Gerenciamento de endpoints: gerencie endpoints para transferência de dados.
  • Enumeração de dispositivos

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

    • Aplicativos de modo de usuário: desenvolva aplicativos de 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.
  • Teste e depuração

    • Prototipagem: Prototipagem rápida da comunicação com dispositivos USB para verificar a funcionalidade do hardware.
    • Depuração: Use WinUSB para depurar problemas de comunicação entre o host e o dispositivo USB.

Componentes do WinUSB

WinUSB inclui:

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

Por padrão, winusb.sys é instalado na stack de modo kernel do dispositivo como um driver de filtro elevado. Os aplicativos se comunicam com o driver de função UMDF (User-Mode Driver Framework) do dispositivo para emitir solicitações de leitura, gravação ou controle de E/S do dispositivo. Nesta configuração, winusb.sys serve como o responsável pelo Plug and Play e pela gestão de energia da pilha de dispositivos. Você também pode instalar winusb.sys como o driver de função para um dispositivo USB.

Introdução ao WinUSB

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

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

Ele também inclui exemplos de código detalhados que mostram como aplicativos e dispositivos USB se comunicam.

Observação

WinUSB suporta transferências isócronas a partir do Windows 8.