Partilhar via


Driver serial USB (Usbser.sys)

Importante

Este tópico é para programadores. Se você for um cliente com problemas usb, confira Solucionar problemas comuns de USB

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

Aplica-se a

  • Fabricantes de dispositivos de dispositivos de controle CDC

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

  • Melhor Plug and Play e gerenciamento de energia pelo driver.
  • Adicionados recursos de gerenciamento de energia, como a Suspensão Seletiva USB.

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

instalação do Usbser.sys

Carregue o driver in-box fornecido pela Microsoft (Usbser.sys) para seu dispositivo de controle CDC e comunicações.

Observação

Se você tentar instalar um driver de classe de dispositivo USB incluído no Windows, não precisará baixar o driver. Eles são instalados automaticamente. Se eles não estiverem instalados automaticamente, entre em contato com o fabricante do dispositivo. Para obter a lista de driver de classe de dispositivo USB incluído no Windows, consulte Drivers de classe de dispositivo USB incluídos no Windows.

A partir de Windows 10, Usbser.inf foi adicionado ao diretório %Systemroot%\INF, que carrega Usbser.sys como o FDO (objeto de dispositivo funcional) na pilha do dispositivo. Se o dispositivo pertencer às comunicações e à classe de dispositivo de controle CDC, 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 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 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, Usbser.sys não será carregado automaticamente. O gerente do Plug and Play tenta encontrar um motorista. Se um driver adequado não for encontrado, o dispositivo poderá 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 in-box.

  • 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 a ID de hardware do dispositivo e o driver a ser instalado. Para obter exemplos, examine os arquivos INF incluídos com drivers de exemplo e localize dispositivos semelhantes ao seu dispositivo. Para obter informações sobre seções inf, consulte Visão geral dos arquivos INF.

Configurar a suspensão seletiva para Usbser.sys

A partir do Windows 10, oUsbser.sys dá suporte à Suspensão Seletiva USB. Ele permite que o dispositivo USB para serial anexado insira um estado de baixa potência quando não estiver em uso, enquanto o sistema permanece no estado S0. Quando a comunicação com o dispositivo é retomada, o dispositivo pode deixar o estado de suspensão e retomar o estado de trabalho. O recurso é desabilitado por padrão e pode ser habilitado e configurado definindo a entrada IdleUsbSelectiveSuspendPolicy sob esta chave do Registro:

HKEY\_LOCAL\_MACHINE\\SYSTEM\\CurrentControlSet\\Enum\\USB\\<hardware id>\\<instance id>\\Device Parameters

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

  • "0x00000001": insere suspensão seletiva quando estiver ocioso, ou seja, quando não houver transferências de dados ativas de ou para o dispositivo.

  • "0x00000000": insere a suspensão seletiva somente quando não há identificadores abertos no 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 no HW. Seção 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 números inteiros de 32 bits little-endian.

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

Desenvolver aplicativos do Windows para um dispositivo USB CDC

Começando em Windows 10, um aplicativo do Windows pode enviar solicitações para Usbser.sys usando o namespace Windows.Devices.SerialCommunication. Ele define Windows Runtime classes 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 esses dispositivos seriais, ler e gravar dados e controlar propriedades específicas da série para controle de fluxo, como definir taxa de bugigangas, estados de sinal.