Есть код
void LetMeMapFlie(){
// Создаем файлы
FMP.writefile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READWRITE, 0, 255, MFName_w);
FMP.readfile = CreateFileMapping(INVALID_HANDLE_VALUE, NULL, PAGE_READONLY, 0, 255, MFName_r);
// Открываем файлы
FMP.write = MapViewOfFile(FMP.writefile, FILE_MAP_WRITE, 0,0,0);
FMP.read = MapViewOfFile(FMP.readfile, FILE_MAP_READ, 0,0,0);
}
Далее есть функции, оставшиеся у меня от работы с трубами
void WriteChar_SlimRG(unsigned char key){
WriteFile(pipe1Write, &key, sizeof(unsigned char), &out_pipe_b, NULL)
}
Могу ли я тупо заменить pipe1Write на хэндл файла
Или есть какой-то особый подход записи байтов или INTов в Map File?
P.S. В англ. яз. не оч. шарю (Google Translate) - поэтому не следует думать, что я не посещал офф. сайт майкрософта. Но понять этот момент - не понял.
MapViewOfFile возвращает адрес участка памяти, на который отображен файл или его часть. Для того, чтобы работать с адресами, а не использовать файловые операции.
Полученный указатель можно привести к нужному типу - например, char* и обращаться, как к массиву.
char* data = (char*)MapViewOfFile(...
data[3] = 42;
ReadFile и WriteFile тут совсем ни при чём
Сборка персонального компьютера от Artline: умный выбор для современных пользователей