Здравствуйте, MBo, Вы писали:
__>Анонимные пайпы будут работать только с дочерними процессами. Нельзя передавать HANDLE из одного поцесса в __>другой, т.к. он существует только в контексте процесса, который его создал. Исключением является наследование __>HENDLE дочерним процессом.
__>Так что в данной задаче надо искать другой способ IPC (например через dll с shared секцией).
MBo>из Рихтера:Существует три способа совместного использование объектов ядра:
MBo>1) Наследование описателя объекта (для дочерних процессов) MBo>2) Именованные объекты MBo>3) Дублирование описателей объектов (DuplicateHandle)
MBo>первые два способа отпадают, а третий для данного случая вполне подходит. MBo>Надо только узнать или передать (MMF, сообщением, dll) идентификаторы процессов и из сервера дескрипторы для дублирования.
MBo>Хотя IMHO, именованный MMF в использовании проще пайпов.
Задача решена.
Как и посоветовал MBo, я передал через длл — ку идентификатор процесса сервера
в клиент (кроме хендла, созданного CreatePipe). В клиенте сделал
OpenProcess с параметром PROCESS_DUP_HANDLE, получив хендл процесса сервера,
затем сдублировал DuplicateHandle переданный с сервера хендл. Через него и пишем.
Все работает.