Есть код
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 тут совсем ни при чём
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Изучаю разработку программ на C++ по книгамТам для создания окон и многого другого используется библиотека WinAPI
FIND_PACKAGE(Boost) - ищет boost по стандартному пути /usr/local/, мой boost лежит по пути /home/cheshirecat/libs Как сделать так, чтобы FIND_PACKAGE(Boost) нашел boost?