Электронный учебник:


Курс лекций:


Дополнительно:

Практикум:



Наши хостеры:

Файлы, проецируемые в память

            Как уже говорилось выше, процесс не имеет возможности непосредственного доступа в собственное виртуальное адресное пространство другого процесса. Однако, на практике часто возникает необходимость в передаче данных между процессами. Для связи между процессами в Windows 95 и Windows NT реализован эффективный механизм проецирования файлов в виртуальную память.

            Рассмотрим процедуру отображения файла на память. Прежде всего, приложение должно открыть файл с заданным именем при помощи функции CreateFile и получить идентификатор вновь созданного объекта ядра файл типа HANDLE. Затем следует создать еще один объект ядра – объект отображение файла. Объект отображение файла создается при помощи функции CreateFileMapping, которая возвращает идентификатор объекта типа HANDLE:

            HANDLE CreateFileMapping(

    HANDLE  hFile,    // идентификатор объекта ядра файл для отображения

    LPSECURITY_ATTRIBUTES  lpFileMappingAttributes, // указатель на атрибуты  

                                                                                                  // безопасности или NULL

82

    DWORD  flProtect,            //атрибуты защиты для страниц отображения

    DWORD  dwMaximumSizeHigh, // размер файла (старшее слово)

    DWORD  dwMaximumSizeLow,  // размер файла (младшее слово)

    LPCTSTR  lpName             // имя отображаемого файла  );       

Имя отображаемого файла – это произвольная ASCIIZ-строка. Под этим именем отображенный файл будет известен другим процессам в системе. Далее следует отобразить файл на виртуальную память при помощи функции MapViewOfFile:

            LPVOID MapViewOfFile(

    HANDLE  hFileMappingObject,   // идентификатор объекта ядра отображение файла 

предыдущаяследующая