Добавить драйвер для клавиатуры

Содержание
  1. Что делать если не работает клавиатура?
  2. Причины, по которым не работает клавиатура
  3. Неправильное подключение клавиатуры
  4. Блокировка клавиатуры вирусами
  5. Неправильная установка драйверов клавиатуры
  6. Не полностью работает клавиатура
  7. Не работает новая клавиатура
  8. Устанавливаем драйвера для новой клавиатуры
  9. Ручная установка драйвера
  10. Установка драйвера с диска
  11. Установка драйвера с помощью DriverPack Solution
  12. Удаляем старое устройство
  13. Беспроводная периферия
  14. Положение переключателя XT/AT
  15. Драйверы клиента HID клавиатуры и мыши
  16. Архитектура и обзор
  17. Важные примечания:
  18. Руководство по драйверу
  19. Раскладка клавиатуры
  20. Поддерживаемые кнопки и колеса на мышах
  21. Активация кнопок 4–5 и колесика на мышах PS/2
  22. Стандартный формат пакета данных мыши, совместимый с PS/2 (2 кнопки)
  23. Стандартный формат пакета данных мыши, совместимый с PS/2 (3 кнопки + вертикальное колесо)
  24. Стандартный формат пакета данных мыши, совместимый с PS/2 (5 кнопок + вертикальное колесо)
  25. Устройства, не требующие драйверов поставщиков
  26. Пример kbfiltr
  27. Списки IOCTR kbfiltr
  28. IOCTL_INTERNAL_I8042_HOOK_KEYBOARD
  29. IOCTL_INTERNAL_KEYBOARD_CONNECT
  30. IOCTL_INTERNAL_KEYBOARD_DISCONNECT
  31. Подпрограммы обратного вызова, реализованные Kbfiltr
  32. KbFilter_InitializationRoutine
  33. KbFilter_IsrHook
  34. KbFilter_ServiceCallback
  35. Пример Moufiltr
  36. Коды элементов управления Moufiltr
  37. IOCTL_INTERNAL_I8042_HOOK_MOUSE
  38. Процедуры обратного вызова Moufiltr
  39. IOCTL_INTERNAL_MOUSE_CONNECT
  40. IOCTL_INTERNAL_MOUSE_DISCONNECT
  41. Подпрограммы обратного вызова
  42. MouFilter_IsrHook
  43. MouFilter_ServiceCallback

Что делать если не работает клавиатура?

Если клавиатура неисправна, работа на ПК приостанавливается. При наличии пароля на входе ОС Windows не удастся загрузить, так как нет возможности ввести его.

Только в случае успешной загрузки операционной системы, Вы можете воспользоваться экранной клавиатурой, для решения проблем с подключаемым устройством.

Причины, по которым не работает клавиатура

Неправильное подключение клавиатуры

Когда включаешь ПК и обнаруживаешь – не работает клавиатура , на смену досаде приходит удивление: вчера ведь работала.

Если устройство не реагирует на нажатия клавиш при включении рабочего персонального компьютера, самое первое, что нужно сделать – проверить подсоединение периферии к системному блоку. При шнуре, выдернутым из разъема ПК, причина неработоспособности банально проста. Чтобы клавиатура заработала, достаточно плотно воткнуть штекер в разъем, перегрузить компьютер.

Периферию можно подключить через другой разъем аналогичного порта или, воспользовавшись переходником, другие порты. Она заработает, если порт PS /2 или USB сгорел.
Забавна ситуация, когда периферию подключают не на тот порт PS/2. Исключает путаницу окрашивание штекера и разъема, предназначенного для периферии – клавиатуры или мышки, в один цвет. Фиолетовый штекер клавиатуры нужно воткнуть в порт PS/2 фиолетового цвета.

Блокировка клавиатуры вирусами

Блокировать отработку нажатий клавиш могут компьютерные вирусы. Убедиться в подключении клавиатуры можно по нажатию клавиш Caps Lock или Num Lock: должна появиться индикация, отражающая их включение.
После лечения ПК антивирусом с компьютером должен быть полный порядок.

Бывает ситуация, когда индикаторы клавиатуры не работают, так как перебит сам шнур, ведущий к компьютеру. Если есть возможность подключите клавиатуру к другому устройству и проверьте её работоспособность.

Неправильная установка драйверов клавиатуры

Зайдите в Диспетчер устройств и посмотрите в оборудовании, есть ли устройства, не определенные системой (оборудование не определится, если драйвер не установлен или слетел).

Неправильно установленное оборудование будет помечено желтым треугольником с восклицательным знаком, а неопределенные устройства — знаком вопроса.

Чтобы попасть в диспетчер устройств на любой версии Виндовс, следует нажать сочетание клавиш Win+R и выполнить команду «devmgmt.msc». Но в нашем случае, такой способ не подойдёт. Клавиатура ведь не работает.

Поэтому, заходим в проводник Windows или просто открываем любую папку. Слева вы можете найти «Мой компьютер» либо «Этот компьютер» (в версиях Виндовс 8 и выше). Нажимаем правую кнопку мыши —» свойства.

Переходим по вкладке «Диспетчер устройств» и попадаем в пункт управления драйверами и устройствами.

Диспетчер устройств выглядит примерно одинаково на всех версиях операционной системы Windows. На скриншоте выше изображен яркий пример проблемы с драйверами. В вашем случае такая история будет с вкладкой «Клавиатуры»

В этой ситуации нужно произвести установку или переустановку драйверов клавиатуры, если они некорректно установлены.

Не полностью работает клавиатура

Часто возникает ложная проблема при цифровом вводе из поля правой части устройства. Ввод возможен только при нажатой клавише Num Lock , расположенной над цифрами. При отсутствии индикации подсветки, отражающей состояние клавиши, ввод цифр блокируется.

Клавиши могут залипать и не работать из-за грязи. При неработоспособности, связанной с отсутствием контакта из-за крошек, пыли, попадания влаги от пролитого кофе периферию разбирают, очищают от мусора, контакты протирают спиртом, возвращают на место сползшие уплотнители. Работа трудоемкая, кто самостоятельно разбирал устройство, знает – разобрать его легче, чем собрать.

Не работает новая клавиатура

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

Если заменяемая периферия работала через порт PS/2, отсутствие связи с новым устройством, подключаемым через USB-порт, может быть связано с портом, закрытым для использования.

Настроить его для подключения клавиатуры можно, зайдя в меню БИОСа и открыв (Enabled) поддержку порта USB Keyboard Support. За подключение отвечает также контроллер USB, в SETUP нужно правильно настроить USB Controller, установив в Enable.

Устанавливаем драйвера для новой клавиатуры

Чтобы новое оборудование заработало, нужно установить драйверы. Это можно сделать разными способами:

Ручная установка драйвера


Заходим из Панели управления в Систему, открываем окно ее Свойств, выбираем работу с Оборудованием, действие — Установка.

В открывшемся окне Мастера установки соглашаемся на дальнейшую работу нажатием на кнопку Далее.
Будет предложено выбрать место расположения дистрибутива.

Установщик извлечет нужную информацию из указанной папки, задаст дополнительные вопросы, оповестит о выполненном подключении сообщением “Установка новых устройств закончена”. Новое устройство будет корректно работать после перезагрузки ПК.

Для установки драйвера можно воспользоваться диском, входящим в комплект периферийного устройства. Зная его модель, драйвер, нужный, чтобы настроить клавиатуру, легко скачать с сайтов с ПО.

Установка драйвера с диска


Диск с дистрибутивом помещаем в CD-привод и ждем появления окна автозагрузки. В открывшемся меню выбираем “Установка драйвера” ( “ Install driver ”). Соглашаемся, нажимая кнопку “Да”, с требованиями и лицензионными соглашениями.

Продвигаемся вперед, нажимая “Далее”. Установка драйвера может замереть во время копирования файлов и прописывания нового оборудования в реестре. Нужно дождаться сообщения о завершении процесса установки ПО, и согласиться с предложением установщика перегрузить ПК.

Параллельно с установкой драйвера инсталлируются утилиты, настраивающие работу периферийного устройства, делающие макро -клавиши максимально удобными для игры, работы.

Если подключить мультимедийную клавиатуру и настроить функциональные клавиши под себя, ощущения от преимуществ современной периферии убеждают – средства потрачены правильно.

Установка драйвера с помощью DriverPack Solution

Здесь все до крайности просто. Скачиваем дистрибутив программы с помощью поисковой системы Google и она сама подбирает нужный для клавиатуры. Этот способ работает в большинстве случаев. После установки обязательно нужно выполнить перезагрузку.

Удаляем старое устройство

Для исключения конфликтов устройств рекомендуется из системы удалить уже ненужное оборудование.

По нажатию кнопки Пуск из открывшегося меню выбираем Настройка, открываем Панель управления, заходим в Систему.

Кнопкой мыши открываем Свойства, находим Оборудование, открываем список устройств, работающий в системе. Выделяем не определенное системой устройство (оно выделено восклицательным знаком на желтом фоне), выбираем Удалить, подтверждаем действие нажатием кнопки OK и закрываем открытые окна.

Беспроводная периферия

При неполадках в работе ПК компьютер перегружают. Если проблема остается, она не случайна и требует устранения. Когда перестает работать беспроводная периферия, первым делом проверяется положение тумблера включения оборудования.

При положении «Вкл» неработающую беспроводную клавиатуру нужно расположить поближе к устройству-приемнику, на расстояние не более 0.3 м и проверить работу. Желательно периферию и принимающий центр установить на одном уровне.

Для работы оборудования важен заряд аккумуляторной батареи. Подзарядить источник тока нужно, даже если, судя по индикации, заряд достаточный, заменить батареи новым хорошим набором.

Беспроводное оборудование должно быть распознано системой. Убедиться в правильности выбранного драйвера можно во вкладке Оборудование.

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

Положение переключателя XT/AT


Большинство клавиатур изготавливают с переключателем XT/AT, позволяющим подключаться к ПК IBM PC/XT и IBM PC/AT.

Для совместимости с разными компьютерами на нижней панели периферийного устройства размещен переключатель. Его положение при работе периферии с компьютером IBM PC/XT должно быть XT, с компьютером IBM PC/AT.

При неправильно установленном тумблере периферийное оборудование работать не будет.

Источник

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

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

В этом разделе рассматриваются драйверы клиента HID клавиатуры и мыши. Клавиатуры и мыши представляют собой первый набор клиентов HID, которые были стандартизированы в таблицах использования HID и реализованы в Windows операционных системах.

Клиентские драйверы HID клавиатуры и мыши реализованы в виде драйверов HID Mapper. Драйвер модуля сопоставления HID — это драйвер фильтра WDM в режиме ядра, предоставляющий двунаправленный интерфейс для запросов ввода-вывода между драйвером класса, не использующее HID, и драйвером класса HID. Драйвер сопоставителя сопоставляет запросы ввода-вывода и протоколы данных одного с другим.

Windows предоставляет системные драйверы mapper HID для клавиатуры HID и устройств HID.

Архитектура и обзор

На следующем рисунке показаны стеки драйверов, предоставляемые системой, для USB-клавиатуры, мыши и сенсорной панели.

На приведенном выше рисунке представлены следующие компоненты:

  • KBDHID.sys: драйвер сопоставления клиентов HID для клавиатур. Преобразует использование HID в коды сканирования в интерфейс с существующим драйвером класса клавиатуры.
  • MOUHID.sys: драйвер mapper клиента HID для мышей и сенсорной панели. Преобразует использование HID в команды мыши (X/Y, кнопки, колесо) в интерфейс с существующим драйвером класса клавиатуры.
  • KBDCLASS.sys: драйвер класса клавиатуры поддерживает функциональные возможности для всех клавиатур и клавиатур в системе безопасным образом.
  • MOUCLASS.sys: драйвер класса мыши поддерживает функциональные возможности для всех мышей / сенсорных панели в системе. Драйвер поддерживает как абсолютные, так и относительные устройства с указателем. Это не драйвер для сенсорных экранов, так как он управляется другим драйвером в Windows.
  • HIDCLASS.sys: драйвер класса HID. Драйвер класса HID — это клей между KBDHID.sys и MOUHID.sys клиентами HID и различными транспортами (USB, Bluetooth и т. д.).

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

  • Стек транспорта создает объект физического устройства (PDO) для каждого подключенного устройства HID и загружает соответствующий драйвер транспорта HID, который, в свою очередь, загружает драйвер класса HID.
  • Драйвер класса HID создает PDO для каждой клавиатуры или мыши TLC. Сложные устройства HID (более 1 TLC) предоставляются в виде нескольких pdos, созданных драйвером класса HID. Например, клавиатура с встроенной мышью может иметь одну коллекцию для стандартных элементов управления клавиатуры и другую коллекцию для мыши.
  • Драйверы карт клиента с клавиатуры или мыши загружаются в соответствующий FDO.
  • Драйверы mapper HID создают FD для клавиатуры и мыши и загружают драйверы классов.

Важные примечания:

  • Драйверы поставщика не требуются для клавиатур и мышей, соответствующих поддерживаемым коллекциям HID Usages и top level.
  • Поставщики могут дополнительно предоставить драйверы фильтров в стеке HID, чтобы изменить или улучшить функциональные возможности этих конкретных TLC.
  • Поставщики должны создавать отдельные TLC, относящиеся к поставщику, для обмена собственными данными поставщика между их hid-клиентом и устройством. Избегайте использования драйверов фильтров, если это не критически важно.
  • Система открывает все коллекции клавиатуры и мыши для монопольного использования.
  • Система предотвращает отключение и включение клавиатуры.
  • Система обеспечивает поддержку горизонтальных или вертикальных колес с плавной прокруткой.

Руководство по драйверу

Корпорация Майкрософт предоставляет следующие рекомендации по написанию драйверов IHV:

Разработчики драйверов могут добавлять дополнительные драйверы в виде драйвера фильтра или нового драйвера КЛИЕНТА HID. Ниже описаны критерии.

Фильтры драйверов. Разработчики драйверов должны убедиться, что их драйвер добавления значений является драйвером фильтра и не заменяет (или не используется вместо) существующих Windows драйверов HID в стеке ввода.

  • Драйверы фильтров разрешены в следующих сценариях:
    • Как верхний фильтр к kbdhid/mouhid
    • В качестве верхнего фильтра для kbdclass/mouclass
  • Драйверы фильтров не рекомендуется использовать в качестве фильтра между HIDCLASS и мини-накопительом транспорта HID

Драйверы функций. Кроме того, поставщики могут создавать драйвер функции (вместо драйвера фильтра), но только для определенных поставщиков HID PDOs (при необходимости с службой пользовательского режима).

Драйверы функций разрешены в следующих сценариях:

  • Загрузка только на оборудование конкретного поставщика

Транспортные драйверы: Windows команда не рекомендует создавать дополнительные мини-накопители HID Transport, так как они являются сложными драйверами для записи и обслуживания. Если партнер создает новый мини-накопитель hiD Transport, особенно в системах SoC, мы рекомендуем подробно проверить архитектуру, чтобы понять причину и убедиться, что драйвер разработан правильно.

Разработчики драйверов должны использовать платформы драйверов (KMDF или UMDF) и не полагаться на WDM для драйверов фильтров.

Разработчики драйверов должны уменьшить количество переходов между службой ядра и стеком драйверов.

Разработчики драйверов должны обеспечить возможность пробуждения системы с помощью клавиатуры и сенсорной панели (настраивается конечным пользователем (диспетчером устройств) или производителем пк). В дополнение к системам SoC эти устройства должны иметь возможность пробуждения от более низкого состояния питания, пока система находится в рабочем состоянии S0.

Разработчики драйверов должны обеспечить эффективное управление оборудованием.

  • Устройство может перейти в наименьшее состояние питания, когда устройство находится в состоянии простоя.
  • Устройство находится в самом низком состоянии питания, если система находится в состоянии низкой мощности (например, в режиме ожидания (S3) или подключенном режиме ожидания).

Раскладка клавиатуры

Раскладка клавиатуры полностью описывает характеристики ввода клавиатуры для Microsoft Windows 2000 и более поздних версий. Например, раскладка клавиатуры определяет язык, тип клавиатуры и версию, модификаторы, коды сканирования и т. д.

Дополнительные сведения о раскладках клавиатуры см. в следующих статьях:

Файл заголовка клавиатуры kdb.h в пакете средств разработки драйверов Windows (DDK), который документирует общие сведения о раскладках клавиатуры.

Чтобы визуализировать макет определенной клавиатуры, см. Windows раскладки клавиатуры.

Дополнительные сведения о раскладке клавиатуры см. в разделе панель управления\Clock, Language и Region\Language.

Поддерживаемые кнопки и колеса на мышах

В следующей таблице перечислены функции, поддерживаемые в разных версиях клиента Windows операционной системы.

Компонент Windows XP Windows Vista Windows 7 Windows 8 и более поздние версии
Кнопки 1–5 Поддерживается (P/2 & HID) Поддерживается (PS/2 & HID) Поддерживается (PS/2 & HID) Поддерживается (PS/2 & HID)
Вертикальное колесо прокрутки Поддерживается (PS/2 & HID) Поддерживается (PS/2 & HID) Поддерживается (PS/2 & HID) Поддерживается (PS/2 & HID)
Горизонтальное колесо прокрутки Не поддерживается Поддерживается (только HID) Поддерживается (только HID) Поддерживается (только HID)
Поддержка плавного колесика прокрутки (горизонтальная и вертикальная) Не поддерживается Частично поддерживается Поддерживается (только HID) Поддерживается (только HID)

Активация кнопок 4–5 и колесика на мышах PS/2

Метод, используемый Windows для активации нового режима 45-button& + wheel является расширением метода, используемого для активации третьей кнопки и колесика в мышах, совместимых с IntelliMouse:

  • Во-первых, мышь устанавливается в режим 3-кнопок колесика, который выполняется путем установки скорости отчета последовательно равным 200 отчетам/секунде, а затем до 100 отчетов в секунду, а затем — до 80 отчетов/секунды, а затем считывает идентификатор с мыши. При завершении этой последовательности мышь должна сообщить идентификатор 3.
  • Затем мышь устанавливается в режим колесика с 5 кнопками, который выполняется путем установки скорости отчета последовательно равным 200 отчетам в секунду, а затем 200 отчетов в секунду снова, а затем до 80 отчетов в секунду, а затем считывания идентификатора с мыши. После завершения этой последовательности указатель мыши с 5 кнопками должен сообщить идентификатор 4 (в то время как мышь, совместимая с IntelliMouse с 3 кнопкой, по-прежнему будет сообщать идентификатор 3).

Обратите внимание, что это применимо только к мышам PS/2 и неприменимо к мышам HID (hiD мышей должны сообщать точные сведения об использовании в дескрипторе отчета).

Стандартный формат пакета данных мыши, совместимый с PS/2 (2 кнопки)

Byte D7 D6 D5 D4 D3 D2 D1 D0 Комментировать
1 Yover Xover Ysign Xsign Тег M R L Переполнения и знаки X/Y, кнопки
2 X7 X6 X5 X4 X3 X2 X1 X0 X байт данных
3 Y7 Y6 Да5 Y4 Да3 Да2 Да1 Y0 Байты данных Y

Windows драйверы мыши не проверяют биты переполнения. В случае переполнения мышь должна просто отправить максимальное значение смещения со знаком.

Стандартный формат пакета данных мыши, совместимый с PS/2 (3 кнопки + вертикальное колесо)

Byte D7 D6 D5 D4 D3 D2 D1 D0 Комментировать
1 0 0 Ysign Xsign 1 M R L Знаки X/Y и кнопки R/L/M
2 X7 X6 X5 X4 X3 X2 X1 X0 X байт данных
3 Y7 Y6 Да5 Y4 Да3 Да2 Да1 Y0 Байты данных Y
4 Z7 Z6 Z5 Z4 Z3 Z2 Z1 Z0 Байт данных Z/wheel

Стандартный формат пакета данных мыши, совместимый с PS/2 (5 кнопок + вертикальное колесо)

Byte D7 D6 D5 D4 D3 D2 D1 D0 Комментировать
1 0 0 Ysign Xsign 1 M R L Знаки X/Y и кнопки R/L/M
2 X7 X6 X5 X4 X3 X2 X1 X0 X байт данных
3 Y7 Y6 Да5 Y4 Да3 Да2 Да1 Y0 Байты данных Y
4 0 0 B5 B4 Z3 Z2 Z1 Z0 Данные z/wheel и кнопки 4 и 5

Обратите внимание, что данные Z/wheel для 5-кнопки колесика мыши были сокращены до четырех битов вместо 8 битов, используемых в режиме 3-кнопки IntelliMouse. Это сокращение возможно тем, что колесо обычно не может генерировать значения за пределами диапазона +7/-8 в течение любого заданного периода прерывания. Windows водители мыши будут подписывать четыре бита данных Z/wheel, когда мышь находится в режиме 5-кнопок колесика, и полный байт данных Z/колесика, когда мышь работает в режиме 3-кнопки колесика.

Кнопки 4 & 5 на них сопоставляются с сообщениями WM_APPCOMMAND и соответствуют App_Back и App_Forward.

Устройства, не требующие драйверов поставщиков

Драйверы поставщика не требуются для следующих устройств:

  • Устройства, соответствующие стандарту HID.
  • Клавиатура, мышь или игровые порты, управляемые системными драйверами, не предоставляемыми HIDClass.

Пример kbfiltr

Kbfiltr предназначен для использования с Kbdclass, системным драйвером класса для клавиатурных устройств и I8042prt, драйвером функции для клавиатуры в стиле PS/2. Kbfiltr демонстрирует фильтрацию запросов ввода-вывода и добавление подпрограмм обратного вызова, которые изменяют операцию Kbdclass и I8042prt.

Дополнительные сведения об операции Kbfiltr см. в следующих статьях:

Пример исходного кода Kbfiltr .

Списки IOCTR kbfiltr

IOCTL_INTERNAL_I8042_HOOK_KEYBOARD

Запрос IOCTL_INTERNAL_I8042_HOOK_KEYBOARD выполняет следующие действия:

  • Добавляет подпрограмму обратного вызова инициализации инициализации клавиатуры I8042prt.
  • Добавляет подпрограмму обратного вызова ISR в isR клавиатуры I8042prt.

Обратные вызовы инициализации и ISR являются необязательными и предоставляются драйвером фильтра верхнего уровня для устройства клавиатуры в стиле PS/2.

Когда I8042prt получит запрос IOCTL_INTERNAL_KEYBOARD_CONNECT , он отправляет синхронный запрос IOCTL_INTERNAL_I8042_HOOK_KEYBOARD в начало стека устройства клавиатуры.

После того как Kbfiltr получит запрос клавиатуры перехватчика, Kbfiltr фильтрует запрос следующим образом:

  • Сохраняет сведения верхнего уровня, передаваемые в Kbfiltr, который включает контекст объекта устройства верхнего уровня, указатель на обратный вызов инициализации и указатель на обратный вызов ISR.
  • Заменяет сведения верхнего уровня собственными.
  • Сохраняет контекст I8042prt и указатели на обратные вызовы, которые может использовать обратный вызов ISR Kbfiltr.

IOCTL_INTERNAL_KEYBOARD_CONNECT

Запрос IOCTL_INTERNAL_KEYBOARD_CONNECT подключает службу Kbdclass к устройству клавиатуры. Kbdclass отправляет этот запрос вниз по стеку устройств клавиатуры перед открытием устройства клавиатуры.

После того как Kbfiltr получил запрос на подключение к клавиатуре, Kbfiltr фильтрует запрос на подключение следующим образом:

  • Сохраняет копию структуры kbdclass CONNECT_DATA (Kbdclass), передаваемой драйверу фильтра по kbdclass.
  • Заменяет собственные сведения о подключении драйвера класса.
  • Отправляет запрос IOCTL_INTERNAL_KEYBOARD_CONNECT вниз по стеку устройств.

Если запрос не выполнен, kbfiltr завершает запрос с соответствующим состоянием ошибки.

Kbfiltr предоставляет шаблон для подпрограммы обратного вызова службы фильтра, которая может дополнять операцию KeyboardClassServiceCallback, подпрограмму обратного вызова класса Kbdclass. Обратный вызов службы фильтров может фильтровать входные данные, передаваемые из входного буфера устройства в очередь данных класса.

IOCTL_INTERNAL_KEYBOARD_DISCONNECT

Запрос IOCTL_INTERNAL_KEYBOARD_DISCONNECT завершен с состоянием STATUS_NOT_IMPLEMENTED. Обратите внимание, что Plug and Play клавиатуру можно добавить или удалить диспетчером Plug and Play.

Для всех остальных запросов на управление устройствами Kbfiltr пропускает текущий стек IRP и отправляет запрос вниз по стеку устройств без дальнейшей обработки.

Подпрограммы обратного вызова, реализованные Kbfiltr

KbFilter_InitializationRoutine

См. PI8042_KEYBOARD_INITIALIZATION_ROUTINE

KbFilter_InitializationRoutine не требуется, если инициализация клавиатуры по умолчанию I8042prt достаточна.

I8042prt вызывает KbFilter_InitializationRoutine при инициализации клавиатуры. Инициализация клавиатуры по умолчанию включает следующие операции:

  • сброс клавиатуры
  • установка типматической скорости и задержки
  • установка светоизлучающих диодов (светодиодный индикатор)

KbFilter_IsrHook

См. PI8042_KEYBOARD_ISR. Этот обратный вызов не требуется, если достаточно операции I8042prt по умолчанию.

IsR клавиатуры I8042prt вызывает KbFilter_IsrHook после проверки прерывания и считывает код сканирования.

KbFilter_IsrHook выполняется в режиме ядра в IRQL клавиатуры I8042prt.

KbFilter_ServiceCallback

См. PSERVICE_CALLBACK_ROUTINE.

Подпрограмма завершения отправки ISR драйвера функции вызывает KbFilter_ServiceCallback, которая затем вызывает реализацию драйвера класса клавиатуры PSERVICE_CALLBACK_ROUTINE. Поставщик может реализовать обратный вызов службы фильтра для изменения входных данных, передаваемых из входного буфера устройства в очередь данных класса. Например, обратный вызов может удалять, преобразовывать или вставлять данные.

Пример Moufiltr

Moufiltr предназначен для использования с Mouclass, драйвером системного класса для устройств мыши, используемых с Windows 2000 и более поздних версий, и I8042prt, драйвер функции для мыши в стиле PS/2, используемой с Windows 2000 и более поздних версий. Moufiltr демонстрирует, как фильтровать запросы ввода-вывода и добавлять подпрограммы обратного вызова, которые изменяют работу Mouclass и I8042prt.

Дополнительные сведения об операции Moufiltr см. в следующих статьях:

Файл заголовка ntddmou.h WDK.

Пример исходного кода Moufiltr .

Коды элементов управления Moufiltr

IOCTL_INTERNAL_I8042_HOOK_MOUSE

Запрос IOCTL_INTERNAL_I8042_HOOK_MOUSE добавляет подпрограмму обратного вызова ISR в isR мыши I8042prt. Обратный вызов ISR является необязательным и предоставляется драйвером фильтра мыши верхнего уровня.

I8042prt отправляет этот запрос после получения запроса IOCTL_INTERNAL_MOUSE_CONNECT . I8042prt отправляет синхронный запрос IOCTL_INTERNAL_I8042_HOOK_MOUSE в начало стека устройств мыши.

После того как Moufiltr получит запрос мыши на перехватчик, он фильтрует запрос следующим образом:

  • Сохраняет сведения верхнего уровня, передаваемые в Moufiltr, которая включает контекст объекта устройства верхнего уровня и указатель на обратный вызов ISR.
  • Заменяет сведения верхнего уровня собственными.
  • Сохраняет контекст I8042prt и указатели на обратные вызовы, которые могут использовать обратные вызовы ISR Moufiltr.

Процедуры обратного вызова Moufiltr

IOCTL_INTERNAL_MOUSE_CONNECT

Запрос IOCTL_INTERNAL_MOUSE_CONNECT подключает службу Mouclass к устройству мыши.

IOCTL_INTERNAL_MOUSE_DISCONNECT

Запрос IOCTL_INTERNAL_MOUSE_DISCONNECT завершается Moufiltr с состоянием ошибки STATUS_NOT_IMPLEMENTED.

Для всех остальных запросов Moufiltr пропускает текущий стек IRP и отправляет запрос в стек устройств без дальнейшей обработки.

Подпрограммы обратного вызова

MouFilter_IsrHook

См. PI8042_MOUSE_ISR.

Обратный вызов MouFilter_IsrHook не требуется, если достаточно операции I8042prt по умолчанию.

IsR мыши I8042prt вызывает MouFilter_IsrHook после проверки прерывания.

Чтобы сбросить указатель мыши, I8042prt проходит последовательность операционных подстатов, каждая из которых определяется значением перечисления MOUSE_RESET_SUBSTATE. Дополнительные сведения о том, как I8042prt сбрасывает мышь и соответствующие подсостояния сброса мыши, см. в документации по MOUSE_RESET_SUBSTATE в ntdd8042.h.

MouFilter_IsrHook выполняется в режиме ядра в IRQL мыши I8042prt.

MouFilter_ServiceCallback

DPC isR i8042prt вызывает MouFilter_ServiceCallback, который затем вызывает MouseClassServiceCallback. Обратный вызов службы фильтра можно настроить для изменения входных данных, передаваемых из входного буфера устройства в очередь данных класса. Например, обратный вызов может удалять, преобразовывать или вставлять данные.

Источник

Adblock
detector