| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Системное программирование и WinAPI > Контекст выполнения драйвера |
| Автор: shara 9.9.2009, 20:53 |
| Форумчане такой вот вопрос: есть фильтрующий драйвер файловой системы. в WDK сказано что он выполняется в контексте приложения обращающегося к драйверу. т.е. приложение вызывает CrateFile(...); и грубо говоря в этом месте управление получает функция-обработчик запроса IRP_MJ_CREATE_FILE (или ему подобного, зависит от ситуации). Допустим в этой функции я выделяю N-байт памяти под свои нужды, в связи с этим у меня вопрос, где именно эти N-байт будут храниться логически и физически. И если другая программа тоже пытается обратиться к файлу, считай еще один IRP_MJ_CREATE_FILE и еще одни N-байт выделенные под свои нужды. Будут ли видны оба этих N-байт памяти? или функция будет видеть только ту область памяти которая была зарезервирована при вызовах только в КОНКРЕТНО этой исполняемой проге? |
| Автор: DrHex 10.9.2009, 12:40 | ||||
Все очень просто. Выделяешь память то и освобождай. Выделил в драйвере значит он и должен освободить. Ну и конечно если он выделил он её и видит.
Будут.
Нет. Драйверу доступна вся память (память одного пользовательского процесса(можно переключатся между процессами) + kernel memory) . Когда выделение памяти происходит в драйвере то память выделяется в 'kernel memory' так что в драйвере это память доступна. |
| Автор: xvr 10.9.2009, 13:29 | ||||
Угу
|
| Автор: shara 10.9.2009, 20:18 | ||
to DrHex && xvr - спасибо въехал.
а как сие делается? |
| Автор: smoke_man 11.9.2009, 02:06 |
| Посмотри в сторону MDL(Memory Descriptor List). |
| Автор: DrHex 11.9.2009, 10:41 | ||||
1)Посмотри в сторону MDL(Memory Descriptor List). 2)KeAttachStackToProcess
Все зависит как с памятью работать. |