Поделиться через


Обработка наследования

Дочерний процесс может наследовать дескриптор от родительского процесса. Унаследованный дескриптор действителен только в контексте дочернего процесса. Чтобы дочерний процесс наследовал открытые дескрипторы от родительского процесса, выполните следующие действия.

  1. Создайте дескриптор с bInheritHandle элементом структуры SECURITY_ATTRIBUTES значение TRUE.
  2. Создайте дочерний процесс с помощью функции CreateProcessс параметром bInheritHandles значение TRUE.

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

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

  • Маркер доступа
  • Устройство связи
  • Входные данные консоли
  • Буфер экрана консоли
  • Настольный
  • Каталог
  • Событие
  • Файл
  • Сопоставление файлов
  • Работа
  • Mailslot
  • Мьютекс
  • Труба
  • Процесс
  • Раздел реестра
  • Семафор
  • Розетка
  • Нить
  • Таймер
  • Станция окон

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

Дополнительные сведения см. в наследования.