Кб драйвер фильтра что это такое

Обновлено: 02.07.2024

За более чем полмесяца с тех пор, как автор соприкоснулся с драйвом, я глубоко осознал сложность всего в начале и важность настойчивости в обучении. Автор тоже новый водитель. Когда я впервые начал общаться с водителем, я посмотрел «Конкретное объяснение технологии разработки драйверов Windows» Чжан Фань. Это было очень подробно. Это хороший учебный материал для новичков. Но еще важнее больше практиковаться самостоятельно. Когда вы изучаете соответствующие знания о синхронной работе, это действительно чтение небесной книги. В конце концов, я бросил изучение этой книги. После поиска материалов сумасшедшего Бен Чу я чувствую, что эта книга довольно сложна для новичков. Автор такой. Многие моменты знаний не очень ясны. Сделать это можно только собственными чувствами, но результат будет безжалостным. Синий экран ^_^. В конце концов, я хочу, чтобы автор был настойчив.


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

А затем посредством обработки добиться фильтрации ключевой информации, которую мы хотим. Первое устройство в подключенном драйвере — это наше фильтрующее устройство. Когда кнопка срабатывает, информация о кнопке сначала перехватывается написанным нами устройством, но в это время перехватывается информация о кнопке, которая не была обработана. Затем измените его. Как с этим бороться? Спросим у драйвера клавиатуры. Когда мы перехватываем IRP ключа, мы не выполняем никакой обработки в первую очередь. Установите функцию обратного вызова для IRP и передайте ее устройству, управляемому клавиатурой. Таким образом, когда ключ IRP обрабатывается драйвером клавиатуры, наша функция обратного вызова будет запущена, и в это время мы обрабатываем информацию о ключе. При удалении нашего фильтрующего устройства возникнет проблема, связанная с тем, что будет установлена ​​процедура обратного вызова, которая была установлена ​​IRP, и она ожидает срабатывания кнопки. Предполагая, что этот IRP удалит наш драйвер фильтра перед его обработкой, он вызовет синий диск. Почему появляется синий экран? Поскольку этот IRP был установлен с функцией обратного вызова, когда IRP обрабатывается, перейдите к установленной нами функции обратного вызова. Поскольку мы удалили перед тем, как IRP не обрабатывается, IRP не смог найти функцию обратного вызова в это время, поэтому результат синий экран. Большинство решений заключается в размещении счетчика при обработке IRP. Когда счетчик не равен 0, это означает, что IRP не завершен. При удалении используйте while, чтобы дождаться завершения IRP. Допустим, мы не нажимаем С клавиатурой, она будет ждать бесконечно, и это тоже повлияет на производительность системы.
Изучив соответствующую информацию, мы нашли еще одно решение — стать прокси IRP, а затем сохранить исходный IRP, потому что мы можем отменить наш IRP. При удалении сначала удалите наш IRP-прокси, а затем отправьте исходный сохраненный IRP, чтобы очень хорошо побороть ОШИБКУ бесконечного ожидания. Но автор не нашел соответствующего кода, так что пришлось попробовать самому. После полудня тестирования автор обнаружил, что нам нужно делать только прокси IRP, а исходный IRP сохранять не обязательно. При удалении мы напрямую отменяем свой IRP, и нет необходимости отправлять еще один IRP. Давайте узнаем о драйвере фильтра клавиатуры с помощью подробного кода.

//Запись драйвера extern "C" NTSTATUS DriverEntry(IN PDRIVER_OBJECT pDriverObject, IN PUNICODE_STRING pRegistryPath) DriverUnload=FilterUnload;//Установить для чтения функцию отправки pDriverObject->MajorFunction[IRP_MJ_READ]=FilterDispatchRoutin; BindDevice(pDriverObject); DbgPrint("Конец загрузки драйвера. /n"); вернуть STATUS_SUCCESS;>

В основной функции вызовите BindDevice, чтобы реализовать создание и привязку драйвера фильтра. Код выглядит следующим образом:

Обсудите здесь ObReferenceObjectByName. Позвольте мне работать . Метод не экспортируется. Если вы меня знаете, мы можем использовать его, объявив его в заголовочном файле. Объявление выглядит следующим образом:

//Получить объект устройства по имени. Эта функция не является публичной. Вы можете напрямую использовать extern "C" NTSTATUS ObReferenceObjectByName( PUNICODE_STRING objectName, ULONG Attributes, PACCESS_STATE AccessState, ACCESS_MASK DesiredAccess, POBJECT_TYPE objectType, KPROCESSOR_MODE accessMode, PVOID ParseContext, PVOID ParseContext, PVOID * Object);

В методе BindDevice вызывается метод CreateDevice , который отвечает за создание фильтрующего устройства и его присоединение к целевому устройству. Подробный код выглядит следующим образом:

//Создаем устройство NTSTATUS CreateDevice(IN PDRIVER_OBJECT pDriverObject,IN PDEVICE_OBJECT oldDevObj) pDevExt=(PDEVICE_EXTENSION)pDevObj->DeviceExtension;//Объект устройства хранения pDevExt->pDevice=pDevObj;//Исходное устройство перед привязкой pDevExt->poldDevice =oldDevObj;//Бит флага pDevObj->Flags |=oldDevObj->Flags & (DO_BUFFERED_IO | DO_DIRECT_IO | DO_POWER_PAGABLE);//Этот флаг указывает, что диспетчер ввода-вывода отправляет все запросы Open на объект управляющего устройства. Выполнение обнаружения безопасности pDevObj ->Characteristics=oldDevObj->Characteristics;//Привязка устройства PDEVICE_OBJECT topDev = IoAttachDeviceToDeviceStack(pDevObj,oldDevObj);if(topDev==NULL) //Поместите связанное устройство и оригинальное устройство в расширение устройства pDevExt->poldDevice= oldDevObj; pDevExt->pbindDevice=topDev; pDevObj->Flags=pDevObj->Flags & ~DO_DEVICE_INITIALIZING; KdPrint(("Привязка выполнена успешно../n")); вернуть STATUS_SUCCESS;>

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

//Функция отправки NTSTATUS FilterDispatchRoutin(IN PDEVICE_OBJECT pDevObj,IN PIRP pIrp) StackIrpGetCurrentDeviceExcurrent package//Копируем текущий irp в нижний стек irp устройства IoCopyCurrentIrpStackLocationToNext(pIrp);//Сохраняем исходный irp//pDevExt->tagIrp= pIrp;//Прокси irp pDevExt->proxyIrp=pIrp;//Устанавливаем по завершении irp Процедура обратного вызова IoSetCompletionRoutine(pDevExt->proxyIrp,CallBackKbdFilter,pDevObj,TRUE,TRUE,TRUE); DbgPrint("Процедура обратного вызова irp настроена. /n"); вернуть IoCallDriver(pDevExt->poldDevice,pDevExt->proxyIrp );>

Обратите внимание, что при обработке функции отправки мы заменяем IRP нашим собственным IRP, чтобы мы могли отменить IRP, мы устанавливаем функцию обратного вызова для IRP и запускаем функцию обратного вызова при обработке IRP, обратный вызов функция Например, следующее:

Функция не объяснена, в основном обработка makecode , но в функции обратного вызова цитируется сравнительная таблица, например следующая:

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

Метод отмены IRP вызывается в функции загрузки. Код выглядит следующим образом:

BOOLEAN CancelIrp(PIRP pIrp) if(pIrp->Cancel || pIrp->CancelRoutine==NULL) < DbgPrint("Отменить ошибку irp. /n"); return FALSE;>if(FALSE==IoCancelIrp(pIrp)) //Сбросить этот пример до пустого после отмены IoSetCancelRoutine(pIrp,NULL); вернуть ИСТИНА;>

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

Нужен ли фильтр ASUS Keyboard Device?

Я заметил, что на моем диске с драйверами, который поставлялся с моим G75VW, нет даже фильтра клавиатурных устройств, он устанавливает только пакет ATK.

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

Я могу установить только фильтр клавиатурных устройств 1.0.0.5, который я получил из раздела Windows 8.

Нужно ли устанавливать фильтр устройств ASUS Keyboard?

так почему не устанавливается версия 1.0.0.3 из раздела ASUS/Windows 7?

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

Посмотрите на ссылку ниже, прокрутите вниз, пока не увидите KB Filter. Я попытался установить версию 1.0.03, но получил ошибку и не смог установить. Мне это действительно не нужно.

KB Filter — технически это драйвер, Asus указывает его как утилиту. Фильтр KB — это драйвер, добавляющий дополнительные функции к стандартным функциям клавиатуры, например включение нескольких комбинаций клавиш.

Это подтверждает, что у фильтра клавиатурных устройств 1.0.0.3 есть проблема. Я надеюсь, что кто-то, кто работает в ASUS, сообщит им об этом

Фильтр устройств базы знаний, который он использует при установке разностного макета. При установке разностного макета базы знаний на ваш ноутбук вы будете использовать этот инструмент для фильтрации.

Первоначальное сообщение от Mike_Lu@ASUS


Не могли бы вы перепечатать это на правильном английском языке. Я ничего не понял из того, что вы сказали

Первоначальное сообщение от DanishKid

Я заметил, что на моем диске с драйверами, который поставлялся с моим G75VW, нет даже фильтра клавиатурных устройств, он устанавливает только пакет ATK.

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

Вы также можете подтвердить, что у вас есть G75VW и вы используете Win7, но я смог без особых проблем установить фильтр клавиатуры V1.0.0.3 на моем тестовом устройстве G75VW Win7, как показано ниже, хотя я до сих пор не установил точно выяснил, для чего это нужно.

После загрузки и разархивирования драйвера запустите файл PNPINST64.exe и скажите «Да» контролю учетных записей пользователей и еще раз «Да», когда программа установки драйверов Windows спросит, хотите ли вы его установить.

Первоначальное сообщение от cl-Albert

Вы также можете подтвердить, что у вас есть G75VW и вы используете Win7, но я смог без особых проблем установить фильтр клавиатуры V1.0.0.3 на моем тестовом устройстве G75VW Win7, как показано ниже, хотя я до сих пор не установил точно выяснил, для чего это нужно.

После загрузки и разархивирования драйвера запустите файл PNPINST64.exe и скажите «Да» контролю учетных записей пользователей и еще раз «Да», когда программа установки драйверов Windows спросит, хотите ли вы его установить.

Да, чувак, у меня есть G75VW, и драйвер с компакт-диска, прилагаемого к моему ноутбуку, и тот, который я загружаю с ASUS, выдает ту же ошибку.

только 1.0.0.5 устанавливается нормально, но это из раздела загрузки G75VW/Win 8, так что это не тот случай, когда ASUS должна это исправить

После того, как я щелкнул правой кнопкой мыши на PNPINST64.exe и выбрал «Запуск от имени администратора» (имейте в виду, что я администратор), я получаю следующую неизвестную ошибку, это происходило на многих разл. форматы и чистая установка Windows 7


Если вы не видите никаких других проблем, не уверен, хотите ли вы слишком сильно беспокоиться об этом или просто использовать версию 1.0.0.5, но я все же хотел бы выяснить, почему это не так. я сам работаю.
В любом случае, исходный 64-разрядный заводской образ ASUS English Win7 для моего устройства G75VW не имел установленного драйвера фильтра клавиатуры ASUS и использовал драйвер от Microsoft, насколько я помню (я могу восстановить и проверить это, если хотите). для сравнения), но я только что установил 1.0.0.3 на этот образ, и все прошло нормально.

<р>1. Спасибо за снимок экрана, и я только что открыл файл PNPINST64.exe вместо того, чтобы работать от имени администратора, и сказал «да» на приглашение UAC, которое появилось сразу же, если это имеет значение.

<р>2. Предположим, вы используете 64-разрядную версию Win7, а не Win8, но также хотели убедиться, что у вас еще не установлен драйвер фильтра клавиатуры версии 1.0.0.5, хотя вы упомянули, что пробовали чистую установку, так что это не похоже на это.

<р>3. Если у вас все еще есть исходный образ ASUS Win7, восстановите его и повторите попытку, но если вы установили драйвер ATK, Intel Inf и драйвер vga после чистой 64-разрядной установки Win7, я думаю, все должно быть в порядке.

<р>4. Не ожидайте, что загрузка драйвера повреждена, но размер zip-файла составляет 171 264 байта (172 032 размера на диске) в моей системе, если вы хотите, чтобы я отправил его вам. В каталоге более высокого уровня также была пара файлов после распаковки, если это имеет значение, поэтому вы можете сохранить их на всякий случай.

Что ж, идеи заканчиваются, так что дайте мне знать, если вы можете придумать что-нибудь еще, что вы хотите, чтобы я попробовал или о чем вам рассказал.

Фильтр клавиатуры можно использовать для подавления нежелательных нажатий клавиш или комбинаций клавиш. Обычно пользователь может использовать определенные комбинации клавиш Microsoft Windows, такие как Ctrl+Alt+Delete или Ctrl+Shift+Tab, чтобы изменить работу устройства, заблокировав экран или используя диспетчер задач для закрытия работающего приложения. Это может быть нежелательно, если ваше устройство предназначено для определенной цели.

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

Фильтр клавиатуры не поддерживается в сеансе удаленного рабочего стола.

Требования

Windows 10 Корпоративная или Windows 10 для образовательных учреждений.

Терминология

Включить, активировать: чтобы сделать настройку доступной для устройства и при необходимости применить настройки к устройству. Обычно включить используется в пользовательском интерфейсе или на панели управления, тогда как включить используется для командной строки.

Встроенный фильтр клавиатуры: эта функция называется встроенным фильтром клавиатуры в Windows 10 версии 1511.

Фильтр клавиатуры. Эта функция называется фильтром клавиатуры в Windows 10 версии 1607 и более поздних.

Включить фильтр клавиатуры

По умолчанию фильтр клавиатуры не включен. Вы можете включить или отключить фильтр клавиатуры на своем устройстве, выполнив следующие действия.

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

Включить фильтр клавиатуры с помощью панели управления

  1. В поле "Поиск в Интернете и Windows" введите "Программы и компоненты" и либо нажмите Enter, либо коснитесь или щелкните "Программы и компоненты", чтобы открыть его.
  2. В окне "Программы и компоненты" нажмите "Включение или отключение компонентов Windows".
  3. В окне "Компоненты Windows" разверните узел "Блокировка устройства" и установите или снимите флажок "Фильтр клавиатуры".
  4. Нажмите "ОК". Окно компонентов Windows указывает, что Windows 10 ищет необходимые файлы, и отображает индикатор выполнения. После обнаружения окно указывает, что Windows 10 применяет изменения. По завершении в окне будет указано, что запрошенные изменения завершены.
  5. Нажмите "Закрыть", чтобы закрыть окно компонентов Windows.

Настройка клавиатуры с помощью Unattend

  1. Вы можете настроить параметры автоматической установки в компоненте Microsoft-Windows-Embedded-KeyboardFilterService, чтобы добавить функции фильтра клавиатуры к вашему изображению на этапе проектирования или создания образа.
  2. Вы можете вручную создать файл ответов для автоматической установки или использовать диспетчер установки Windows (Windows SIM), чтобы добавить в файл ответов соответствующие параметры. Дополнительные сведения о параметрах фильтра клавиатуры и примерах XML см. в параметрах Microsoft-Windows-Embedded-KeyboardFilterService.

Включить и настроить фильтр клавиатуры с помощью конструктора конфигураций Windows

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

Создайте пакет подготовки в конструкторе конфигураций Windows, следуя инструкциям в разделе Создание пакета подготовки.

В окне "Выбор редакции Windows" выберите "Общие для всех выпусков Windows для настольных ПК".

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

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

В этом примере используется образ Windows с именем install.wim, но вы можете использовать ту же процедуру для применения пакета подготовки. Дополнительные сведения о DISM см. в разделе Что такое обслуживание образов развертывания и управление ими.

Включить и настроить фильтр клавиатуры с помощью DISM

Откройте командную строку с правами администратора.

Скопируйте install.wim во временную папку на жестком диске (в следующих шагах предполагается, что она называется C:\wim).

Создайте новый каталог.

Смонтировать образ.

Включить функцию.

Зафиксировать изменение.

Функции фильтра клавиатуры

Фильтр клавиатуры имеет следующие функции:

Поддерживает аппаратные клавиатуры, стандартную экранную клавиатуру Windows и сенсорную клавиатуру (TabTip.exe).

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

Например, если пользователь нажимает клавиши Ctrl и Alt на аппаратной клавиатуре и в то же время нажимает клавишу Delete на программной клавиатуре, фильтр клавиатуры по-прежнему может обнаруживать и подавлять функции Ctrl+Alt+Delete.< /p>

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

Можно настроить ключ для выхода из заблокированного сеанса пользователя, чтобы вернуться на экран приветствия.

Автоматически обрабатывает динамические изменения макета.

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

Может принудительно отключить функцию Ease of Access.

Может блокировать физические аппаратные ключи.

Поддерживает архитектуры x86 и x64.

Коды сканирования и раскладки клавиатуры

При нажатии клавиши на физической клавиатуре клавиатура отправляет код сканирования драйверу клавиатуры. Затем драйвер отправляет код сканирования в ОС, и ОС преобразует код сканирования в виртуальный ключ на основе текущего активного макета. Раскладка определяет сопоставление клавиш на физической клавиатуре и имеет множество вариантов. Клавиша на клавиатуре всегда отправляет один и тот же скан-код при нажатии, однако этот скан-код может сопоставляться с разными виртуальными клавишами для разных раскладок. Например, в английской (США) раскладке клавиатуры клавиша справа от клавиши P соответствует «

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

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

Для экранной клавиатуры Windows фильтр клавиатуры преобразует каждое нажатие клавиши в код сканирования на основе раскладки и обратно в виртуальную клавишу. Это позволяет фильтру клавиатуры подавлять клавиши экранной клавиатуры так же, как и физические клавиши клавиатуры, независимо от того, настроены ли они с помощью скан-кода или виртуальной клавиши.

Фильтр клавиатуры и функции быстрого доступа

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

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

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

Настройка фильтра клавиатуры

Вы можете настроить следующие параметры фильтра клавиатуры:

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

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

Вы можете настроить фильтр клавиатуры с помощью поставщиков инструментария управления Windows (WMI). Вы можете использовать поставщиков WMI фильтра клавиатуры непосредственно в скрипте PowerShell или в приложении.

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

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

Возможно, вам потребуется войти на заблокированное устройство с другой учетной записью, чтобы обслуживать или настраивать устройство. Вы можете настроить ключ взлома для выхода из заблокированной учетной записи, указав код сканирования ключа. Когда вы нажимаете Ctrl+Alt+Delete, Windows отображает экран приветствия, чтобы вы могли войти в другую учетную запись.

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

Фильтр клавиатуры

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

Фильтр клавиатуры не может блокировать клавишу сна.

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

Клавиши сложения (+), умножения (*), вычитания (-), деления (/) и десятичной дроби (.) имеют другие виртуальные клавиши и коды сканирования на цифровой клавиатуре, чем на основной клавиатуре. Вы должны заблокировать оба ключа, чтобы заблокировать эти ключи. Например, чтобы заблокировать клавишу умножения, вы должны добавить правило для блокировки «*», а также правило для блокировки умножения.

При блокировке экрана с помощью экранной клавиатуры или комбинации физической клавиатуры и экранной клавиатуры экранная клавиатура отправляет в ОС дополнительное нажатие клавиши с логотипом Windows. Если ваше устройство использует оболочку Windows 10 и вы используете фильтр клавиатуры, чтобы заблокировать клавишу с логотипом Windows + L, дополнительное нажатие клавиши с логотипом Windows заставляет оболочку переключаться между начальным экраном и последним активным приложением, когда пользователь пытается заблокировать устройство. с помощью экранной клавиатуры, что может быть неожиданным.

Некоторые специальные программы для клавиатуры, такие как Microsoft IntelliType Pro, могут устанавливать драйверы фильтра клавиатуры, которые не позволяют фильтру клавиатуры блокировать некоторые или все клавиши, обычно расширенные клавиши, такие как BrowserHome и Search.

В бесплатной учебной библиотеке OSR содержится более 50 статей по широкому кругу тем, связанных с написанием и отладкой драйверов устройств и мини-фильтров. От начального уровня до продвинутого. Все статьи были недавно пересмотрены и обновлены, и они написаны с использованием ясного и определенного стиля, который вы привыкли ожидать от OSR на протяжении многих лет.

Привет всем,
Есть ли требование от Microsoft, чтобы драйвер фильтра клавиатуры был основан на KMDF, чтобы получить сертификат HCK?
Если да, может ли кто-нибудь указать мне какой-нибудь материал по этому вопросу, пожалуйста? Спасибо.

Комментарии

И можно ли установить драйвер верхнего фильтра для класса клавиатуры без перезагрузки компьютера? Думаю, нет. Верно?

Tim_Roberts

Член Tim_Roberts — Всего сообщений электронной почты: 14 234

Верно. Драйверы фильтров можно добавлять только при запуске устройства. Однако вам не нужно перезагружаться; вы можете отключить/включить устройство в Диспетчере устройств или использовать «перезапуск devcon».

Тим Робертс, [email protected]
Providenza & Boekelheide, Inc.

Мне известно, что фильтр класса клавиатуры установлен для всех клавиатур. То есть, USB/BT и PS2 и т. д., т. е. фильтр также будет находиться поверх стека PS2. Стек PS2 по дизайну не может быть отключен/включен. Учитывая это, как мне подписать этот драйвер фильтра? Мы знаем, что тесты HLK нагружают стек драйверов последовательностью операций включения и отключения, с которыми PS2 не справится.

Может ли драйвер верхнего фильтра класса клавиатуры, установленный с помощью Inf, пройти сертификацию HCK?
Если да, то к какому классу относится этот тест? Похоже, что входной класс на самом деле не покрывает стек фильтров класса клавиатуры/мыши.
И есть ли требование со стороны Microsoft, чтобы драйвер фильтра клавиатуры был основан на KMDF, чтобы получить сертификат HCK?
Спасибо.

Tim_Roberts

Член Tim_Roberts — Всего сообщений электронной почты: 14 234

WHQL тестирует устройства. Ваш фильтр клавиатуры/мыши является частью устройства ввода. Это класс.

У вас не будет никаких драйверов PS/2, если у вас нет устройства PS/2. И вам не нужно перезапускать КАЖДОЕ устройство — только то, которое вы хотите протестировать.

Как вы думаете, почему Microsoft требует, чтобы фильтры клавиатуры были KMDF? Если вы не найдете это в документе, это просто слух. Сомневаюсь, что им было бы интересно.

Тим Робертс, [email protected]
Providenza & Boekelheide, Inc.

О перезапуске стека устройств: Мой фильтр будет верхним фильтром класса клавиатуры, не относящимся к конкретному устройству, поэтому он будет поверх устройства PS2, если оно присутствует на компьютере. Обрабатывают ли тесты WHQL стек PS2 по-другому, чтобы приспособить тесты PNP типа "отключить/включить"?

Однако мне не удалось найти никаких упоминаний об этом от Microsoft. Поэтому я хотел бы прояснить этот вопрос.

Peter_Viscarola_(OSR)< бр />

Peter_Viscarola_(OSR) Сообщения администратора: 8875

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

Peter_Viscarola_(OSR)< бр />

Peter_Viscarola_(OSR) Сообщения администратора: 8875

Чтобы дополнить мою публикацию, вы можете найти соответствующие документы здесь.

Device.Input.Keyboard.KernelModeDriversUseWdfKmdf
Драйверы режима ядра клавиатуры должны использовать WDF-KMDF.
Описание
Драйверы режима ядра клавиатуры сторонних производителей должны быть перенесены на модель WDF KMDF.

Tim_Roberts

Член Tim_Roberts — Всего сообщений электронной почты: 14 234

О перезапуске стека устройств: Мой фильтр будет верхним фильтром класса клавиатуры, не относящимся к конкретному устройству, поэтому он будет
поверх устройства PS2, если оно присутствует на компьютере. Обрабатывают ли тесты WHQL стек PS2 по-другому, чтобы
приспособить тесты PNP типа "отключить/включить"?

Я не понимаю, почему вы беспокоитесь об этом. Если в вашей тестовой системе нет устройства PS/2, а есть очень немногие, то такой ситуации не возникнет. WHQL тестирует определенные устройства. Он не тестирует «фильтры классов», он тестирует определенные устройства, на которых установлен ваш фильтр. Он не проверяет (не может) каждую комбинацию, которая может возникнуть.

Читайте также: