Копирование дескрипторов

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

Чтобы выполнить копирование дескриптора, нужно вызвать функцию KnHandleCopy(). При этом в маске прав дескриптора должен быть установлен флаг OCAP_HANDLE_COPY.

Сведения о функциях API приведены в таблице ниже.

Функции handle_api.h

Функция

Сведения о функции

KnHandleCopy()

Назначение

Копирует дескриптор.

В результате копирования вызывающий процесс получает потомка дескриптора.

Параметры

  • [in] inHandle – оригинальный дескриптор.
  • [in] newRightsMask – маска прав потомка дескриптора.
  • [in,optional] copyBadge – дескриптор объекта контекста передачи ресурса или INVALID_HANDLE, если не требуется ассоциировать копирование дескриптора с этим объектом.
  • [out] outHandle – указатель на потомка дескриптора.

Возвращаемые значения

В случае успеха возвращает rcOk, иначе возвращает код ошибки.

В начало