Compartilhar via


Driver serial USB (Usbser.sys)

Importante

Este tópico é para programadores. Se você for um cliente com problemas de USB, consulte Corrigir problemas de USB-C no Windows

Use o driver USB fornecido pela Microsoft (Usbser.sys) para suas comunicações e dispositivo de controle CDC. A Microsoft incentiva você a usar os drivers incluídos no Windows sempre que possível.

Versões com suporte

  • Windows 11
  • Windows 10

Aplicável ao

  • Fabricantes de dispositivos de controle CDC

No Windows 10, o driver foi reescrito usando o Kernel-Mode Driver Framework, melhorando a estabilidade geral do driver.

  • Plug and Play aprimorado e gerenciamento de energia pelo driver.
  • Adição de recursos de gerenciamento de energia, como Suspensão Seletiva de USB.

Além disso, os aplicativos UWP agora podem usar as APIs fornecidas pelo namespace Windows.Devices.SerialCommunication que permitem que os aplicativos se comuniquem com esses dispositivos.

Instalação do Usbser.sys

Carregue o driver nativo fornecido pela Microsoft (Usbser.sys) para suas comunicações e dispositivo de controle CDC.

Observação

Se você estiver tentando instalar um driver de classe de dispositivo USB incluído no Windows, não precisará baixar o driver. Ele é instalado automaticamente. Se não for instalado automaticamente, entre em contato com o fabricante do dispositivo. Para obter a lista de drivers de classe de dispositivo USB incluídos no Windows, consulte Drivers de classe de dispositivo USB incluídos no Windows.

A partir do Windows 10, o Usbser.inf foi adicionado ao diretório %Systemroot%\INF, que carrega o Usbser.sys como o FDO (objeto de dispositivo funcional) na pilha de dispositivos. Se o dispositivo pertencer à classe de dispositivo de controle de comunicações e CDC, o Usbser.sys será carregado automaticamente. Você não precisa escrever seu próprio INF para fazer referência ao driver. O driver é carregado com base em uma correspondência de ID compatível semelhante a outros drivers de classe de dispositivo USB incluídos no Windows.

USB\Class_02

USB\Class_02&SubClass_02

  • Se você quiser carregar o Usbser.sys automaticamente, defina o código de classe como 02 e o código de subclasse como 02 no Descritor de Dispositivo. Com essa abordagem, você não precisa distribuir arquivos INF para seu dispositivo porque o sistema usa o Usbser.inf. Para obter mais informações, consulte Definições de classe para dispositivos de comunicação 1.2.

  • Se o dispositivo especificar o código de classe 02, mas um valor de código de subclasse diferente de 02, o Usbser.sys não será carregado automaticamente. O gerenciador Plug and Play tenta encontrar um driver. Se um driver adequado não for encontrado, o dispositivo pode não ter um driver carregado. Talvez seja necessário carregar seu próprio driver ou escrever um INF que faça referência a outro driver nativo.

  • Se o dispositivo especificar códigos de classe e subclasse como 02 e você quiser carregar outro driver em vez de Usbser.sys, será necessário escrever um INF que especifique o ID de hardware do dispositivo e o driver a ser instalado. Para obter exemplos, examine os arquivos INF incluídos nos drivers de exemplo e encontre dispositivos semelhantes ao seu dispositivo. Para obter informações sobre seções INF, consulte Visão geral de arquivos INF.

Configurar a suspensão seletiva para Usbser.sys

A partir do Windows 10, o Usbser.sys dá suporte à Suspensão Seletiva USB. Ele permite que o dispositivo USB para serial conectado entre em um estado de baixa energia quando não estiver em uso, enquanto o sistema permanece no estado S0. Quando a comunicação com o dispositivo é retomada, o dispositivo pode sair do estado de suspensão e retomar o estado de trabalho. O recurso está desabilitado por padrão e pode ser habilitado e configurado definindo a entrada IdleUsbSelectiveSuspendPolicy nesta chave de registro:

HKEY\LOCAL\MACHINE\SYSTEM\CurrentControlSet\Enum\USB\<hardware id>\<instance id>\Device Parameters

Para configurar os recursos de gerenciamento de energia do Usbser.sys, você pode definir IdleUsbSelectiveSuspendPolicy como:

  • "0x00000001": entra na suspensão seletiva quando ocioso, ou seja, quando não há transferências de dados ativas de ou para o dispositivo.

  • "0x00000000": entra na suspensão seletiva somente quando não há identificadores abertos para o dispositivo.

Essa entrada pode ser adicionada de duas maneiras:

  • Escreva um INF que faça referência ao INF de instalação e adicione a entrada do registro na seção HW.AddReg.

  • Descreva a entrada do registro em um descritor de recursos do sistema operacional de propriedades estendidas. Adicione uma seção de propriedade personalizada que define o campo bPropertyName como uma cadeia de caracteres Unicode, "IdleUsbSelectiveSuspendPolicy", e wPropertyNameLength como 62 bytes. Defina o campo bPropertyData como "0x00000001" ou "0x00000000". Os valores de propriedade são armazenados como inteiros little-endian de 32 bits.

    Para obter mais informações, consulte Descritores do sistema operacional da Microsoft.

Desenvolver aplicativos do Windows para um dispositivo USB CDC

A partir do Windows 10, um aplicativo do Windows pode enviar solicitações para o Usbser.sys usando o namespace Windows.Devices.SerialCommunication. Ele define classes do Windows Runtime que podem ser usadas para se comunicar com um dispositivo USB CDC por meio de uma porta serial ou alguma abstração de uma porta serial. As classes fornecem funcionalidade para descobrir esse dispositivo serial, ler e gravar dados e controlar propriedades específicas de série para controle de fluxo, como definir a taxa de transmissão, estados de sinal.