Проблема с обменом данных: Передать сообщение независимому модулю

Тема в разделе "WASM.BEGINNERS", создана пользователем Vayson, 25 июл 2009.

  1. Vayson

    Vayson New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2009
    Сообщения:
    4
    В общем, проблема такова
    2 модуля (exe и dll), нужно просто и быстро синхронизировать связь между ними
    Есть некая функция в dll, которая вызывается очень часто и должна передавать в exe значение переменной

    Это "нормально" работает через реестр (функция заносит данные в реестр, потом прога получает данные), но это же в корне неправильно
    Организовать работу через Маппинг у меня не получается, функция не обычная

    Идеальным вариантом, было бы что нибудь наподобе SendMessage, только проблема в том, что главная программа не имеет окна. Этот вариант возможен?
     
  2. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    Добавить в экспорт длл функцию, которая вернёт значение переменной, экзе её вызовет, либо переменную добавить в экспорт.
     
  3. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    LPC можно слать
     
  4. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Если функция именно вызывается екзешником, то в чем проблема возвращать результат в еах? А если функция вызывается сама по себе и должн при этом что-то передавать, то тут я советую тебе использовать сокеты/мейлслоты/анонимные пайпы. Если ты ответишь, что это все не подходит только потому, что ты не знаешь, что это за слова, я лично задолбаю всех модераторов, пока они тебя не забанят навечно.
     
  5. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    шикарно
    секция в памяти + любой глобальный объект синхронизации
    если не получается, пиши почему, просто интересно такого еще не встречал
     
  6. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    o14189
    Да уж, тупее не придумать, что для пересылки данных в текущем процессе в базу данных писать..
    Глобальные обьекты именованные, для одного процесса это не нужно и секции тоже не нужны. Всеголишь память копировать, даже инструкция есть - mos.
     
  7. o14189

    o14189 New Member

    Публикаций:
    0
    Регистрация:
    19 июл 2009
    Сообщения:
    320
    так это все еще и в 1 процессе? ваще обалдеть.
    извините, не так понял.
     
  8. Vayson

    Vayson New Member

    Публикаций:
    0
    Регистрация:
    25 июл 2009
    Сообщения:
    4
    2TSS

    Спасибо за наводку на LPC

    2MSoft

    Спасибо за наводку на мейлслоты и пайпы... Вроде это самый подходящий вариант ;)
    Насчет бана, да хоть миллион раз задолбывай модеров, пусть меня 1000000 раз банят, только оно тебе надо?
     
  9. Clerk

    Clerk Забанен

    Публикаций:
    0
    Регистрация:
    4 янв 2008
    Сообщения:
    6.689
    Адрес:
    РБ, Могилёв
    *movs
     
  10. TSS

    TSS New Member

    Публикаций:
    0
    Регистрация:
    13 апр 2009
    Сообщения:
    494
    Vayson
    Эээ... Про LPC я подумал, когда прочитал, что нужен аналог SendMessage, я както пропустил что речь идет об одном процессе, так что юзай обычное копирование памяти.
     
  11. max7C4

    max7C4 New Member

    Публикаций:
    0
    Регистрация:
    17 мар 2008
    Сообщения:
    1.203
    вообще не понятно зачем такие сложности из dll экспортируется переменная-указатель всегда кратная 2 и младший бит используется для синхронизации
    ;=============================== в dll
    .wait:
    call Sleep, 1
    test [a], 1
    jnz .wait
    mov [a], eax
    or [a], 1
    ;=============================== в exe
    xor eax, eax
    test [a], 1
    jz .no_data
    xchg eax, [a]
    and al, 0xFE
    .no_data:
     
  12. Velheart

    Velheart New Member

    Публикаций:
    0
    Регистрация:
    2 июн 2008
    Сообщения:
    526
    Честно говоря не совсем понял, что надо, и зачем такие извращения в пределах процесса, но если оч хочется, то есть такая штука, как PostThreadMessage, и не нужно никаких окон, за обработку его должен отвечать код после GetMessage.