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

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

Здравствуйте,
 существует проблема описанная в теме. Что я делаю, в кратце:
перехватваю IRP_MJ_DIRECTORY_CONTROL, IRP_MN_QUERY_DIRECTORY. Там устанавлюваю IoSetCompletionRoutine

Что-то вроде:
   IoCopyCurrentIrpStackLocationToNext(Irp);
   if ((irpSp->MajorFunction == IRP_MJ_DIRECTORY_CONTROL) &&
       (irpSp->MinorFunction == IRP_MN_QUERY_DIRECTORY))
       {
            IoSetCompletionRoutine(Irp, Directory_SampleCompletionRoutine, NULL, TRUE, FALSE, FALSE);
        }
   return IoCallDriver( ((PSFILTER_DEVICE_EXTENSION) DeviceObject->DeviceExtension)->AttachedToDeviceObject, Irp );

До этого момента все ок.
Далее, в функции Directory_SampleCompletionRoutine я проверяю статус на STATUS_SUCCESS, irpSp->Parameters.QueryDirectory.FileInformationClass == FileBothDirectoryInformation, (PFILE_BOTH_DIR_INFORMATION) Irp->UserBuffer на количество файлов в нем, кстати почему у меня ВСЕГДА один файл в буфере !!!! В статьях, которы я смотрел, говорится, что это скорее исключение.
Вопрос, чтоб отменить весь буфер, в функции Directory_SampleCompletionRoutine я делаю следующее:

Irp->IoStatus.Status = STATUS_NO_MORE_FILES;
Irp->IoStatus.Information = 0;
return STATUS_NO_MORE_FILES;

  Но файл попрежнему отображается в проводнике (пробовал и с STATUS_NO_SUCH_FILE). Что я делаю не так? Как информация с отмененного IRP может попасть на верх?
  Может фильтровать запросы с FileInformationClass отличным от FileBothDirectoryInformation значением?
  Что будет если я изменю имя файла в буфере на ".." допустим (хотя мне такой вариант очень не нравится)?

Заранее спасибо, за любые подсказки. Просто человека с C# кинули на разработку драйвера, а времени на изучения, как водится не дали Жаль
Записан
SAnatoly
Гость
« Ответ #1 : 28-04-2006 10:30 » 

Проблему решил.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines