Proces 1 :
unsigned char*_buf ;
HANDLE hFileMapp ;
// _name - string z nazwą
unsigned int _size = 4096 ;
hFileMapp = CreateFileMapping(INVALID_HANDLE_VALUE,NULL,PAGE_READWRITE,
0, _size ,_name);
if(NULL == hFileMapp)
{
_buf = NULL;
}else{
_buf =(unsigned char*)MapViewOfFile(hFileMapp,
FILE_MAP_ALL_ACCESS,0,0,0);
}
Proces 2 :
unsigned char*_buf ;
HANDLE hFileMapp ;
unsigned int _size ;
// _name - string z nazwą
hFileMapp=OpenFileMapping(FILE_MAP_ALL_ACCESS,false,_name);
if(NULL == hFileMapp)
{
_buf = NULL;
}else{
_buf=(unsigned char*)MapViewOfFile(hFileMapp,
FILE_MAP_ALL_ACCESS,0,0,0);
}
_size = GetFileSize(hFileMapp,NULL); // <== to Nie działa
W Procesie 1 , tworzę plik mapowany [plik wymiany] ,jego rozmiar
jest znany .
Następnie w innej aplikacji (Proces 2) otwieram poprzednio utworzony plik (OpenFileMapping).
Proces jednak nie posiada informacji o wielkości współdzielonego pliku.
Funkcja GetFileSize zwraca błąd jeśli dostanie HANDLE z funkcji CreateFileMapping
lub OpenFileMapping .
W jaki sposób pobrać rozmiar pliku mapowanego w pamięci w procesie 2 ?
[Pomijam wpisanie do kodu wartości znanej z procesu 1]
[Oraz przesłanie tej wartości poprzez współdzielony plik]