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


Драйверы клиента HID

Если системный мини-накопитель HID не поддерживает порт устройства или шину, требуется предоставленный поставщиком мини-накопитель.

На следующем рисунке показан стек драйверов для универсального устройства HIDClass (которое может использовать необязательные и обязательные компоненты, предоставляемые поставщиком).

схема, иллюстрирующая стек драйверов для универсального устройства hidclass.

Windows создает стек драйверов следующим образом:

  • Стек транспорта создает объект физического устройства (PDO) для каждого подключенного устройства HID и загружает соответствующий драйвер транспорта HID, который, в свою очередь, загружает драйвер класса HID.
  • Драйвер класса HID создает PDO для TLC . Для сложных устройств с несколькими TLC драйвер класса HID создает PDO для каждого TLC и гарантирует, что идентификатор оборудования, связанный с TLC, включает идентификатор для представления каждого объекта устройства.
  • Функция или драйвер фильтра, предоставляемый поставщиком, создает FDO или фильтр DO для коллекции HID.
  • Кроме того, предоставленное поставщиком приложение может открыть устройство с помощью API SetupDI* для идентификации устройства, а затем подпрограмм, поддерживаемых HID, для взаимодействия с устройством. Такие устройства открываются в режиме RAW.

Если системные операции с мини-накопителем не поддерживают устройство, требуется предоставленный поставщиком мини-накопитель HID. Этот мини-накопитель можно реализовать двумя способами:

  • Драйвер клиента HID
  • Приложение обращается напрямую к HID

Если поставщик предоставляет драйвер (отличный от мини-драйвера), этот драйвер:

  • Должен соответствовать минимальным требованиям к драйверу Windows. В идеале это должно быть основано на платформе драйвера пользовательского режима (UMDF) или на платформе драйверов в режиме ядра (KMDF). Менее идеальным решением является создание драйвера функции WDM, как описано в разделе Модель драйвера Windows.
  • Обычно поддерживает интерфейс устройства, определенный поставщиком. См. раздел Классы интерфейса устройства. Драйверы верхнего уровня или приложения в пользовательском режиме используют пользовательский интерфейс для доступа к устройствам, работающим с драйвером поставщика. Пользовательский интерфейс может добавить функциональные возможности или, возможно, упростить интерфейс для драйвера класса HID.

Если драйвер не является драйвером функции или драйвером фильтра, он может использовать Plug and Play уведомления для поиска коллекций HID. После поиска коллекции драйвер открывает коллекцию и работает с ней так же, как драйвер функции или фильтра.

Важное примечание.

  • Если предоставленный поставщиком драйвер функции создает FDO или фильтр DO для коллекции HID, он не должен использовать поле FsContext FILE_OBJECT для хранения данных, относящихся к файловым объектам. Поле FsContext зарезервировано для драйвера класса HID. Если другому драйверу в стеке требуется хранить данные контекста для конкретного объекта файла, следует использовать поле FsContext2.
  • Если к PDO подключено несколько устройств, отсутствует встроенный механизм определения того, какое устройство может использовать поле FsContext2.