Voglio creare un programma, che metterà un po 'di frase nella memoria condivisa, così un altro programma riceverà questo massaggio. L'ho fatto, ma non capisco il 4 ° e il 5 ° parametro di CreateFileMapping ().
Nel mio programma scrivo 256 (5 ° parametro), ma quando ho cambiato questo in 1, il programma ha funzionato ancora. Ho pensato che dovesse andare in crash, perché presumo dwMaximumSizeLow è la dimensione più bassa. Quando inserisco qualche valore nel 4 ° argomento, il programma si blocca. Ho pensato che questo valore dovrebbe essere superiore al 5 °, ma ho sbagliato.
Il mio codice:
#include <iostream>
#include <Windows.h>
const char name[256] = "Map1";
const char massage[256] = "Welcome in the world without rules";
int main()
{
using std::cout;
using std::cin;
using std::endl;
HANDLE hMap;
hMap = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 256, (LPCTSTR)name);
if (!hMap)
{
cout << "create error" << endl;
return 1;
}
char * data = (char*) MapViewOfFile(hMap, FILE_MAP_ALL_ACCESS, NULL, NULL,NULL);
if (!data)
{
cout << "mapview error" << endl;
return 1;
}
if (!(CopyMemory(data, massage, sizeof(char) * 256)) )
{
cout << "copy error" << endl;
}
cin.get();
UnmapViewOfFile(hMap);
CloseHandle(hMap);
return 0;
}
Potresti spiegare come funzionano il 4 ° e il 5 ° parametro di CreateFileMapping ()?