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

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

Можно ли (и как) создать файл в памяти, так чтоб "скармливать" его FILE_OBJECT функциям IoPageRead, FsRtlGetFileSize и т.п. как будто это реальный файл.

Может быть можно так: ZwCreateSection + ObReferenceObjectByHandle ?
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #1 : 20-06-2005 21:30 » 

Чтобы "скармливать" его, надо чтоб им кто управлял, то есть что-то что может работать по алгоритму файловой системы( ты же хочешь вызывать на него IoPageRead ).

ZwCreateSection + ObReferenceObjectByHandle создает объект-секцию, поытка передать его в IoPageRead является неправильной.

Создать FILE_OBJECT можно при помощи ф-ции IoCreateStreamFileObject.
Записан
SystemError
Гость
« Ответ #2 : 23-06-2005 09:20 » 

Конкретизирую задачу, может это поможет Вам помочь мне.   
 
На пользовательском уровне (3е кольцо, обычное виндовое приложение) надо сделать следущее:
 
HANDLE hFile = CreateFile(....); 
 
HANDLE hMemory = CreateFileMapping(hFile, ....); 
assert(hMemory != 0); 
 
Только hFile - не файл на диске. 
Пробовал использовать pipe и mailslot, не получилось. 
 
P.S. Знаю, что MMF можно создавать и не из файла, но надо именно так, т.к. я передаю хендл уже не своему методу.
Записан
SlavaI
Главный специалист

ru
Offline Offline

« Ответ #3 : 23-06-2005 09:52 » new

 MMF к твоему сожалению можно создать только для того, что поддерживает семантику файловой системы, то есть ведет себя полностью как файловая система. Вобще если тебе нужен просто файл мепинг без реального файла- CreateFileMapping(NULL, ....);  в этом случае страницы памяти этого отображения будут поддерживаться страничным файлом.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines