#windows #filter #driver #device #wdk
#Windows #Фильтр #драйвер #устройство #wdk
Вопрос:
Я учусь писать драйвер фильтра и пытаюсь установить его поверх существующего драйвера HID (мыши или клавиатуры) для практики. Насколько я понимаю, я должен, по крайней мере, добавить раздел UpperFilters в раздел реестра оборудования. Есть ли что-нибудь еще, что я должен сделать?
Когда я использую regedit, чтобы вручную добавить ключ UpperFilters к моему целевому устройству USB mouse, regedit сообщает, что не может создать ключ. Я подозреваю, что regedit запрещает внесение изменений в реестр стека драйверов устройств, предоставляемый Windows. Существуют ли какие-либо другие способы установки моего драйвера фильтра в существующий стек устройств?
Комментарии:
1. Похоже, мне нужно предоставить свой собственный INF-файл и выбрать «ИМЕТЬ ДИСК» в мастере обновления драйверов, чтобы использовать свой собственный INF-файл.
Ответ №1:
Windows 7 по умолчанию запрещает изменения в HKLMSYSTEMCurrentControlSetEnum
иерархии для всех, кроме СИСТЕМНОЙ учетной записи (т. Е. даже для администраторов), поэтому добавить UpperFilters
ключ к определенному устройству вручную непросто. Однако из INF это должно быть легко.
Однако, если вы хотите отфильтровать все мыши, вам следует добавить UpperFilters
ключ к классу устройства мыши — т.е. к HKLMSYSTEMCurrentControlSetControlClass{4D36E96F-E325-11CE-BFC1-08002BE10318}
. Это должно быть беспрепятственно даже в Windows 7, но обычно вы делаете это также через INF.
При написании INF вы можете добавить флаг FLG_ADDREG_APPEND (0x00000008) в разделе AddReg, чтобы ваш фильтр был добавлен к любым другим фильтрам в классе устройств Mouse.
Комментарии:
1. Как мне добавить верхние фильтры к классу устройства через INF? Или, я должен лучше сказать, как ИЗМЕНИТЬ верхние фильтры mouseclass, поскольку он уже получил верхний фильтр mouclass.sys . Доступен ли какой-либо пример INF для загрузки?
2. Будет ли это какой-нибудь раздел INF, который выглядит следующим образом: [VBoxMouse_AddReg] HKLM, System CurrentControlSet Control Class {4D36E96F-E325-11CE-BFC1-08002BE10318}, UpperFilters, 0x00010000, «VBoxMouse», «mouclass» . (это тот, который, как я обнаружил, VirtualBox использует для изменения верхнего фильтра класса мыши гостевой установки win сверху своей виртуальной машины)
3. INF от VBoxMouse выглядит хорошим примером. Используйте флаги 0x00010008, чтобы ваш фильтр добавлялся к списку, а не заменял его.
Ответ №2:
Этот драйвер фильтрует ввод для определенной клавиатуры в системе. Если вы хотите фильтровать ввод с клавиатуры со всех клавиатур, подключенных к системе, вы можете установить этот драйвер в качестве фильтра класса ниже драйвера фильтра KbdClass, добавив имя службы этого драйвера фильтра перед фильтром KbdClass в реестре по адресу:
HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlClass{4D36E96B-E325-11CE-BFC1-08002BE10318}UpperFilters
Смотрите эту страницу:
https://github.com/microsoft/Windows-driver-samples/blob/1fe4cc42bedfccb97a5b2cc169f9e5306d41d0de/input/kbfiltr/README.md