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:
- 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.
- 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:
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.
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
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.
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.