Программирование для Windows NT (том 2)



         

Обмен через файлы, отображаемые на память - часть 2


После того как вы создали объект-отображение, следует выполнить отображение файла в память при помощи функции MapViewOfFile, как это было показано выше. В случае успеха эта функция вернет указатель на отображенную область памяти.

Итак, первый процесс создал отображение. Второй процесс, который будет выполнять обмен данными с первым процессом, должен открыть это отображение по имени при помощи функции OpenFileMapping, например, так:

hFileMapping = OpenFileMapping(

  FILE_MAP_READ | FILE_MAP_WRITE, FALSE, lpFileShareName);

Далее второе приложение выполняет отображение, вызывая функцию MapViewOfFile:

lpFileMap = MapViewOfFile(hFileMapping,

  FILE_MAP_READ | FILE_MAP_WRITE, 0, 0, 0);

Пользуясь значением, полученным от функции MapViewOfFile, второе приложение получает указатель на отображенную область памяти. Физически эта область находится в тех же страницах виртуальной памяти, что и область, созданная первым процессом. Таким образом, два процесса получили указатели на общие страницы памяти.

Перед завершением своей работы процессы должны отменить отображение файла и освободить идентификатор созданного объекта-отображения:

UnmapViewOfFile(lpFileMap);

CloseHandle(hFileMapping);




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