Разделяемая память.

Тема в разделе "WASM.WIN32", создана пользователем spa, 28 окт 2008.

  1. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Я парился с этим вопросом. Погуглил полазил по докам нечего внятного не нашел. Мне просто надо пример как в 2 разных приложениях сделать некоторую область памяти общей. Вроде этот както с маппингом файлом.


    PS прмеры предпочитаю на с :)
     
  2. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    SPA
    Рихтер Chapter 17 Memory-Mapped Files, Using Memory-Mapped Files to Share Data Among Processes?
     
  3. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    q_q
    Во блин рихтер в 3х экземплярах лежит я про него не вспромнил даже. Бывает, спасибо. Я посмотрю, вроде оно глянул но пока не разбирался. Там по сути как раз тока пример и есть.


    PS вот за этим и нужен чат кстате )
     
  4. GoldFinch

    GoldFinch New Member

    Публикаций:
    0
    Регистрация:
    29 мар 2008
    Сообщения:
    1.775
    (offtop) форум тоже иногда чат
     
  5. blast

    blast New Member

    Публикаций:
    0
    Регистрация:
    8 мар 2008
    Сообщения:
    170
    SPA
    Нечего сложно - логика такая создается секция (CreateFileMapping/NtCreateSection) и проецируется (MapViewOfFileEx/NtMapViewOfSection) в оба процесса в текущий и в тот с которым хочешь иметь общую память, нужно получить предварительно его хэндл.
     
  6. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Именно. Можно попросту промапировать страничный файл, указав INVALID_HANDLE_VALUE (0xFFFFFFFF) как хендл при вызове CreateFileMapping.
     
  7. nc

    nc New Member

    Публикаций:
    0
    Регистрация:
    4 июн 2007
    Сообщения:
    61
    чё за Рихтер?
     
  8. Partner

    Partner Павел

    Публикаций:
    0
    Регистрация:
    28 фев 2008
    Сообщения:
    917
    Адрес:
    Los Angeles
    Писатель такой.
     
  9. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    nc
    Jeffrey Richter.
    "оne of the most respected names in the programming industry"
     
  10. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Извиняюсь за задержку, но
    Код (Text):
    1.  HANDLE hfile_send = CreateFileMapping(INVALID_HANDLE_VALUE, NULL,PAGE_READWRITE, 0, max_size, r);
    Возвращает 0, а гетласт еррор "неверный дескриптор". ГЫ? Ну как бы я специально передавал INVALID_HANDLE_VALUE. Нече не пойму.
     
  11. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    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."
     
  12. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    Great, SPA
    :))
    Виндовый файл подкачки маппируется через NULL, а не ERROR_INVALID_HANDLE
     
  13. zhindos

    zhindos New Member

    Публикаций:
    0
    Регистрация:
    10 июл 2008
    Сообщения:
    142
    Виндовый файл подкачки маппируется через NULL, а не ERROR_INVALID_HANDLE

    Виндовый файл подкачки маппируется через INVALID_HANDLE_VALUE (0xFFFFFFFF)
     
  14. ntp_

    ntp_ New Member

    Публикаций:
    0
    Регистрация:
    11 ноя 2008
    Сообщения:
    47
    Выше было указано:
    Можно чуточку попроще написать, но по значению это тоже самое: "(HANDLE)-1" вместо "INVALID_HANDLE_VALUE".
    Итого получиться:

    Вместо "aaa" можно задать любую строчку-идентификатор, или указатель на С-строку.
     
  15. Y_Mur

    Y_Mur Active Member

    Публикаций:
    0
    Регистрация:
    6 сен 2006
    Сообщения:
    2.494
    zhindos
    а точно проверил работает и через 0 и через -1, тогда странно, что же у SPA не получилось.
     
  16. ntp_

    ntp_ New Member

    Публикаций:
    0
    Регистрация:
    11 ноя 2008
    Сообщения:
    47
    Y_Mur
    Хмм, через 0 тоже работает ), странно что ето в книгах не задокументировали. Обычно пишут чтоб использовали только INVALID_HANDLE_VALUE.
     
  17. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    Вообще говоря строка. Но именно в этом косяк 0_0 проверял все нормально пердаеться char как надо все ок. А вообще ошибка сбила с пути. Хотя чето я не пойму как это поправить, странно. если вместо r написать "12345678"то все работает, хотя r это обычный char*
     
  18. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    SPA
    Понятно, что строка. Уникальная?
     
  19. spa

    spa Active Member

    Публикаций:
    0
    Регистрация:
    9 мар 2005
    Сообщения:
    2.240
    q_q
    ну 87654321 ))) , ты прикинь ты прав ))))))))) я офигеваю сижу )))
    Я просто заканифолился, уже думал все тупой я не на что не гожусь ))))
     
  20. q_q

    q_q New Member

    Публикаций:
    0
    Регистрация:
    5 окт 2003
    Сообщения:
    1.706
    SPA
    Покажи описание и инициализацию r и вызов CreateFileMapping.