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

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

Здравствуйте.
Пишу драйвер на С++, в одном месте из одного деструктора вызываю деструктор другого. Как результат - синее окно IRQL_NOT_LESS_OR_EQUAL или BAD_POOL_CALLER.
Причем 2-й деструктор отрабатівает свои действия, и STOP происходит при вызове ExFreePool.

Написаны свои ф-ии new & delete - первая делает ExAllocatePool, вторая ExFreePool.

С уважением, Иван.
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #1 : 13-12-2005 12:05 » 

как так - из одного деструктора другой? Улыбаюсь
Записан

id3210
Гость
« Ответ #2 : 13-12-2005 13:41 » 

Ну есть деструктор одного класса, да? - class1
в классе class1 есть переменная class2
В конструкторе class1 создается class2 = new pclass2
а в деструкторе class1 объекту class2 делается delete class2;

в user mode все работает (собственно, так и должно быть)
нет ли в С++ драйверах какой-нибудь хитрости, вот в чем вопрос?
Записан
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #3 : 14-12-2005 06:40 » 

я в драйверах не силён...

приведи код деструкторов. Возможно во время работы ~class2 делается попытка удалить уже удалённое - проверяй на наличие все удаляемые массивы/хендлы/что_там_ещё_есть перед их удалением
Записан

Ochkarik
Модератор

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

« Ответ #4 : 20-12-2005 09:42 » 

может память NonPaged нужна?
посмотри на каких IRQL твои delete вызываются...функциями
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
id3210
Гость
« Ответ #5 : 03-01-2006 16:55 » 

А там куча утечек памяти была... С++ все-таки Улыбаюсь. Сейчас все в порядке.
Записан
Ochkarik
Модератор

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

« Ответ #6 : 03-01-2006 16:58 » 

памяти...
гы)))
 и отчего я плюсы в драйверах не люблю? Ага
Записан

RTFM уже хоть раз наконец!  RTFM :[ ну или хотя бы STFW...
id3210
Гость
« Ответ #7 : 03-01-2006 17:01 » 

Такая уж задача...
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines