Re[5]: Асинхронный IPC?
От: Andrew S Россия http://alchemy-lab.com
Дата: 07.04.06 13:09
Оценка:
SH>Т.е. алгоритм чтения — прочитать свойство, получить адрес, читать память процесса, в котором она выделена. А вопрос про переносимость адреса между процессами, насколько я понимаю, заключался в следующем: правда ли, что один и тот же кусок адресного пространства процесса виден всеми снаружи по одному и тому же адресу. Я написал что правда.

Неоднократно видел упоминания, что на какой-то из систем с последним сервис паком ReadProcessMemory не работает. По крайней мере, у меня сложилось впечатление, что это _очень_ неправильное решение, и оно _ничем_ не лучше MMF.

AS>>Кстати, неплохое решение проблемы — именованый MMF.


SH>Оно не до конца асинхронное.


Ровно так же, как и ReadProcessMemory. А применительно к Com серверу — вполне асинхронное. Просто надо _уметь_

AS>>А еще лучше — ком сервер, который атоматически создается при первом обращении к соотв. функциям записи\чтения. Мы так делали, работало неплохо.


SH>Поясни, не понял.


Все просто. Создается некий ком сервер-синглтон (не inproc, естественно). Соответственно, он и занимается менеджментом очереди сообщений, которая может быть представлена как в виде MMF, так и виде любой базы данных. Реализовать ком сервер на ATL не просто, а очень просто. Для интерфеса с ним делается несколько функций (чтения сообщений и помещения сообщений в очередь), которые и создают экземпляр сервера при необходимости. Просто и эффективно.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Re[6]: Асинхронный IPC?
От: SergH Россия  
Дата: 07.04.06 13:16
Оценка:
Здравствуйте, Andrew S, Вы писали:

AS>Неоднократно видел упоминания, что на какой-то из систем с последним сервис паком ReadProcessMemory не работает. По крайней мере, у меня сложилось впечатление, что это _очень_ неправильное решение, и оно _ничем_ не лучше MMF.


Согласен. Я его и не советовал.

AS>Все просто. Создается некий ком сервер-синглтон (не inproc, естественно). Соответственно, он и занимается менеджментом очереди сообщений, которая может быть представлена как в виде MMF, так и виде любой базы данных. Реализовать ком сервер на ATL не просто, а очень просто. Для интерфеса с ним делается несколько функций (чтения сообщений и помещения сообщений в очередь), которые и создают экземпляр сервера при необходимости. Просто и эффективно.


А, ну это понятно. Прсото вынесение в отдельную службу, с использованием COM в качестве транспорта. Я думал что-то хитрое
Делай что должно, и будь что будет
Re[6]: Асинхронный IPC?
От: Abandoned Беларусь  
Дата: 07.04.06 14:58
Оценка:
>Неоднократно видел упоминания, что на какой-то из систем с последним сервис паком ReadProcessMemory не работает. По крайней мере, у меня сложилось впечатление, что это _очень_ неправильное решение, и оно _ничем_ не лучше MMF.
в вопросе речь (как мне кажется) шла о возможности передать данные из одного процесса в другой, причём этот второй процесс может быть запушен после завершения первого, то есть в какой-то момент времени первый уже завершился, а второй ещё не стартовал... как в таком случае использовать MMF, если с завершением процесса все хэндлы/мэппинги удаляются автоматически?

просто так передать данные между процессами, конечно, проблем не вызывает... можно даже без mmf — просто через wm_copydata послать (по условию объём данных небольшой)
<none>
Re[7]: Асинхронный IPC?
От: Andrew S Россия http://alchemy-lab.com
Дата: 07.04.06 15:03
Оценка:
>>Неоднократно видел упоминания, что на какой-то из систем с последним сервис паком ReadProcessMemory не работает. По крайней мере, у меня сложилось впечатление, что это _очень_ неправильное решение, и оно _ничем_ не лучше MMF.
A>в вопросе речь (как мне кажется) шла о возможности передать данные из одного процесса в другой, причём этот второй процесс может быть запушен после завершения первого, то есть в какой-то момент времени первый уже завершился, а второй ещё не стартовал... как в таком случае использовать MMF, если с завершением процесса все хэндлы/мэппинги удаляются автоматически?

Народ, ну вы что, издеваетесь. Сколько раз повторять, что предлагаемое решение — использовать Com сервер и MMF только в его рамках.

A>просто так передать данные между процессами, конечно, проблем не вызывает... можно даже без mmf — просто через wm_copydata послать (по условию объём данных небольшой)


Это все равно будет через MMF, хотя и неявно.
Еще есть mailslots, кстати. Но глючные до безобразия, не рекомендую.
http://www.rusyaz.ru/pr — стараемся писАть по-русски
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.