Partilhar via


Instalação do WinUSB (Winusb.sys) para desenvolvedores

Para determinados dispositivos USB (Universal Serial Bus), você pode instalar o WinUSB (Winusb.sys) em vez de implementar um driver.

Importante

Este artigo é para programadores. Se for um cliente com problemas de USB, consulte Corrigir problemas de USB-C no Windows

Instalação automática do WinUSB sem um arquivo INF

Como OEM ou fornecedor independente de hardware (IHV), você pode criar seu dispositivo para que o Winusb.sys seja instalado automaticamente. Esse dispositivo é chamado de dispositivo WinUSB e não requer que você escreva um arquivo INF personalizado que faça referência ao Winusb.inf na caixa.

Quando liga um dispositivo WinUSB, o Windows lê as informações do dispositivo e carrega- Winusb.sys automaticamente.

Para obter mais informações, consulte Dispositivo WinUSB.

Instalando o WinUSB especificando a classe de dispositivo fornecida pelo sistema

Quando liga o dispositivo, poderá notar que o Windows carrega Winusb.sys automaticamente. Caso contrário, siga estas instruções para carregar o driver:

  1. Ligue o seu dispositivo ao sistema anfitrião.
  2. Abra o Gestor de Dispositivos e localize o dispositivo.
  3. Clique com o botão direito do mouse no dispositivo e selecione Atualizar software do driver... no menu de contexto.
  4. No assistente, selecione Procurar software de driver no meu computador.
  5. Selecione Deixar-me escolher a partir de uma lista de controladores de dispositivo no meu computador.
  6. Na lista de classes de dispositivos, selecione Dispositivos Universal Serial Bus.
  7. O assistente exibe WinUsb Device. Selecione-o para carregar o driver.

Se os dispositivos Universal Serial Bus não aparecerem na lista de classes de dispositivo, você precisará instalar o driver usando um INF personalizado. O procedimento anterior não adiciona um GUID da interface do dispositivo para um aplicativo (aplicativo UWP ou aplicativo da área de trabalho do Windows) acessar o dispositivo. Você deve adicionar o GUID manualmente seguindo este procedimento.

  1. Carregue o controlador conforme descrito no procedimento anterior.

  2. Gere um GUID de interface de dispositivo para seu dispositivo usando uma ferramenta como guidgen.exe.

  3. Encontre a chave do Registro para o dispositivo sob esta chave:

    <HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB\VID_vvvv&PID_pppp>

  4. Sob a chave Device Parameters , adicione uma entrada do Registro String chamada DeviceInterfaceGUID ou uma entrada Multi-String chamada DeviceInterfaceGUIDs. Defina o valor para o GUID gerado na etapa 2.

  5. Desconecte o dispositivo do sistema e reconecte-o à mesma porta física.

    Observação

    Se você alterar a porta física, deverá repetir as etapas 1 a 4.

Escrevendo um INF personalizado para instalação do WinUSB

Como parte do pacote de driver, você fornece um arquivo .inf que instala Winusb.sys como o driver de função para o dispositivo USB.

Aqui está um exemplo de um arquivo INF universal que é válido para plataformas x64 e ARM64 que executam o Windows 10 ou posterior. Este exemplo não inclui coinstaladores, tornando-o elegível para assinatura pelo portal Hardware Developer Center Dashboard .

;
; Universal INF file for WinUsb installation
;

[Version]
Signature   = "$Windows NT$"
Class       = USBDevice
ClassGUID   = {88BAE032-5A81-49f0-BC3D-A4FF138216D6}
Provider    = %ManufacturerName%
CatalogFile = WinUSBInstallation.cat
DriverVer   = 09/04/2012,13.54.20.543
PnpLockdown = 1

; ========== Manufacturer and Models sections ===========

[Manufacturer]
%ManufacturerName% = Standard,NTamd64,NTarm64

[Standard.NTamd64]
%DeviceName% =USB_Install, USB\VID_0547&PID_1002

[Standard.NTarm64]
%DeviceName% =USB_Install, USB\VID_0547&PID_1002

; =================== Installation ===================

[USB_Install]
Include = winusb.inf
Needs   = WINUSB.NT

[USB_Install.Services]
Include =winusb.inf
Needs   = WINUSB.NT.Services

[USB_Install.HW]
AddReg=Dev_AddReg

[Dev_AddReg]
HKR,,DeviceInterfaceGUIDs,0x10000,"{9f543223-cede-4fa3-b376-a25ce9a30e74}"

; =================== Strings ===================

[Strings]
ManufacturerName="Contoso"
ClassName="Universal Serial Bus devices"
DeviceName="Fx2 Learning Kit Device"
REG_MULTI_SZ = 0x00010000

Esse arquivo INF universal pode ser usado em várias plataformas Windows (x64 e ARM64) e é elegível para ser assinado pelo portal Hardware Developer Center Dashboard .

Para instalar apenas uma nova classe de configuração de dispositivo personalizada, inclua uma seção ClassInstall32 em um arquivo INF de dispositivo. Os arquivos INF para dispositivos em uma classe instalada, seja uma classe de configuração de dispositivo fornecida pelo sistema ou uma classe personalizada, não devem incluir uma seção ClassInstall32.

Exceto para valores específicos do dispositivo e vários problemas observados na lista a seguir, você pode usar essas seções e diretivas para instalar o WinUSB para qualquer dispositivo USB. Esses itens de lista descrevem as inclusões e diretivas no arquivo .inf anterior.

  • USB_Install: As diretivas Incluir e Precisa na seção USB_Install são necessárias para instalar o WinUSB. Você não deve modificar essas diretivas.

  • USB_Install.Services: A diretiva Include na seção USB_Install.Services inclui o .inf fornecido pelo sistema para WinUSB (Winusb.inf). O Windows instala esse arquivo .inf se ele ainda não estiver no sistema de destino. A diretiva Needs especifica a seção dentro Winusb.inf que contém informações necessárias para instalar Winusb.sys como driver de função do dispositivo. Você não deve modificar essas diretivas.

  • USB_Install.HW: Esta seção é a chave no arquivo .inf. Ele especifica o identificador global exclusivo (GUID) da interface do dispositivo para o seu dispositivo. A diretiva AddReg define o GUID da interface especificada em um valor de registro padrão. Quando Winusb.sys é carregado como driver de função do dispositivo, lê o valor da chave do Registo "DeviceInterfaceGUIDs" e usa o GUID especificado para representar a interface do dispositivo. Você deve substituir o GUID neste exemplo por um que você cria especificamente para o seu dispositivo. Se os protocolos para o dispositivo mudarem, crie um novo GUID de interface do dispositivo.

    Observação

    O software de modo de usuário deve chamar SetupDiGetClassDevs para enumerar as interfaces de dispositivo registradas associadas a uma das classes de interface de dispositivo especificadas na chave DeviceInterfaceGUIDs. SetupDiGetClassDevs retorna o identificador de dispositivo para o dispositivo que o software de modo utilizador deve passar para a rotina WinUsb_Initialize para obter um identificador WinUSB para a interface do dispositivo. Para obter mais informações sobre essas rotinas, consulte Como acessar um dispositivo USB usando funções WinUSB.

Cada vez que Winusb.sys carrega, ele registra uma interface de dispositivo que tem as classes de interface de dispositivo especificadas no registro sob a chave DeviceInterfaceGUIDs .

HKR,,DeviceInterfaceGUIDs, 0x10000,"{D696BFEB-1734-417d-8A04-86D01071C512}"

Como criar um pacote de driver que instala o Winusb.sys

Para usar WinUSB como driver de função do dispositivo, você cria um pacote de driver. Aqui estão as etapas para criar um pacote de driver que instala Winusb.sys:

  1. Transfira o Kit de Controladores do Windows (WDK) e instale-o no seu computador.

  2. Crie uma pasta de pacote de driver no seu sistema onde o dispositivo USB está conectado, C:\UsbDevice, por exemplo.

  3. Escreva um arquivo .inf que instale Winusb.sys como o driver de função para o dispositivo USB e salve-o na pasta do pacote de driver. Um exemplo de como escrever este arquivo pode ser encontrado na seção Escrevendo um INF personalizado para instalação WinUSB deste documento.

  4. Crie um arquivo de catálogo assinado para o pacote. Este ficheiro é necessário para instalar o WinUSB no Windows. Você pode encontrar mais informações sobre como criar e testar arquivos de catálogo assinados no Kernel-Mode Guia de Assinatura de Código do Centro de Desenvolvimento do Windows - Hardware.

    Diagrama mostrando o conteúdo de um pacote de instalação do driver WinUSB

  5. Ligue o dispositivo USB ao computador.

  6. Abra o Gestor de Dispositivos no seu computador. Siga as instruções no assistente Atualização de Software do Controlador e opte pela instalação manual. Quando solicitado, forneça o local da pasta do pacote de driver para concluir a instalação.