Проецирование файлов

Ответить
KraT
Сообщения: 5
Зарегистрирован: 01 июн 2009, 00:13

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

void main()
{
HANDLE hMapping;
char *lpData;
char *lpBuffer;

hMapping = CreateFileMapping( (HANDLE)(-1),
NULL, PAGE_READWRITE, 0, 0x0100, "MyShare");
if (hMapping == NULL) exit(0);
lpData = (char*) MapViewOfFile(hMapping, FILE_MAP_ALL_ACCESS,0,0,0);
if (lpData == NULL) exit(0);
// Копируем в проекцию данные
memcpy ( lpData , lpBuffer );

};

у меня вот в чем вопрос. lpdata=показать что с проецировало?
lpbuffer это мне самому надо данные вводить?
если да то как? через scanf?
Vasilisk
Сообщения: 116
Зарегистрирован: 13 фев 2004, 18:43

KraT писал(а):Всем привет.
Суть задачи такова: нужно разработать программу, которая позволяет обмениваться данными с другой такой же программой, используя проецируемые файлы.
Подскажите, как это сделать
Читай здесь com/virtual_memory_01.html
Или прямо здесь com/memory_mapped_files_01.html
KraT
Сообщения: 5
Зарегистрирован: 01 июн 2009, 00:13

Vasilisk писал(а):Читай здесь com/virtual_memory_01.html
Или прямо здесь com/memory_mapped_files_01.html
да я теорию уже читал. Вопрос у меня написан в первом посте
Vasilisk
Сообщения: 116
Зарегистрирован: 13 фев 2004, 18:43

KraT писал(а):да я теорию уже читал. Вопрос у меня написан в первом посте
Плохо читал :D В той теории на него был ответ... :)
KraT
Сообщения: 5
Зарегистрирован: 01 июн 2009, 00:13

У меня проблема не в понимании. Логически я все точно представляю, что мне нужно сделать. Я не знаю как это в код преобразить.

1. Создать файл
2. Создать проекцию
3. Записать файл в проекцию (передать данные)
4. Отобразить проекцию
5. Открыть созданную проекцию
6. Отобразить данные
7. Записать в другое место
8. Закрыть проекцию
Vasilisk
Сообщения: 116
Зарегистрирован: 13 фев 2004, 18:43

KraT писал(а):Я не знаю как это в код преобразить
Так ты всё написал уже. Каждому из этих пунктов соответствует вызов функции. И всё... Но ты действительно плохо читал :D - по приведённой ссылке есть и пример проекта...
KraT
Сообщения: 5
Зарегистрирован: 01 июн 2009, 00:13

Vasilisk писал(а):Так ты всё написал уже. Каждому из этих пунктов соответствует вызов функции. И всё... Но ты действительно плохо читал :D - по приведённой ссылке есть и пример проекта...
Впринципе нашел, но мне надо на Си это сделать.
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
1)Такой вопрос. Мне получается надо запустить прогу, записать в проекцию данные. Потом запустить ещё одну прогу, где будет открытие проекции и отображение данных в ней.

2)Т.е. в одной проге CreateFileMapping.
А в другой OpenFileMapping.

3)И ещё если я UnMapViewOfFile не напишу и закрою первую программу. У меня остануться файлы в проекции?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
Первый файл
HANDLE _hFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // use paging file
NULL, // default security
PAGE_READWRITE, // read/write access
0, 100, // buffer size
_T("gfgfgf")); // name of mapping object

DWORD buf = 33, read;
LPDWORD lp = (LPDWORD) MapViewOfFile (_hFile, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 8);
*lp = buf;

Второй файл:
HANDLE _hFile2 = OpenFileMapping(
FILE_MAP_READ, // read access
FALSE, // do not inherit handle
_T("gfgfgf")); // name of mapping object

DWORD buf;
LPDWORD lp = (LPDWORD) MapViewOfFile (_hFile2, FILE_MAP_READ, 0, 0, 8);
DWORD dw = GetLastError ();
buf = *lp;


Будете ли это решением моей задачи?
--------------------------------------------------------------------------------
Добавлено сообщение
--------------------------------------------------------------------------------
как в занести данные в проекцию. Я создал CreateFileMapping. А как мне занести к примеру текст в проекцию, чтобы потом при запуске второй программы OpenFileMapping через MapViewOfFile мне выдало текст, который я тогда ввел. Как это прописать кодом?
Ответить