Контекст потока в драйвера
От: Аноним  
Дата: 15.09.12 18:28
Оценка:
Возник такой вопрос — функции драйвера могут выполняться в контексте произвольного потока,отсюда следует,что блокировать поток нельзя (KeWaitFor...),но как же тогда быть с посылкой IOCTL другому драйверу с ожиданием ответа (IoCallDriver->KeWaitForSingleObject) — это ведь обыденная практика — но мы не знаем в каком контексте вызывается мы посылаем OCTL поэтому не можем блокировать поток или как? Совсем запутался...
Re: Контекст потока в драйвера
От: ononim  
Дата: 15.09.12 19:22
Оценка:
Обработчик IOCTL'ей выполняется в контексте конкретного потока — того который его позвал. В контексте произвольного (не предсказуемого) потока исполняются всяческие ISR и DPC.
Как много веселых ребят, и все делают велосипед...
Re: Контекст потока в драйвера
От: Аноним  
Дата: 15.09.12 19:24
Оценка:
нужно либо отправлять запрос асинхронно, что более предпочтительно, либо делать синхронный запрос в системном рабочем потоке или собственном потоке драйвера. так же если (top level)драйвер делает свой запрос в результате обработки пользовательского запроса то в принципе здесь может быть допустимо ожидание прямо в контексте потока сделавшего запрос.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.