Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как связать IRP_MJ_READ и IRP_MJ_WRITE, связать hand IRP_MJ_READ и IRP_MJ_WRITE  
:(
    Опции темы
DrHex
Дата 10.9.2009, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



Как можно сделать связь IRP_MJ_READ и IRP_MJ_WRITE с таким что было было известно с оного ли они процесса были посланны.
То и есть вызывается IRP_MJ_WRITE потом логика для работы с данными, после чего в драйвер приходит запрос на IRP_MJ_READ и надо дать ответ.
Но так как приходит он не сразу то драйвер должен понимать какой процесс 

С драйвером работают N процессов. От процессов в произвольное вреся происхоти запрос IRP_MJ_WRITE. После чего происходит обработка запроса. И еще через промежуток времени происходти IRP_MJ_READ. Так вот ответ для каждого процесса будет иникальным, как мне можно узнать от какого процесса прижел запрос??? 

То и есть IRP_MJ_WRITE + process_ID_write 
И когда приходит IRP_MJ_READ + process_ID_read и ищу у себя ответ для данного процесса.????


--------------------
google.com и это все.
PM MAIL   Вверх
xvr
Дата 10.9.2009, 13:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



И IRP_MJ_READ и IRP_MJ_WRITE приходят напрямую из пользовательского процесса (если конечно где то сверху не затесался драйвер-фильтр   smile ). Поэтому ID текущего процесса и будет тем самым ID, см PsGetCurrentProcessId

PM MAIL   Вверх
DrHex
Дата 11.9.2009, 10:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



xvr спасибо, я это видел, просто думал может как то можно два handle связать.....
--------------------
google.com и это все.
PM MAIL   Вверх
xvr
Дата 11.9.2009, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(DrHex @ 11.9.2009,  10:42)
xvr спасибо, я это видел, просто думал может как то можно два handle связать.....

handle'ы чего надо связать? Если те, что вернул CreateFile у пользователя, то посмотри на поле FileObject в IO_STACK_LOCATION
Код

static NTSTATUS DRV_Handler(IN PDEVICE_OBJECT DeviceObject,IN PIRP Irp)
{
   IO_STACK_LOCATION* pIrpStack = IoGetCurrentIrpStackLocation(Irp);
   pIrpStack->FileObject
}


PM MAIL   Вверх
DrHex
Дата 11.9.2009, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



xvr мне нужно связать handle чтения и записи их два....
Один на чтения а второй на запись(одним не обойтись все дело в асинхронности).
Судя со всего только через id процесса.

--------------------
google.com и это все.
PM MAIL   Вверх
xvr
Дата 11.9.2009, 20:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(DrHex @ 11.9.2009,  18:04)
xvr мне нужно связать handle чтения и записи их два....
Один на чтения а второй на запись

Что такое 'handle чтения' и 'handle записи'?
Цитата

(одним не обойтись все дело в асинхронности).
Кто мешает асинхронно из 2х потоков ОДНОВРЕМЕННО писать/читать по одному и тому же handle'у?
Цитата

Судя со всего только через id процесса.
По id процесса свяжутся ВСЕ handle'ы, которые в нем окажутся.
Не совсем понятна общая постановка задачи  smile Что происходит в user space?


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0522 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.