Что это значит: “Дочерний процесс может наследовать дескриптор”?

Существуют некоторые объекты Win32, которые согласно SDK могут быть "наследованы" к дочерним процессам, созданным данным процессом. (События, взаимные исключения, каналы...)

Что это на самом деле означает?

Скажем, у меня есть именованный объект-событие, созданный с CreateEvent, одно время с bInheritHandle == true, и другое время == false.

Теперь я запускаю дочерний процесс. Как те два дескриптора события влияют на дочерний процесс? По которым сценариям они отличаются?

10
задан Daniel Rikowski 10 February 2016 в 09:02
поделиться

2 ответа

Если вы создаете / откроете объект и позволяете, чтобы он был унаследован, дочерние процессы, которые разрешены наследовать ручки (например, вы можете указать Binherithandles = True для createProcess) будет иметь копии этих ручков. Эти унаследованные ручки будут иметь одинаковые значения ручки, что и родительские ручки. Таким образом, например:

  • CreateeeEvent Возвращает ручку на объект события, ручка - это 0x1234 .
  • Вы разрешаете эту ручку наследоваться.
  • Вы создаете детский процесс, который наследует ваши ручки.
  • Этот дочерний процесс теперь может использовать ручку 0x1234 без необходимости звонить CreateEwent или OpenEvent . Например, вы можете пройти значение ручки в командной строке дочернего процесса.

Это полезно для неназванных объектов - поскольку они безымянные, другие процессы не могут открыть их. Использование ручки наследования дочерних процессов может получить ручки для неназванных объектов, если вы хотите их.

15
ответ дан 3 December 2019 в 20:04
поделиться

Если вы создадите событие и позволите хэндлу унаследовать от дочерних процессов, то дочерний процесс может использовать хэндл к тому же самому объекту, что и родительский. Это может быть использовано таким образом, что дочерний процесс использует хэндл события для подачи сигнала родителю, когда задача выполнена (существует много других способов использования наследуемых объектов хэндлов событий).

EDIT: Удаленная дезинформация.

1
ответ дан 3 December 2019 в 20:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: