Compartilhar 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 você 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 um OEM ou um IHV (fornecedor de hardware independente), você pode criar seu dispositivo para que o Winusb.sys seja instalado automaticamente. Esse dispositivo é chamado de dispositivo WinUSB e não exige que você escreva um arquivo INF personalizado que faça referência ao Winusb.inf na caixa.

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

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

Instalação do WinUSB especificando a classe de dispositivo fornecida pelo sistema

Ao conectar seu dispositivo, você pode notar que o Windows carrega Winusb.sys automaticamente. Caso contrário, siga estas instruções para carregar o driver:

  1. Conecte o dispositivo ao sistema host.
  2. Abra o Gerenciador 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 o software de driver no computador.
  5. Selecione Permitir que eu escolha em uma lista de drivers de dispositivo no meu computador.
  6. Na lista de classes de dispositivo, selecione Dispositivos de Barramento Serial Universal.
  7. O assistente exibe o Dispositivo WinUSB. 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 de interface do dispositivo para um aplicativo (aplicativo UWP ou aplicativo da área de trabalho do Windows) para acessar o dispositivo. É necessário adicionar o GUID manualmente seguindo este procedimento.

  1. Carregue o driver conforme descrito no procedimento anterior.

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

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

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

  4. Na chave Parâmetros do Dispositivo , adicione uma entrada de registro de cadeia de caracteres chamada DeviceInterfaceGUID ou uma entrada de váriascadeias de caracteres chamada DeviceInterfaceGUIDs. Defina o valor como 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 de 1 a 4.

Como criar um INF personalizado para instalação do WinUSB

Como parte do pacote de driver, você precisa fornecer um arquivo .inf que instala o 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, o que o torna qualificado para assinatura pelo portal do Painel do Centro de Desenvolvedores de Hardware.

;
; 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 está qualificado para ser assinado pelo portal do Painel do Centro de Desenvolvedores de Hardware .

Para instalar apenas uma nova classe de configuração de dispositivo personalizada, inclua uma seção ClassInstall32 em um arquivo INF do 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 valores específicos do dispositivo e alguns problemas observados na lista a seguir, você pode usar estas seções e diretivas para instalar o WinUSB para qualquer dispositivo USB. Esses itens de lista descrevem as inclusões e as Diretivas no arquivo .inf anterior.

  • USB_Install: as diretivas Incluir e Necessidades na seção USB_Install são obrigatórias para a instalação do WinUSB. Você não deve modificar essas diretivas.

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

  • USB_Install.HW: esta seção é a chave no arquivo .inf. Ela especifica o GUID (identificador global exclusivo) da interface do dispositivo. A diretiva AddReg define o GUID de interface especificado no valor do Registro padrão. Quando Winusb.sys é carregado como o driver de função do dispositivo, ele lê a chave DeviceInterfaceGUIDs de valor do Registro 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 dispositivo. Se os protocolos do dispositivo forem alterados, crie um GUID de interface de dispositivo.

    Observação

    O software no 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 do dispositivo que o software de modo de usuário deve transmitir para a rotina WinUsb_Initialize a fim de 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 do WinUSB.

Cada vez que o Winusb.sys é carregado, 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 instale o Winusb.sys

Para usar o WinUSB como o driver de função do dispositivo, crie um pacote de driver. Estas são as etapas para criar um pacote de driver que instala Winusb.sys:

  1. Baixe o WDK (Windows Driver Kit) e instale-o em seu computador.

  2. Crie uma pasta de pacote de driver em seu sistema em que 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 gravar esse arquivo pode ser encontrado na seção Escrever um INF personalizado para a instalação do WinUSB deste documento.

  4. Crie um arquivo de catálogo assinado para o pacote. Esse arquivo é necessário para instalar o WinUSB no Windows. Você pode encontrar mais informações sobre como criar e testar arquivos de catálogo assinados em Kernel-Mode Passo a passo de assinatura de código no site do Centro de Desenvolvimento do Windows – Hardware.

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

  5. Conecte o dispositivo USB ao seu computador.

  6. Abra o Gerenciador de Dispositivos no computador. Siga as instruções no assistente para Atualizar Software de Driver e escolha a instalação manual. Quando solicitado, forneça o local da pasta do pacote de driver para concluir a instalação.