Compartir a través de


Suspensión selectiva para HID a través de dispositivos USB

La revisión 2.0 de la especificación del bus serie universal especifica una característica de suspensión selectiva usb. Con esta característica, el sistema operativo Windows puede suspender de forma selectiva dispositivos USB inactivos. Esto permite a Windows administrar eficazmente los requisitos de energía del sistema general. Para obtener más información sobre cómo Windows admite la característica de suspensión selectiva USB, consulte Suspensión selectiva usb. (Es posible que este recurso no esté disponible en algunos idiomas y países).

De forma predeterminada, Windows deshabilita la suspensión selectiva usb para proporcionar una experiencia de usuario coherente y evitar la reanudación de la suspensión selectiva.

Un dispositivo HID que admita la suspensión selectiva debe diseñarse para:

  • Conservar la primera entrada, entrada táctil, movimiento o pulsación de tecla al reanudarse desde la suspensión selectiva.
  • Reactivación de la suspensión selectiva en el movimiento.
  • Mantenga el enlace inalámbrico (si procede).
  • Mantenga la potencia en cualquier LED de estado activo, como el bloqueo NUM o el bloqueo CAPS.
  • Reanude la suspensión selectiva sin ningún retraso percibido por el usuario.

Windows 8 admite dos métodos para habilitar la suspensión selectiva para dispositivos USB HID. Los pasos son los siguientes:

  1. Descriptor de so de Microsoft [PREFERRED]: el descriptor de propiedades extendidas del descriptor de so de Microsoft se puede usar para escribir las claves del Registro necesarias para admitir la suspensión selectiva de USB HID.
  2. Proveedor INF proporcionado: el fabricante de hardware puede proporcionar un archivo INF (que coincida con el identificador de hardware USB para el devnode HID) para instalar las claves del Registro adecuadas.

Microsoft recomienda que los proveedores de hardware y los fabricantes de equipos usen la primera opción para habilitar la suspensión selectiva de USB HID. Las ventajas de esta opción son:

  • Los proveedores de hardware y los fabricantes de EQUIPOS no tienen que instalar un archivo INF adicional.
  • La configuración del Registro necesaria se rellena automáticamente en las nuevas instalaciones de Windows 8.
  • La configuración del Registro necesaria se conserva en una actualización a Windows 8.
  • El usuario no puede perder (o deshabilitar) la funcionalidad De suspensión selectiva desinstalando inf.

Sin embargo, los proveedores de hardware y los fabricantes de EQUIPOS que quieran seguir usando el enfoque INF, pueden usar el ejemplo siguiente. A continuación se muestra un archivo INF de ejemplo que muestra cómo habilitar esta característica USB para dispositivos HID en 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"

Donde:

  1. La sección Versión inf debe tener las directivas CLASSGUID y DriverVer establecidas de la siguiente manera:

    • La directiva CLASSGUID debe especificar el GUID de clase de Microsoft para dispositivos HID. Este GUID tiene el valor {745a17a0-74d3-11d0-b6fe-00a0c90f57da}.

    • La directiva DriverVer debe tener un valor que tenga una fecha más reciente y un número de versión mayor que el valor especificado por la directiva DriverVer en Input.inf.

  2. Las secciones VendorXYZDevice* especifican el identificador de hardware (ID) para el dispositivo HID del proveedor. El identificador de hardware consta de un identificador de proveedor (VID) y un identificador de producto (PID). Cada identificador de hardware de un dispositivo debe tener valores VID/PID únicos para el proveedor y el dispositivo. Esto garantiza que el mismo identificador de hardware no se corresponda con varios nombres y configuraciones.

  3. Las secciones VendorXYZDevice_Install.NT y VendorXYZDevice_Install.NT.HW son secciones INF DDInstall. En este ejemplo, estas secciones contienen directivas INF Include y Needs .

    Las directivas Include hacen referencia al archivo Input.inf proporcionado por el sistema, que contiene secciones INF necesarias para habilitar la característica de suspensión selectiva USB para el dispositivo HID del proveedor.

    Las directivas Needs indican qué secciones de Input.inf se deben procesar durante la instalación del dispositivo. En este caso, se selecciona la sección HID_SelSus_Inst en lugar de la sección de HID_Inst predeterminada, que no admite la suspensión selectiva.

  4. La sección VendorXYZDevice_Install.NT.Services es una sección INF DDInstall.HW. En este ejemplo, la sección también contiene los mismos valores para las directivas INF Include y Needs .