Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Открытие файла во время обработки IRP_MJ_CREATE из юз. проц.  (Прочитано 6121 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Thor
Гость
« : 30-08-2004 16:49 » 

Есть такая проблема - при открытии файла, ловлю IRP_MJ_CREATE и сигналю юзер процесу - он пытается окрыть файл и прочитать даные.
Но при вызове функции CreateFile начинаются странные вещи - IO manager по 10-30 секунд не пускает IRP_MJ_CREATE от моего процеса вниз , ко мне, потом проскакивает мой IoCallDriver и возвращает нормальный хэндл. Процесс АйДи своего процесса я запоминаю и его реквэсты пропускаю вниз. Во время открытия файла IRP_MJ_CREATE вниз ещё не ушло. Причём не для всех файлов - некоторые IRP_MJ_CREATE резво пробегают, некоторые не приходят по 10-30 секунд. Пробовал пускать IRP_MJ_CREATE вниз с принудительно установленым FILE_SHARE_READ и после этого уже открывать - то же самое. В общем ситуация такая что пока чужой поток ждёт завершения  открытия файла, мой пытается его открыть, и открывает только вот задержки чё то нереальные. В чём может быть проблема?  Может подход у меня не правильный - если неправильный то подскажите как организовать эту хрень - доступ юзер процеса к даным из файла пока IRP_MJ_CREATE из другого потока ждёт подтверждения ждёт подтверждения.
Записан
mad
Гость
« Ответ #1 : 01-09-2004 14:04 » 

хм....очень трудно было понять что собстно происходит.
как я понимаю ты не пропускаешь irp от чужих процессов c irp_mj_create а подвешиваешь его - это не хорошо, его лучше тогда уж завершить с ошибкой. И если эти задержки уберутся, тогда простое следствие. Так делать нельзя, и знаниями изложенными в ddk не обойтись, что бы делать так, как я понял =).
Записан
Thor
Гость
« Ответ #2 : 01-09-2004 14:34 » 

Проблему я нашёл, такое происходит только на ВМ Варе на нормальном компе , всё открывается без задержек. Я по разному пробовал у меня уже 3 разных версии драйвера - одна на ивентах подвешивает запрос  до того как вниз пустить, другая пускает и потом подвешивает,  третья на пендингах и списках заморочена - все, без исключения хреново работают на ВМ Варе - но на физической машине все работают нормально в смысле открытия файла во время обработки запросов.

Цитата

как я понимаю ты не пропускаешь irp от чужих процессов c irp_mj_create а подвешиваешь его - это не хорошо,


почему это нехорошо я не понимаю - поток просто ждёт ивента или у ИО мэнэджера какие то таймауты есть ?

Цитата

хм....очень трудно было понять что собстно происходит

Ну сорри как думаю так пишу, после этих ИФС китов ОСРов и тд. голова как улей.
Записан
grozny
Гость
« Ответ #3 : 01-09-2004 19:36 » 

Цитата
такое происходит только на ВМ Варе,
 на нормальном компе всё открывается без задержек

дык! вопрос надо адресовать писателям VM Ware, если я правильно понимаю процитированное (после перенесения запятой).
Записан
mad
Гость
« Ответ #4 : 02-09-2004 07:33 » 

как я предполагаю у тебя машина работает с файл образом диска?
расскажи куда ты ставил вм.винду и как ее запускаешь.
я как поставил ось (линух) на отдельный винт работа вм ускорилась раза в 2.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines