Re[2]: Минимальный функционал IrpHandler для файловых операций
От: izl3sa Россия  
Дата: 11.07.12 14:00
Оценка: 3 (1)
Если быть более точным — cache manager работает через memory mapped files и для того, чтобы это работало для надо выделить память под управляющие структуры и инициализировать их. В частности это FILE_OBJECT.SectionObjectPointer. Конечно это структура ассоциирована с FCB (file control block — те непосредственно с файлом). Соответственно инициализация всех управляющих структур осуществляется в CcInitializeCacheMap, которую надо вызвать один раз для FCB. Соответсвенно DataSectionPointer это на самом деле управляющая структура CONTROL_AREA, которая используется для управления секцией. Если посмотреть код MmCreateSection, то можно обратить внимание, что если указатель SectionObjectPointer не будет инициализирован то mm io не будет работать.


            if (File->SectionObjectPointer == NULL) {
                ObDereferenceObject (File);
                return STATUS_INVALID_FILE_FOR_SECTION;
            }


ну и тд там по коду.
Таким образом в любом случае нужно делать кеширование в драйвере фс для отображения исполняемых образов.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.