Re: Сообщения из ядра
От: jamj  
Дата: 17.11.03 14:12
Оценка:
Здравствуйте, Ignoramus, Вы писали:

I>Господа!


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


I>На данный момент мне удалось "написать" WDM-драйвер пустышку, который устанавливается как "upper filter" к какому-либо устройству и выдает в DebugPrint информацию обо всех IOCTL, которые этому устройству передаются системой.


I>Теперь меня интересуют следующие ламерские вопросы:


I>1) Можно ли из ядра передавать сообщения окнам?


Напрямую нельзя. Только через приложение (сервис), работающее в паре с драйвером, т.е. из user mode.
Окна реализуются в подсистеме win32 и компоненты ядра ничего о них не знают.

I>Обязательно всем (broadcast) или можно указать конкретное окно?

I>Как получить хендл окна из ядра?

Никак, Такого объекта в ядре нет и соответственно нет нужных функций. Все это реализовано в user-mode.

I>(Я читал, что для общения драйвера с приложениями обычно используются объекты ядра (event, mutant etc.), но ведь это, I>насколько я понимаю, довольно медленный механизм, а если сообщения "сыпятся" очередями, то будет тормозить? Так хочется I>просто послать сообщение... )


Все функции для общения с окнами доступны только из юзер-мода.

I>2) Каким образом проходят сообщения от lower драйверов? Т.е. в отличие от IOCTL, которые передаются системой "сверху вниз", сообщения от реальных устройств очевидно движутся в обратном направлении, т.е. "снизу вверх". Как выглядят сообщения от lower драйверов в upper драйвере? Какой механизм используется чтобы сообщить системе о возникновении ввода? Как сообщения затем "расбрасываются" по окнам системой?


Если отвечать на вопросы подробно, то понадобится несколько часов. Ты неправильно преставляешь себе архитектуру ядра. Читай документацию DDK, она входит в последние MSDN и есть в онлайне.

I>Спасибо.


WBR, Alexey
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.