Re[3]: PostMessage и Terminal Services
От: Jolly Roger  
Дата: 17.10.10 15:16
Оценка:
Здравствуйте, Pavel Dvorkin, Вы писали:

PD>Гм, а чем MMF не угодили ? В рамках постановки задачи требуется лишь, чтобы файл, на базе которого пойдет передача сообщений, был один и тот же. Общее имя для мэппинга и расположение его в Global совсем не обязательно.


Насколько я понимаю фразы

не может быть запущено одновременно в двух терминальных сессиях на одном сервере

и

Теперь мне надо послать сообщение (postMessage) окну приложения, чтобы оно закрылось.

задача стоит такая
1) Обнаружить уже запущенный экземпляр в другой терминальной сессии
2) Передать ему команду.

Если использовать MMF для передачи команды, необходимо, чтобы этот MMF был виден в обоих сеансах, а для этого его необходимо создать в Global Namespace, для чего, в свою очередь, нужна SeCreateGlobal. Нет? Плюс к тому потребуется механизм уведомлений о том, что команда размещена в MMF. Но если команда — одна-едениственная и не требует передачи доп. параметров, то надобность MMF совсем пропадает, уведомление и будет самой командой.

Однако построить такую систему с необходимым уровнем надёжности на одних объектах типа семафора или эвента в условиях терминального сервера вряд-ли возможно, и в любом случае потребует неоправданного усложнения.

Из всего изложенного, по-моему, и следует вывод, о необходимости использования полноценного IPC со встроенной системой уведомления получателя. К вышеуказанным я-бы, пожалуй, добавил Mailslots, причём как наиболее удобные в данном случае.

По-моему так.
"Нормальные герои всегда идут в обход!"
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.