Получение адреса по которому замаплен файл

Тема в разделе "WASM.BEGINNERS", создана пользователем pikofarad, 24 окт 2010.

  1. pikofarad

    pikofarad New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    35
    Доброго времени суток.
    Появилось несколько вопросов:
    1. Существует ли возможность из юзермода получить адрес, по которому замаплен файл?
    2. Можно ли узнать замаплен ли файл, имея на руках его хэндл?
     
  2. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    пробежать по страницам и посмотреть имя файла секции...
     
  3. pikofarad

    pikofarad New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    35
    у меня сейчас временный затуп:) как бежать. Можно краткий ликбез, либо ссылки на матчасть. Буду очень признателен
     
  4. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Адресное пространство лузер-мода - от 0x00000000 до 0x7FFFFFFF (32-бита). Выше - ядро. память выделяется блоками по 4096 байтов (страница = 4K). Для перебора всех страниц нужно:
    1. Организовать цикл перебора адресов памяти с дискретностью 4K (0, 4096, 8192, ...);
    2. Для каждой страницы нужно проверить её валидность, т.е. физическое присутствие.
     
  5. pikofarad

    pikofarad New Member

    Публикаций:
    0
    Регистрация:
    5 апр 2008
    Сообщения:
    35
    Это понятно. Непонятно мне то, как я смогу узнать, что конкретная страница памяти относится к началу отображенного в пространство текущего процесса файла.
    Т.е. файла, замапленного при помощи CreateFile, CreateFileMapping, MapViewOfFile.
    Олька вот как то показывает подсказки при просмотре памяти процесса (вида XXXXXXXX - [c:\blablabla\lalala.txt]), мне именно это и интересно.
     
  6. 7mm

    7mm New Member

    Публикаций:
    0
    Регистрация:
    15 дек 2009
    Сообщения:
    442
    Файл можно читать?.. Если да, то читаем 1-ю страницу и сравниваем с каждой страницей памяти процесса. Это как пример.
     
  7. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
  8. Rel

    Rel Well-Known Member

    Публикаций:
    2
    Регистрация:
    11 дек 2008
    Сообщения:
    5.315
    ZwQueryVirtualMemory (MemorySectionName)