рефераты конспекты курсовые дипломные лекции шпоры

Реферат Курсовая Конспект

Теоретические сведения

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

 

Отображаемые в память файлы.

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

Методика работы с файлами, отображаемыми на память, заключается в следующем.

Отображение создается функцией CreateFileMapping.

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

Если создается отображение только для того чтобы обеспечить передачу данных между процессами, не нужно создавать файл на диске компьютера. Указав в качестве идентификатора файла значение (HANDLE)0xFFFFFFFF, создается отображение непосредственно в виртуальной памяти без использования дополнительного файла.

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

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

 

Пример. Один экземпляр программы создает отображаемый в память файл и записывает в него тестовую строку. Второй экземпляр – считывает строку из отображаемого файла. Для синхронизации используются события.

 

#include "windows.h"

#include "stdio.h"

 

HANDLE hEvent1, hEvent2;

HANDLE hMFile;

char Ev1[]="MyEvent1";

char Ev2[]="MyEvent2";

char Fn1[]="MyMemoryMappedFile";

char Mask;

LPVOID StartMFile;

char Buf[]="Buffer Is Empty ";

int main(int argc, char* argv[])

{

Mask=FALSE;

if(!OpenEvent(EVENT_ALL_ACCESS, TRUE, Ev1)) {

printf("SERVERn");

if(hEvent1=CreateEvent( NULL, TRUE, FALSE, Ev1 )) {

hEvent2=CreateEvent( NULL, TRUE, FALSE, Ev2 );

Mask=TRUE;} else { return 0;}

} else {

hEvent2=OpenEvent(EVENT_ALL_ACCESS, TRUE, Ev2);

printf("CLIENTn");

}

if(Mask)

{

hMFile=CreateFileMapping((HANDLE)0xFFFFFFFF, NULL,

PAGE_READWRITE, 0, 100, Fn1);

if(!hMFile) { return 0;}

StartMFile=MapViewOfFile(hMFile, FILE_MAP_WRITE, 0, 0, 100);

if(!StartMFile) { return 0;}

printf("BEFORE RECORD:n%sn",Buf);

CopyMemory(StartMFile, "Information From Server", 24);

printf("AFTER RECORD:n%sn",Buf);

PulseEvent(hEvent1);

WaitForSingleObject(hEvent2, INFINITE);

} else

{

WaitForSingleObject(hEvent1, INFINITE);

hMFile=OpenFileMapping(FILE_MAP_READ, TRUE, Fn1);

if(!hMFile) { return 0;}

StartMFile=MapViewOfFile(hMFile, FILE_MAP_READ, 0, 0, 100);

if(!StartMFile) { return 0;}

printf("BEFORE RECORD: n%sn",Buf);

CopyMemory(Buf, StartMFile, 24);

printf("AFTER RECORD: n%sn",Buf);

PulseEvent(hEvent2);

}

UnmapViewOfFile(hMFile);

CloseHandle(hMFile);

return 0;

}

 

– Конец работы –

Эта тема принадлежит разделу:

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

Обмен информацией между процессами с помощью отображаемых в память файлов... Цель работы изучить возможности применения механизма обмена данными между процессами в операционной системе Windows...

Если Вам нужно дополнительный материал на эту тему, или Вы не нашли то, что искали, рекомендуем воспользоваться поиском по нашей базе работ: Теоретические сведения

Что будем делать с полученным материалом:

Если этот материал оказался полезным ля Вас, Вы можете сохранить его на свою страничку в социальных сетях:

Все темы данного раздела:

Порядок выполнения работы
  1. Ознакомиться с постановкой задачи и исходными данными. В соответствии с номером по журналу определить вариант задачи. 2. Согласно рекомендациям, приведенным в исходных д

Хотите получать на электронную почту самые свежие новости?
Education Insider Sample
Подпишитесь на Нашу рассылку
Наша политика приватности обеспечивает 100% безопасность и анонимность Ваших E-Mail
Реклама
Соответствующий теме материал
  • Похожее
  • Популярное
  • Облако тегов
  • Здесь
  • Временно
  • Пусто
Теги