Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Связывайся, что мешает? [upd] 16.02.05 14:41 Число просмотров: 2377
Автор: amirul <Serge> Статус: The Elderman Отредактировано 16.02.05 14:44 Количество правок: 1
|
> Надо связаться с DDK-ными фильтрами клавы и мыши > (kbfiltr.c, moufiltr.c) как из Kernel (обратится из kbfiltr > в moufiltr) так и из User mode.
Связывайся, что мешает?
> Что для фильтра нельзя задать DeviceName? Если задаю его
> при вызове IoCreateDevice, то ошибка. в kbfiltr.c вместо > DeviceName в IoCreateDevice передается NULL. Как тогда > связыватся с фильтром без имени? или надо обращаться к > имени драйвера клавиатуры, а не фильтра?
Сам ответил на свой вопрос.
> В User mode пытаюсь определить имена имеющиеся драйверов.
Э-э-э. А зачем это?
> Вызываю SetupDiGetClassDevs(), затем > SetupDiEnumDeviceInterfaces(), последний возвращает
Ну дык это ж интерфейсы девайса. Если ты при этом указал класс клавиатуры, то она использует для связи с третьим кольцом символические ссылки, а не интерфейсы и тебе совершенно правильно вернули статус отсутствия интерфейсов у этого девайса.
> ERROR_NO_MORE_ITEMS. Смотрел несколько примеров из DDK > использующих SetupDiEnumDeviceInterfaces() там тоже > ERROR_NO_MORE_ITEMS. > Подскажите, как сделать, а то уже зашол в тупик.
Если тебе ДЕЙСТВИТЕЛЬНО надо перечислить все драйвера в системе, то гораздо приятнее пользоваться NtOpenDirectoryObject/NtQueryDirectoryObject
> PS: > А объединить два фильтра (клавы и мыши) в одном драйвере > можно? Если да то как?
По моему ты путаешь устройства (Device) и драйверы (Driver). Один драйвер может управлять произвольным количеством устройств в том числе и устройств-фильтров.
-----
А еще лучше пользоваться специально для этого предназначенной NtQuerySystemInformation
|
|
|