Я парился с этим вопросом. Погуглил полазил по докам нечего внятного не нашел. Мне просто надо пример как в 2 разных приложениях сделать некоторую область памяти общей. Вроде этот както с маппингом файлом. PS прмеры предпочитаю на с
q_q Во блин рихтер в 3х экземплярах лежит я про него не вспромнил даже. Бывает, спасибо. Я посмотрю, вроде оно глянул но пока не разбирался. Там по сути как раз тока пример и есть. PS вот за этим и нужен чат кстате )
SPA Нечего сложно - логика такая создается секция (CreateFileMapping/NtCreateSection) и проецируется (MapViewOfFileEx/NtMapViewOfSection) в оба процесса в текущий и в тот с которым хочешь иметь общую память, нужно получить предварительно его хэндл.
Именно. Можно попросту промапировать страничный файл, указав INVALID_HANDLE_VALUE (0xFFFFFFFF) как хендл при вызове CreateFileMapping.
Извиняюсь за задержку, но Код (Text): HANDLE hfile_send = CreateFileMapping(INVALID_HANDLE_VALUE, NULL,PAGE_READWRITE, 0, max_size, r); Возвращает 0, а гетласт еррор "неверный дескриптор". ГЫ? Ну как бы я специально передавал INVALID_HANDLE_VALUE. Нече не пойму.
SPA Что в r? Из описания последнего параметра CreateFileMapping: "If lpName matches the name of an existing event, semaphore, mutex, waitable timer, or job object, the function fails, and the GetLastError function returns ERROR_INVALID_HANDLE. This occurs because these objects share the same namespace."
Виндовый файл подкачки маппируется через NULL, а не ERROR_INVALID_HANDLE Виндовый файл подкачки маппируется через INVALID_HANDLE_VALUE (0xFFFFFFFF)
Выше было указано: Можно чуточку попроще написать, но по значению это тоже самое: "(HANDLE)-1" вместо "INVALID_HANDLE_VALUE". Итого получиться: Вместо "aaa" можно задать любую строчку-идентификатор, или указатель на С-строку.
Y_Mur Хмм, через 0 тоже работает ), странно что ето в книгах не задокументировали. Обычно пишут чтоб использовали только INVALID_HANDLE_VALUE.
Вообще говоря строка. Но именно в этом косяк 0_0 проверял все нормально пердаеться char как надо все ок. А вообще ошибка сбила с пути. Хотя чето я не пойму как это поправить, странно. если вместо r написать "12345678"то все работает, хотя r это обычный char*
q_q ну 87654321 ))) , ты прикинь ты прав ))))))))) я офигеваю сижу ))) Я просто заканифолился, уже думал все тупой я не на что не гожусь ))))