Вверх ↑
Ответов: 2059
Рейтинг: 132
#1: 2017-09-10 10:33:45 ЛС | профиль | цитата
Rysik,
1. Правильно я понимаю, что Prog3.exe это "левая" программка не сделанная тобой, или сделанная в Hiasm?
2. Что нужно получить в конечном итоге? Переназначить каналы ввода вывода, обмен данными через эти каналы, или чего-то ещё – контроль доступа, права, наследование?
3. И конечно Prog3.exe уже запущенный процесс, или его можно запустить после (из) Prog1.exe?
4. Может быть вот это https://habrahabr.ru/post/180933/ надо?


Создание процесса ОС Windows

В ОС Windows процессы создаются через системный вызов NtCreatProcess() – данный вызов имеет множество параметров, многие из которых «по умолчанию».

Процесс порождается непосредственно по желанию, он не должен быть обязательной копией текущего, поэтому не соблюдается родство.

Хэндл процесса – существительное (дословно переводится «ручка»). Это сущность доступа к процессу – некоторое целое число, которое является индексом в определенной таблице и позволяет идентифицировать этот процесс – контроль доступа, права, наследование.

Pid – это смещение (индекс) в таблице процессов.

Иерархия процессов в ОС Windows

Ее нет, все равны. Поэтому встает вопрос взаимодействия.

Хэндл процесса – когда новый процесс создается родительским, то родитель получает хэндл дочернего процесса и таким образом может им управлять.

Этот хендл может передаваться другим процессам, в отличии от Unix, где родительский процесс не может менять множество дочерних процессов.

Хэндл процесса – идентификатор объекта процесса.

То отвечая прямо на вопрос можно ли переназначить - да можно, но не вместо Prog2.exe. (при убивании процесса Prog2.exe...)
Как? Это другой вопрос.
Потому, что у Prog3.exe есть свой цикл обработки сообщений. Он крутится в ЕЁ адресном пространстве. А у твоей Prog1.exe свой цикл. И крутится он в ТВОЕМ адресном пространстве.
Несколько раз встречал решение в интернете, но не нужно было.
карма: 6

0
Редактировалось 11 раз(а), последний 2017-09-10 14:08:27