Поделиться через


Выборочная приостановка для УСТРОЙСТВ HID через USB

В редакции 2.0 спецификации универсальной последовательной шины указана функция выборочной приостановки USB. С помощью этой функции операционная система Windows может выборочно приостанавливать неактивные USB-устройства. Это позволяет Windows эффективно управлять требованиями к энергопотреблению всей системы. Дополнительные сведения о том, как Windows поддерживает функцию выборочной приостановки ПО USB, см. в разделе Выборочная приостановка ПО USB. (Этот ресурс может быть недоступен в некоторых языках и странах.)

По умолчанию выборочная приостановка по USB отключена Windows, чтобы обеспечить согласованное взаимодействие с пользователем и избежать задержки возобновления выборочной приостановки.

Устройство HID, поддерживающее выборочную приостановку, должно быть спроектировано следующим образом:

  • Сохраните первый ввод, касание, перемещение или нажатие клавиши при возобновлении выборочной приостановки.
  • Пробуждение от выборочной приостановки при движении.
  • Поддерживайте беспроводную связь (если применимо).
  • Поддерживайте питание для всех индикаторов активного состояния, таких как блокировка NUM или CAPS.
  • Возобновить выборочную приостановку без какой-либо предполагаемой задержки со стороны пользователя.

Windows 8 поддерживает два метода включения выборочной приостановки для УСТРОЙСТВ HID USB. Вот они:

  1. Дескриптор ОС Майкрософт [ПРЕДПОЧТИТЕЛЬНО]: дескриптор расширенных свойств дескриптора ОС Майкрософт можно использовать для записи необходимых разделов реестра для поддержки выборочной приостановки USB HID.
  2. Поставщик предоставляет INF. Изготовитель оборудования может предоставить INF-файл (соответствующий идентификатору оборудования USB для hid devnode) для установки соответствующих разделов реестра.

Корпорация Майкрософт рекомендует поставщикам оборудования и изготовителям КОМПЬЮТЕРов использовать первый вариант для включения выборочной приостановки USB HID. Преимущества этого варианта:

  • Поставщикам оборудования и изготовителям компьютеров не нужно устанавливать дополнительный INF-файл.
  • Необходимый параметр реестра автоматически заполняется в новых Windows 8 установках.
  • Необходимый параметр реестра сохраняется при обновлении до Windows 8.
  • Пользователь не может потерять (или отключить) функцию выборочной приостановки, удалив INF-файл.

Однако поставщики оборудования и производители КОМПЬЮТЕРов, которые хотят по-прежнему использовать подход INF, могут использовать приведенный ниже пример. Ниже приведен пример INF-файла, в который показано, как включить эту функцию USB для HID-устройств в 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"

Где:

  1. В разделе Версия INF должны быть заданы следующие директивы CLASSGUID и DriverVer :

    • Директива CLASSGUID должна указывать GUID класса Майкрософт для устройств HID. Этот GUID имеет значение {745a17a0-74d3-11d0-b6fe-00a0c90f57da}.

    • Директива DriverVer должна иметь значение, которое имеет более новую дату и номер версии, чем значение, указанное в директиве DriverVer в Input.inf.

  2. В разделах VendorXYZDevice* указывается идентификатор оборудования для устройства HID поставщика. Идентификатор оборудования состоит из идентификатора поставщика (VID) и идентификатора продукта (PID). Каждый идентификатор оборудования для устройства должен иметь значения VID/PID, которые являются уникальными для поставщика и устройства. Это гарантирует, что один и тот же идентификатор оборудования не будет соответствовать нескольким именам и параметрам.

  3. Разделы VendorXYZDevice_Install.NT и VendorXYZDevice_Install.NT.HW — это разделы INF DDInstall. В этом примере эти разделы содержат директивы INF Include и Needs .

    Директивы Include ссылаются на предоставленный системой файл Input.inf, который содержит разделы INF, необходимые для включения функции выборочной приостановки USB для устройства HID поставщика.

    Директивы Needs указывают, какие разделы из Input.inf должны обрабатываться во время установки устройства. В этом случае вместо раздела HID_Inst по умолчанию выбирается раздел HID_SelSus_Inst, который не поддерживает выборочную приостановку.

  4. Раздел VendorXYZDevice_Install.NT.Services — это раздел INF DDInstall.HW. В этом примере раздел также содержит те же значения для директив INF Include и Needs .