Обработка наследования
Дочерний процесс может наследовать дескриптор от родительского процесса. Унаследованный дескриптор действителен только в контексте дочернего процесса. Чтобы дочерний процесс наследовал открытые дескрипторы от родительского процесса, выполните следующие действия.
- Создайте дескриптор с bInheritHandle элементом структуры SECURITY_ATTRIBUTES значение TRUE.
- Создайте дочерний процесс с помощью функции CreateProcessс параметром bInheritHandles значение TRUE.
Функция DuplicateHandle дублирует дескриптор, используемый в текущем процессе или в другом процессе. Если приложение дублирует один из его дескрипторов для другого процесса, повторяющийся дескриптор действителен только в контексте другого процесса.
Повторяющийся или унаследованный дескриптор является уникальным значением, но он ссылается на тот же объект, что и исходный дескриптор. Процессы могут наследовать или дублировать дескриптор для следующих типов объектов:
- Маркер доступа
- Устройство связи
- Входные данные консоли
- Буфер экрана консоли
- Настольный
- Каталог
- Событие
- Файл
- Сопоставление файлов
- Работа
- Mailslot
- Мьютекс
- Труба
- Процесс
- Раздел реестра
- Семафор
- Розетка
- Нить
- Таймер
- Станция окон
Все остальные объекты являются закрытыми для процесса, созданного ими; Их дескриптор объектов не может быть дублирован или унаследован.
Дополнительные сведения см. в наследования.