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

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Kaк оставить память блокированой после выход из IRQ ?  (Прочитано 5602 раз)
0 Пользователей и 5 Гостей смотрят эту тему.
Mike
Гость
« : 09-10-2003 09:47 » 

В драйвере под НТ необходимо по прерываниям писать в
user buffer из драйвера.
делаю mdl, lock and map
       mdl=IoAllocateMdl(bb,size,FALSE,FALSE,NULL);
       MmProbeAndLockPages(mdl,KernelMode,IoModifyAccess);
       bbm=MmMapLockedPages(mdl,KernelMode);
но освободить память надо при другом запросе.
все вроде ок, но при попытке освобождения памяти mdl==NULL.
и далее прога виснет при попытке выхода (память блокирована?)
Если после map&lock выйти с IO_REQUEST_PENDING,
то драйвер виснет при
MmUnmapLockedPages(bbm,mdl);
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 09-10-2003 11:42 » 

Где ты все это делаешь? В отдельном потоке?
Что у тебя с MDL? Он никуда не должен деться. Созданный таким образом MDL глобален для всей системы. Как понимать, что mdl==NULL? MmProbeAndLockPages надо в try except делать.
Очень непонятно у тебя проблема описана, особенно про MDL==NULL.
Записан
maaaaaad
Гость
« Ответ #2 : 10-10-2003 15:54 » 

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

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines