Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Передача дубликата HANDLE дочернему процессу


Автор: Nudnik 18.4.2008, 11:22
Есть у меня главный процесс. В нем я создал почтовую ячейку (CreateMailslot) и получил HANDLE (замечу, что из почтовой ячейки можно читать только с помощью HANDLE полученного CreateMailslot). Запускаю дочерний процесс внутри которого я хотел бы читать из этой почтовой ячейки, то есть процессы пересылали друг другу данные через почтовую ячейку.

Знаю, что нужно использовать DuplicateHandle. В MSDN прочитал: If the process that calls DuplicateHandle is not also the target process, the source process must use interprocess communication to pass the value of the duplicate handle to the target process.

Что за interprocess communication? Или как можно дочернему процессу передать HANDLE?

(P.S. не нужно советовать использовать другую технологию обмена между процессами, у меня это задание по лабораторной работе  smile )

Автор: Dennnis 18.4.2008, 11:55
Цитата(Nudnik @  18.4.2008,  11:22 Найти цитируемый пост)
Или как можно дочернему процессу передать HANDLE?

Через коммандную строку например. Преобразуешь хэндл в строку и передаешь через КС. А в дочернем процессе обратно преобразуешь и используешь smile .

Автор: xvr 18.4.2008, 11:56
Цитата(Nudnik @ 18.4.2008,  11:22)
Есть у меня главный процесс. В нем я создал почтовую ячейку (CreateMailslot) и получил HANDLE (замечу, что из почтовой ячейки можно читать только с помощью HANDLE полученного CreateMailslot). Запускаю дочерний процесс внутри которого я хотел бы читать из этой почтовой ячейки, то есть процессы пересылали друг другу данные через почтовую ячейку.

Знаю, что нужно использовать DuplicateHandle. В MSDN прочитал: If the process that calls DuplicateHandle is not also the target process, the source process must use interprocess communication to pass the value of the duplicate handle to the target process.

Что за interprocess communication? 

Перевожу - 'коммуникация между процессами'. Значит именно то, что написано - обмен данными (и не только) между процессами. Например shared memory, rpc, lpc, pipes, теже самые mailslots  smile 

Цитата

Или как можно дочернему процессу передать HANDLE?
Передать параметром в коммандной строке при запуске (просто напечатать как целое число)

Автор: deniska 21.4.2008, 07:23
у меня дочерний процесс был с окошком, посылал через SendMessage(WM_COPYDATA)

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)