Compartilhar via


Suspensão seletiva para HID em dispositivos USB

A revisão 2.0 da Especificação universal do Barramento Serial especifica um recurso de suspensão seletiva USB. Usando esse recurso, o sistema operacional Windows pode suspender seletivamente dispositivos USB ociosos. Isso permite que o Windows gerencie com eficiência os requisitos de energia do sistema geral. Para obter mais informações sobre como o Windows dá suporte ao recurso de suspensão seletiva USB, consulte Suspensão seletiva de USB. (Esse recurso pode não estar disponível em alguns idiomas e países.)

Por padrão, a suspensão seletiva usb é desabilitada pelo Windows para fornecer uma experiência consistente do usuário e evitar que a latência de retomada seja suspensa seletivamente.

Um dispositivo HID que dá suporte à suspensão seletiva deve ser projetado para:

  • Mantenha a primeira tecla de entrada, toque, movimento ou tecla ao retomar da suspensão seletiva.
  • Acorde da suspensão seletiva sobre o movimento.
  • Mantenha o link sem fio (se aplicável).
  • Mantenha a energia para quaisquer LEDs de status ativos, como bloqueio NUM ou bloqueio CAPS.
  • Retomar da suspensão seletiva sem nenhum atraso percebido pelo usuário.

Windows 8 dá suporte a dois métodos para habilitar a Suspensão Seletiva para dispositivos USB HID. Elas são as seguintes:

  1. Descritor do sistema operacional da Microsoft [PREFERRED]: o descritor Propriedades Estendidas do Descritor do Sistema Operacional da Microsoft pode ser usado para gravar as chaves do Registro necessárias para dar suporte à Suspensão Seletiva do USB HID.
  2. INF fornecido pelo fornecedor: o fabricante do hardware pode fornecer um arquivo INF (que corresponde à ID de Hardware USB para o devnode HID) para instalar as chaves de registro apropriadas.

A Microsoft recomenda que os fornecedores de hardware e os fabricantes de computadores usem a primeira opção para habilitar a Suspensão Seletiva do USB HID. As vantagens dessa opção são:

  • Fornecedores de hardware e fabricantes de computadores não precisam instalar um arquivo INF adicional.
  • A configuração necessária do Registro é preenchida automaticamente em novas instalações de Windows 8.
  • A configuração necessária do Registro é preservada em uma atualização para Windows 8.
  • O usuário não pode perder (ou desabilitar) a funcionalidade de Suspensão Seletiva desinstalando o INF.

No entanto, os fornecedores de hardware e os fabricantes de computadores que desejam ainda usar a abordagem INF podem usar o exemplo abaixo. Veja a seguir um arquivo INF de exemplo que mostra como habilitar esse recurso USB para dispositivos HID no Windows:

; Vendor INF File for USB HID devices
;
; A sample INF for a stand-alone USB HID device that supports
; selective suspend

[Version]
Signature   ="$WINDOWS NT$"
Class       =HIDClass
ClassGuid   ={745a17a0-74d3-11d0-b6fe-00a0c90f57da}
Provider    =%VendorName%
DriverVer   =09/19/2008,6.0.0.0
CatalogFile =VendorXYZ.cat
PnpLockdown =1

; ================= Class section =====================
[ControlFlags]
ExcludeFromSelect=*

[SourceDisksNames]
1 = %DiskName%,,,""

;*****************************************
; Install Section
;*****************************************

[Manufacturer]
%VendorName% = VendorXYZDevice,NTx86,NTamd64,NTarm

[VendorXYZDevice.NTx86]
%VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, USB\VID_045E&PID_00B4

[VendorXYZDevice.NTamd64]
%VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, USB\VID_045E&PID_00B4

[VendorXYZDevice.NTarm]
%VendorXYZ.DeviceDesc% = VendorXYZDevice_Install, USB\VID_045E&PID_00B4


[VendorXYZDevice_Install.NT]
include     = input.inf
needs       = HID_SelSus_Inst.NT

[VendorXYZDevice_Install.NT.HW]
include     = input.inf
needs       = HID_SelSus_Inst.NT.HW

[VendorXYZDevice_Install.NT.Services]
include     = input.inf
needs       = HID_SelSus_Inst.NT.Services

[Strings]
VendorName = "Vendor XYZ"
DiskName   = "Vendor XYZ Installation Disk"
VendorXYZ.DeviceDesc = "VendorXYZ Device"

Em que:

  1. A seção Versão do INF deve ter as diretivas CLASSGUID e DriverVer definidas da seguinte maneira:

    • A diretiva CLASSGUID deve especificar o GUID da classe Microsoft para dispositivos HID. Esse GUID tem o valor {745a17a0-74d3-11d0-b6fe-00a0c90f57da}.

    • A diretiva DriverVer deve ter um valor que tenha uma data mais recente e um número de versão maior do que o valor especificado pela diretiva DriverVer em Input.inf.

  2. As seções VendorXYZDevice* especificam o identificador de hardware (ID) para o dispositivo HID do fornecedor. A ID de hardware consiste em um identificador de fornecedor (VID) e pid (identificador de produto). Cada ID de hardware para um dispositivo deve ter valores VID/PID exclusivos para o fornecedor e o dispositivo. Isso garante que a mesma ID de hardware não corresponda a vários nomes e configurações

  3. As seções VendorXYZDevice_Install.NT e VendorXYZDevice_Install.NT.HW são seções INF DDInstall. Neste exemplo, essas seções contêm diretivas INF Include e Needs .

    As diretivas Include fazem referência ao arquivo Input.inf fornecido pelo sistema, que contém seções INF necessárias para habilitar o recurso de suspensão seletiva USB para o dispositivo HID do fornecedor.

    As diretivas Needs indicam quais seções de Input.inf devem ser processadas durante a instalação do dispositivo. Nesse caso, a seção HID_SelSus_Inst é selecionada em vez da seção padrão HID_Inst, que não dá suporte à suspensão seletiva.

  4. A seção VendorXYZDevice_Install.NT.Services é uma seção INF DDInstall.HW. Neste exemplo, a seção também contém os mesmos valores para as diretivas Incluir e Necessidades do INF.