Содержание
Отзыв дескрипторов
Программа может отзывать потомков дескриптора, которым она владеет. Отзыв дескрипторов осуществляется согласно дереву наследования дескрипторов.
Отзыв дескрипторов не удаляет их, но через отозванные дескрипторы невозможно обращаться к ресурсам. Любая функция, которая принимает дескриптор, завершается с ошибкой rcHandleRevoked
, если эта функция вызывается с отозванным дескриптором.
Отзыв выполняется функциями KnHandleRevoke()
и KnHandleRevokeSubtree()
, которые объявлены в заголовочном файле coresrv/handle/handle_api.h
. Функция KnHandleRevokeSubtree()
использует объект контекста передачи ресурса, который создается при передаче дескрипторов.
handle_api.h (фрагмент)
/**
* Функция удаляет дескриптор handle и отзывает всех его потомков.
* В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
*/
Retcode KnHandleRevoke(Handle handle);
/**
* Функция отзывает дескрипторы, которые образуют поддерево
* наследования дескриптора handle. Корневым узлом поддерева
* наследования является дескриптор, который порожден передачей
* дескриптора handle в ассоциации с объектом контекста
* передачи ресурса badge.
* В случае успеха функция возвращает rcOk, иначе возвращает код ошибки.
*/
Retcode KnHandleRevokeSubtree(Handle handle, Handle badge);