Модераторы: feodorv, GremlinProg, xvr, Fixin
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Контекст выполнения драйвера, хранение созданных драйвером переменых 
V
    Опции темы
shara
Дата 9.9.2009, 20:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



Форумчане такой вот вопрос:
есть фильтрующий драйвер файловой системы. в WDK сказано что он выполняется в контексте приложения обращающегося к драйверу. т.е. приложение вызывает CrateFile(...); и грубо говоря в этом месте управление получает  функция-обработчик запроса IRP_MJ_CREATE_FILE (или ему подобного,  зависит от ситуации). Допустим в этой функции я выделяю N-байт памяти под свои нужды, в связи с этим у меня вопрос, где именно эти N-байт будут храниться логически и  физически. И если другая программа тоже пытается обратиться к файлу, считай еще один  IRP_MJ_CREATE_FILE и еще одни N-байт выделенные под свои нужды. Будут ли видны оба этих N-байт памяти?  или функция будет видеть только ту область памяти которая была зарезервирована при вызовах только в КОНКРЕТНО этой исполняемой проге?


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
DrHex
Дата 10.9.2009, 12:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



Все очень просто. Выделяешь память то и освобождай. Выделил в драйвере значит он и должен освободить. Ну и конечно если он выделил он её и видит. 

Цитата

считай еще один  IRP_MJ_CREATE_FILE и еще одни N-байт выделенные под свои нужды. Будут ли видны оба этих N-байт памяти? 

Будут.


Цитата

 или функция будет видеть только ту область памяти которая была зарезервирована при вызовах только в КОНКРЕТНО этой исполняемой проге?

Нет. Драйверу доступна вся память (память  одного пользовательского процесса(можно переключатся между процессами) + kernel memory) . Когда выделение памяти происходит в драйвере то память выделяется в 'kernel memory' так что в драйвере это память доступна.



--------------------
google.com и это все.
PM MAIL   Вверх
xvr
Дата 10.9.2009, 13:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия

Репутация: 40
Всего: 223



Цитата(DrHex @ 10.9.2009,  12:40)
Нет. Драйверу доступна вся память (память  одного пользовательского процесса(можно переключатся между процессами) + kernel memory) . 

Угу
Цитата

Когда выделение памяти происходит в драйвере то память выделяется в 'kernel memory' так что в драйвере это память доступна.
Не совсем так - драйвер может выделить память и в user space того процесса, от которого пришел запрос. Тогда она будет доступна пользовательскому процессу и иногда и самому драйверу  smile 

PM MAIL   Вверх
shara
Дата 10.9.2009, 20:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



to DrHex && xvr  - спасибо въехал.

Цитата(DrHex @  10.9.2009,  11:40 Найти цитируемый пост)
(память  одного пользовательского процесса(можно переключатся между процессами)

а как сие делается?



--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
smoke_man
Дата 11.9.2009, 02:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 5
Всего: 17



Посмотри в сторону MDL(Memory Descriptor List).


--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
DrHex
Дата 11.9.2009, 10:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 171
Регистрация: 2.5.2009

Репутация: нет
Всего: нет



Цитата

а как сие делается?

1)Посмотри в сторону MDL(Memory Descriptor List). 
2)KeAttachStackToProcess

Цитата

Не совсем так - драйвер может выделить память и в user space того процесса, от которого пришел запрос. Тогда она будет доступна пользовательскому процессу и иногда и самому драйверу

Все зависит как с памятью работать.
--------------------
google.com и это все.
PM MAIL   Вверх
shara
Дата 11.9.2009, 18:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 344
Регистрация: 29.6.2004
Где: печенье?

Репутация: нет
Всего: 2



Цитата(DrHex @  11.9.2009,  09:41 Найти цитируемый пост)
1)Посмотри в сторону MDL(Memory Descriptor List). 
2)KeAttachStackToProcess

кажися въехал. а не так то оно все и сложно как кажется с первого взгляда... нужно просто вдумчиво читать то что пишут в документациях аля WDK ну и форум)))
спасибо камрады  smile 

Это сообщение отредактировал(а) shara - 11.9.2009, 18:33


--------------------
   с точки зрения аэродинамики шмель не может летать  
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C/C++: Системное программирование и WinAPI"
Fixin
GremlinProg
xvr
feodorv
  • Большое количество информации и примеров с использованием функций WinAPI можно найти в MSDN
  • Описание сообщений, уведомлений и примеров с использованием компонент WinAPI (BUTTON, EDIT, STATIC, и т.п.), можно найти в MSDN Control Library
  • Непосредственно, перед созданием новой темы, проверьте заголовок и удостоверьтесь, что он отражает суть обсуждения.
  • После заполнения поля "Название темы", обратите внимание на наличие и содержание панели "А здесь смотрели?", возможно Ваш вопрос уже был решен.
  • Приводите часть кода, в которой предположительно находится проблема или ошибка.
  • Если указываете код, пользуйтесь тегами [code][/code], или их кнопочными аналогами.
  • Если вопрос решен, воспользуйтесь соответствующей ссылкой, расположенной напротив названия темы.
  • Один топик - один вопрос!
  • Перед тем как создать тему - прочтите это .

На данный раздел распространяются Правила форума и Правила раздела С++:Общие вопросы .


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Chipset, Step, Fixin, GremlinProg, xvr. feodorv.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Системное программирование и WinAPI | Следующая тема »


 




[ Время генерации скрипта: 0.0461 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.