Функции подписки на уведомления
API уведомлений предоставляют механизм подписки на события файловой системы. Механизм позволяет приложениям отслеживать изменения в файлах и директориях, например, доступ объекту, изменение содержимого, создание или удаление файлов.
API определен в заголовочном файле sysroot-*-kos/include/kos/subscribe.h из состава KasperskyOS SDK.
Использование API
Для использования механизма уведомлений требуется:
- Создать объект подписки с помощью функции
subscribe_create(). - Добавить интересующие события с помощью функции
subscribe_ctl(). - Подписаться на доставку уведомлений о событиях с помощью функции
subscribe_wait(). - При необходимости завершить доставку уведомлений с помощью одной из функций
subscribe_drop_and_wake()илиsubscribe_free().
Сведения о функциях API
Функции subscribe.h
|
|
Функция | Сведения о функции |
| Назначение Выделяет и инициализирует объект подписки. Параметры Отсутствуют. Возвращаемые значения Указатель на объект подписки в случае успеха, |
| Назначение Добавляет или удаляет запись события в список наблюдения объекта подписки. Параметры
Возвращаемые значения 0 в случае успеха, -1 и код ошибки в случае неудачи. |
| Назначение Ожидает события из списка, связанного с объектом подписки. Параметры
Возвращаемые значения Количество полученных событий в случае успеха, -1 и код ошибки в случае неудачи. |
| Назначение Очищает список наблюдения и пробуждает все потоки, ожидающие события на этом объекте подписки. Параметры
Возвращаемые значения 0 в случае успеха, -1 и код ошибки в случае неудачи. |
| Назначение Очищает список наблюдения, пробуждает все потоки, ожидающие события на этом объекте подписки, и уничтожает объект подписки. Параметры
Возвращаемые значения 0 в случае успеха, -1 и код ошибки в случае неудачи. |
Структура и маски событий
Структура subscribe_event содержит информацию о событии:
fd– дескриптор объекта, к которому относится событие.event_mask– маска событий, которые были зарегистрированы:N_ACCESS (1 << 0)– к объекту был предоставлен доступ.N_MODIFY (1 << 1)– объект или его содержимое было изменено.N_ATTRIB (1 << 2)– метаданные объекта или его содержимого было изменено.N_CLOSE (1 << 3)– объект или его содержимое было закрыто.N_OPEN (1 << 4)– объект или его содержимое было открыто.N_CREATE (1 << 5)– создан файл или директория внутри отслеживаемого объекта.N_UNLINK (1 << 6)– объект или его содержимое было удалено.SUBSCRIBE_MASK_ALL– используется для подписки на все события.