Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Программирование и базы данных (http://forum.oszone.net/forumdisplay.php?f=21)
-   -   Boot-execute программа, ввод с клавиатруры (http://forum.oszone.net/showthread.php?t=30772)

masta 18-11-2002 18:12 210021

Дано: W2k, некая boot-execute программа
Требуется: осуществить ввод данных с клавиатуры, как это делает chkdsk, запрашивая подтвеждение своих действий.
Предполагаемые пути решения: "открыть драйвер", связать его с ранее созданным портом завершения ввода/вывода, поместить ожидание события от клавиатуры в отдельный поток, где и обрабатывать.
Вопрос: Как начать работу с драйвером? Как его проинициализировать (интересует конкретные управляющие коды и структуры) и заставить выдавать данные? Какие статьи/ссылки/форумы/книги следует почитать, чтобы поднять эрудицию в данном вопросе?

То же самое интересует для считывания информации от мыши.

vasketsov 19-11-2002 17:19 210022

masta
Дизассемблировать autochk той же IDA-ой.
Там все более чем тривиально.
Описание функций - см. у Garry Nebbett или тут могу подкинуть если не найдешь.

masta 19-11-2002 18:09 210023

Описания функций - то у меня есть, и книга, собственно, тоже...
Но вот в дизассемблировании я не очень силён...

vasketsov 19-11-2002 18:15 210024

masta
Запускаешь IDA.
Открываешь им autochk.exe (советую скопировать в отдельную папку).
Выбираешь в опциях анализировать UNICODE_STRING-и.
После анализа ищешь \Device\KeyboardClass0 и смотришь что с ним делается, ничего сложнее ZwCreateFile / ZwReadFile / ZwWriteFile / ZwDeviceIoControlFile / ZwFsControlFile там быть не должно в принципе.
Если совсем все плохо, тогда жди, дома погляжу.

masta 19-11-2002 18:22 210025

Спасибо за совет, посмотрю...
(хоть всё совсем плохо, учиться-то надо)


[s]Исправлено: masta, 19:25 19-11-2002[/s]

vasketsov 20-11-2002 11:42 210026

Ну вобщем, так это делается.
Открывается \Device\KeyboardClass0
Потом для каждой итерации ожидания ZwReadFile и ZwWaitForSingleObject.
Потом ZwClose.
Все, больше ничего не надо.

Работающий пример кода тут:
http://zw.nightmail.ru/_bootexe.htm


Время: 11:30.

Время: 11:30.
© OSzone.net 2001-