PDA

Просмотр полной версии : Проецирование файлов. Си.



KraT
22.06.2009, 21:42
Здраствуйте. Цель такая, нужно спроецировать данные в одной проге так, чтобы когда я запускаю вторую прогу, я мог считать спроецированные данные. Как в этом коде сделать чтобы оно считывало данные с файла, через CreateFile. Надо использовать мютексы, getlasterror, и createfile. Это по заданию так.

Программа 1
код
-------------------------------------------------------------------------
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>

void main()
{
HANDLE hMutex = CreateMutex( 0, FALSE, _T( "some_mutex_name" ) );
HANDLE _hFile = CreateFileMapping(
INVALID_HANDLE_VALUE, // используемый файл
NULL, // стандартные настройки защиты
PAGE_READWRITE, // доступ для чтения и записи
0, 100, // размер данных
_T("gfgfgf")); // название файла проеции

LPDWORD lp = (LPDWORD) MapViewOfFile (_hFile, FILE_MAP_WRITE | FILE_MAP_READ, 0, 0, 8);
WaitForSingleObject( hMutex, INFINITE );
char *text = "HELLO";
strcpy( ( char * )lp, text );
ReleaseMutex( hMutex );
while( true )
{
Sleep( 1000 );
}

}
-------------------------------------------------------------------------
Программа2
код
#include <windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <tchar.h>

void main()
{
HANDLE hMutex = OpenMutex( SYNCHRONIZE, FALSE, _T( "some_mutex_name" ) );

HANDLE _hFile2 = OpenFileMapping(
FILE_MAP_READ, // read access
FALSE, // do not inherit handle
_T("gfgfgf")); // name of mapping object

LPDWORD lp = (LPDWORD) MapViewOfFile (_hFile2, FILE_MAP_READ, 0, 0, 8);
char buff[1024];
WaitForSingleObject( hMutex, INFINITE );
strcpy( buff, ( char * )lp );
ReleaseMutex( hMutex );
printf( "%s\n", buff );
UnmapViewOfFile( ( LPCVOID )lp );
CloseHandle( _hFile2 );
CloseHandle( hMutex );
}

mc-black
23.06.2009, 07:07
Вопрос по Win32 API.