Эта функция позволяет программе из пользовательского пространства запрашивать у ОС создание отображения памяти.
Отображение памяти - это структура ОС, которая содержит информацию, относящуюся к области виртуальной памяти вашего процесса: начальный виртуальный адрес, длина, разрешения, резервное хранилище (независимо от того, следует ли заменить файл или обмен), ...
В * nix есть один вызов (mmap()
), который позволяет вам создать это отображение. Windows отделяет «подготовку» отображения (выделение дескриптора и присвоение ему имени) от фактической «реализации» этого отображения.
Таким образом, в Windows, чтобы разделить сопоставление между процессами (так называемая общая память), вы должны CreteFileMapping()
от каждого процесса, используя одно и то же "имя", затем, прежде чем получить доступ к сопоставлению, вы создадите его с помощью MapViewOfFile()
в * nix вы бы передавали MAP_SHARED
флаг mmap
, и часть ядра vm разделяла бы память; я думаю, что разница в основном вызвана разными предпочтениями стиля API на каждой платформе).