Страница 1 из 1

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

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

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?

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

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

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

Добавлено: 01 июн 2009, 14:48
KraT
Vasilisk писал(а):Читай здесь com/virtual_memory_01.html
Или прямо здесь com/memory_mapped_files_01.html
да я теорию уже читал. Вопрос у меня написан в первом посте

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

Добавлено: 01 июн 2009, 23:23
Vasilisk
KraT писал(а):да я теорию уже читал. Вопрос у меня написан в первом посте
Плохо читал :D В той теории на него был ответ... :)

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

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

1. Создать файл
2. Создать проекцию
3. Записать файл в проекцию (передать данные)
4. Отобразить проекцию
5. Открыть созданную проекцию
6. Отобразить данные
7. Записать в другое место
8. Закрыть проекцию

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

Добавлено: 02 июн 2009, 05:24
Vasilisk
KraT писал(а):Я не знаю как это в код преобразить
Так ты всё написал уже. Каждому из этих пунктов соответствует вызов функции. И всё... Но ты действительно плохо читал :D - по приведённой ссылке есть и пример проекта...

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

Добавлено: 03 июн 2009, 00:22
KraT
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 мне выдало текст, который я тогда ввел. Как это прописать кодом?