Сборник по задачам и примерам Assembler



     Марта белорусская косметика официальный сайт. |     

Файлы, отображаемые в память



Файлы, отображаемые в память

¦Платформа Win32 позволяет организовать работу с содержимым файла как с ^Властью оперативной памяти, без использования операций файлового ввода-Лывода. Этот механизм отображает (проецирует) содержимое файла на область Императивной памяти. Программе передается адрес этой области, после этого ра-Ибота с содержимым файла осуществляется командами работы с памятью.

Для «проецирования» файла необходимо выполнить следующие действия.

  • 1. Требуется создать (для несуществующего файла) или открыть (для существующего файла) объект ядра файл. Цель этого шага — сообщить системе, где находится физическое представление файла. Создание или открытие объекта ядра файл производится с помощью функции CreateFile (см. выше). Все параметры этой функции задаются обычным образом. На выходе в случае успеха функция формирует дескриптор (в регистре ЕАХ), в обратном случае - значение INVALID_HANDLE_VALUE (ЕАХ—llo=Offffffffh).

    2. Требуется создать объект ядра проекция файла. Цель этого шага — сообщить системе размер проецируемого файла. Для этого используется функция CreateFi I eMappi ng:

    HANDLE CreateFileMapping

    (HANDLE hFile. LPSECURITY_ATTRIBUTES

    ipFileMappingAttributes DWORD flProtect.
    DWORD dwMaximumSizeHigh, DWORD dwMaximumSizeLow. LPCTSTR ipName);

    Параметр hFile является дескриптором файла, полученным функцией Create-File. Параметр 1 pFi 1 eMappingAttributes — указатель на экземпляр структуры SECURITYATTRIBUTES, которая служит для установки защиты. Присвойте параметру lpFil eMappi ngAttri butes значение NULL. Параметр flProtect предназначен для установки атрибутов защиты страниц физической памяти в адресном пространстве процесса, на которые отображается файл. Используют один из следующих атрибутов:

    PAGE_READONLY=02 — доступ к файлу только по чтению (при использовании этого параметра вызов CreateFile должен был производиться с флагом GENERIC_READ);

    € PAGEREADWRI TE=04 — доступ к файлу только по записи (при использовании этого параметра вызов CreateFile должен был производиться с флагом GENERICREAD | GENERICWRITE);




    Содержание  Назад  Вперед