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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Помогите с IoCancelIrp  (Прочитано 8147 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
zaynyatyi
Гость
« : 24-11-2008 16:12 » 

Доброго времени суток!

Подскажите кто писал драйвер фильтр файловой системы, каким образом отбрасывать IRP запросы например IRP_MJ_WRITE.
IoCancelIrp возвращает false.

За основу взял фильтр из книги oney, если честно то просто при срабатывании type ==  IRP_MJ_WRITE
то пробуем отменить запрос.

Заранее спасибо
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 24-11-2008 18:34 » 

см  пример DDK,
DDK3790.1830\src\general\toaster\func\featured2\
или
DDK3790.1830\src\general\pcidrv\sys\
а если false - значит отменить данный IRP невозможно ) судя по надписи в DDK))
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
zaynyatyi
Гость
« Ответ #2 : 24-11-2008 20:54 » 

Про невозможность отмены при false я знаю), только не нашел в каком случае разрешается фильтру отменять запрос а в каких нет((
Где то промелькнуло что отмена запроса возможна только на DISPATCH_LEVEL.
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 24-11-2008 20:59 » 

ща тоже гляну...
вобще пока не понимаю при чем тут DISPATCH? А черт его знает...
контекстный поиск в DDK. на слово "Cancel" и "Canceling IRPs". там все сказано...
случай я так понимаю может быть только один - все кто выше по стеку - корректно этот запрос обрабатывают...
« Последнее редактирование: 24-11-2008 21:04 от Ochkarik » Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
zaynyatyi
Гость
« Ответ #4 : 25-11-2008 06:20 » 

Drivers can only cancel IRPs that they have created...
А как быть в случае драйвера фильтра, не он же их создает.
Записан
zaynyatyi
Гость
« Ответ #5 : 25-11-2008 07:43 » new

NTSTATUS DispatchWrite(PDEVICE_OBJECT fdo, PIRP Irp)
  {
  PDEVICE_EXTENSION pdx = (PDEVICE_EXTENSION) fdo->DeviceExtension;
  Irp->IoStatus.Status = STATUS_CANCELLED;
  Irp->IoStatus.Information = 0;
  IoCompleteRequest(Irp, IO_NO_INCREMENT);
  return STATUS_CANCELLED;
  }

Разобрался. Всё таки Oney нужно было перечитать внимательней))
Спасибо за ответы
Записан
Ochkarik
Модератор

ru
Offline Offline
Пол: Мужской

« Ответ #6 : 25-11-2008 09:44 » 

 Не может быть... при чем тут Cancel?
а! ну да) бит отмены)
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines