Если быть более точным — 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;
}
ну и тд там по коду.
Таким образом в любом случае нужно делать кеширование в драйвере фс для отображения исполняемых образов.