Доброго времени суток. Появилось несколько вопросов: 1. Существует ли возможность из юзермода получить адрес, по которому замаплен файл? 2. Можно ли узнать замаплен ли файл, имея на руках его хэндл?
у меня сейчас временный затуп как бежать. Можно краткий ликбез, либо ссылки на матчасть. Буду очень признателен
Адресное пространство лузер-мода - от 0x00000000 до 0x7FFFFFFF (32-бита). Выше - ядро. память выделяется блоками по 4096 байтов (страница = 4K). Для перебора всех страниц нужно: 1. Организовать цикл перебора адресов памяти с дискретностью 4K (0, 4096, 8192, ...); 2. Для каждой страницы нужно проверить её валидность, т.е. физическое присутствие.
Это понятно. Непонятно мне то, как я смогу узнать, что конкретная страница памяти относится к началу отображенного в пространство текущего процесса файла. Т.е. файла, замапленного при помощи CreateFile, CreateFileMapping, MapViewOfFile. Олька вот как то показывает подсказки при просмотре памяти процесса (вида XXXXXXXX - [c:\blablabla\lalala.txt]), мне именно это и интересно.
Файл можно читать?.. Если да, то читаем 1-ю страницу и сравниваем с каждой страницей памяти процесса. Это как пример.