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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: IoRegisterFileSystem IoUnregisterFileSystem  (Прочитано 11293 раз)
0 Пользователей и 1 Гость смотрят эту тему.
maaaaaad
Гость
« : 29-05-2004 10:33 » 

использование пары
IoRegisterFileSystem IoUnregisterFileSystem

приводит к тому, что драйвер перестает выгружаться....

кто с этим сталкивался и что делать?
Записан
Amun Shu
Гость
« Ответ #1 : 29-05-2004 16:38 » 

а с DriverNotificationRoutine все впорядке?
ну... так на всякий случай спросил...
Записан
maaaaaad
Гость
« Ответ #2 : 29-05-2004 17:10 » 

не, у меня пока fs control object, который над RAW fs драйвером и не фильтр.
DriverNotificationRoutine это вроде для фильтров....

хм....все попытки вывернуться пока привели к неуспеху =)
=) попытка получить указатель на девайс обжект приводит к вызову обр. IRP_MJ_CREATE где у мя стоит заглушка, отплевывающаяся STATUS_UNSUPPORTED. Указатель возвращается с этой ошибкой.
попытка напрямую поставить хук - вылетаю с UNEXPECTED_KERNEL_MODE_TRAP...хз...недавно начал айс глючить....особенно при загрузке =)

хм....поглядел я тут....и кругом =) вроде как fs драйвера у нас не выгружаемые....тогда зачем анрегистер....

я повешусь каждый раз ребутица
Записан
Amun Shu
Гость
« Ответ #3 : 29-05-2004 17:23 » 

Не.. а что  
 IoUnregisterFileSystem(RecognizerDeviceObject);
 IoDeleteDevice(RecognizerDeviceObject);
такая связочка не работает?
Помоему рекогнайзеры так и работают....

кстати по поводу ребутов....
я на VMWare все тестирую... Улыбаюсь)
удобно в этом плане
Записан
maaaaaad
Гость
« Ответ #4 : 29-05-2004 18:38 » 

Цитата

такая связочка не работает?


Не работает! Убираю при входе IoRegisterFileSystem а в анлоада IoUnregisterFileSystem все прекрасно выгружается....А у тебя это разве работает?

IoRegisterFileSystem какую-то бяку с девайсом делает....я тут посмотрел...флаг инициализации, например, сбрасывает =) Ну это в принципе фигня...
Записан
maaaaaad
Гость
« Ответ #5 : 29-05-2004 18:43 » 

SCM отругивается, что сервис сейчас не может принимать команды. Обычно, как бывает, когда пытаешься выгрузить драйвер с незакомплетиным irp..

Нда....надо бы тоже памяти побольше и интегрироватися потихоньку на вмваре...
Записан
maaaaaad
Гость
« Ответ #6 : 29-05-2004 18:45 » 

рефренс девайс обжекта IoRegisterFileSystem точно не делает....
Записан
Amun Shu
Гость
« Ответ #7 : 30-05-2004 10:36 » 

Чесно - FSD к сожалению пока еще не доводилось писать, но у меня сэмплы просто под рукой есть DDKшные... впрочем наверно у тебя тоже....
CDFS например завершает работу, как ты наверно видел, так....

NTSTATUS CdShutdown (    IN PDEVICE_OBJECT DeviceObject,    IN PIRP Irp    )
{
    IoUnregisterFileSystem (DeviceObject);
    IoDeleteDevice (CdData.FileSystemDeviceObject);

    CdCompleteRequest( NULL, Irp, STATUS_SUCCESS );
    return STATUS_SUCCESS;
}

соответственно
    DriverObject->MajorFunction[IRP_MJ_SHUTDOWN]                = CdShutdown;

Сам не пробовал - но в сэмплах так....
Ну что могу сказать - проверь мож какую мелочь забыл/упустил из виду... у самого пожизни бывает - а потом мучаешься - че не работает.....

кстати может правда irp где не завершен?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #8 : 31-05-2004 08:40 » 

to Amun Shu,
 Код IRP_MJ_SHUTDOWN это при shutdown всей системы, это имеет слабое отношение к выгрузке драйвера.

to maaaaaad,
 
Цитата

рефренс девайс обжекта IoRegisterFileSystem точно не делает....


Делает  в IoRegisterFileSystem
Код:

    ExInterlockedAddUlong) &DeviceObject->ReferenceCount, 1, &IopDatabaseLock :

 
а в IoUnregisterFileSystem
Код:

ExInterlockedAddUlong) &DeviceObject->ReferenceCount, 0xffffffff, &IopDatabaseLock :
Записан
maaaaaad
Гость
« Ответ #9 : 01-06-2004 16:17 » 

SlavaI,

Вижу =) Чет с ходу не получается все равно...
Записан
maaaaaad
Гость
« Ответ #10 : 03-06-2004 12:09 » 

хм, я кажется откопал как надо выгружать ifs драйвера.
нужно перед попыткой выгрузить драйвер вызывать unregister.
код приведенный на osronline к примеру не верный. Unload драйвера вобще не вызывается и ситуация аналогичная. попробовать еще надо...
Записан
maaaaaad
Гость
« Ответ #11 : 03-06-2004 15:14 » new

вызов iounregisterfilesystem надо делать отдельным ioctl. Все работает
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines