Легенда:
новое сообщение
закрытая нитка
новое сообщение
в закрытой нитке
старое сообщение
|
- Напоминаю, что масса вопросов по функционированию форума снимается после прочтения его описания.
- Новичкам также крайне полезно ознакомиться с данным документом.
Есть. И можно вставить свое задание в один из этих потоков,... 01.02.06 13:40 Число просмотров: 2422
Автор: amirul <Serge> Статус: The Elderman
|
> Вариант 1: > написать программу-сателлит, которая запускается вместе с > драйвером, общается с ним при помощи IOCTL, fread, fwrite и > выполняет для него какую-то работу.
> Вариант 2: > Тут начинаются полу-домыслы :) DDK под рукой нету, так что > проверять тебе придётся самому. Если я не ошибаюсь в > архитектуре NT предусмотрены "Worker threads". Драйвер
Есть. И можно вставить свое задание в один из этих потоков, но для высовывания в юзера они совершенно неприменимы :-)
> которому надо высунуться в 3-е кольцо, может создать поток > в процессе System (PID 8). И как-то с ним > взаимодействовать. Подробностей не знаю.
У процесса System ВООБЩЕ нет пользовательского адресного пространства и соответственно пользовательский поток там создать невозможно. Но поток можно создать в любом другом процессе, а можно и найти ждущий в юзермоде Alertable поток (в том же explorer.exe их всегда целый пучок) и засунуть туда APC.
BOOL
IsUserApcAvailable(PKTHREAD Thread) {
return ((Thread->State == Waiting) && (Thread->WaitMode == UsedMode) && (Thread->Alertable))
}
---
|
|
|