Получение доступа к именованным BLOB-объектам (blob_api.h)
API определен в заголовочном файле sysroot-*-kos/include/coresrv/blob/blob_api.h из состава KasperskyOS SDK.
API предназначен для получения доступа к именованным BLOB-объектам (англ. Binary Large Objects, BLOBs). Можно получить доступ к следующим BLOB-объектам:
- Образу ROMFS, поставляемому в составе образа ядра KasperskyOS.
Имя BLOB-объекта:
romsf.0. - Образу ROMFS, помещаемому в память загрузчиком (аналогично initrd в Linux).
Имя BLOB-объекта:
romsf.1.
Сведения о функциях API приведены в таблице ниже.
Получение дескриптора BLOB-объекта
Чтобы получить дескриптор BLOB-объекта по имени этого объекта, нужно вызвать функцию KnBlobGet().
Дескриптор BLOB-объекта можно передать другому процессу через IPC.
Дескриптор BLOB-объекта с образом ROMFS используется не только функциями API blob_api.h, но и является входными данными для функции KosRomFsMountByHandle() из API romfs.h.
Отображение BLOB-объекта на регион виртуальной памяти
Чтобы зарезервировать регион виртуальной памяти и отобразить на него BLOB-объект, нужно вызвать функцию KnBlobMap().
Один и тот же BLOB-объект может отображаться одновременно на несколько регионов виртуальной памяти в одном или нескольких процессах.
Чтобы освободить регион виртуальной памяти, зарезервированный вызовом функции KnBlobMap(), нужно закрыть дескриптор этого региона.
Получение размера BLOB-объекта
Чтобы получить размер BLOB-объекта, нужно вызвать функцию KnBlobGetSize(). Также размер BLOB-объекта передается через выходной параметр size функции KnBlobGet().
Удаление BLOB-объекта
Чтобы инициировать удаление BLOB-объекта, нужно вызвать функцию KnBlobRemove(). Фактически BLOB-объект будет удален после выполнения всех следующих условий:
- Освобожден каждый регион виртуальной памяти, на который отображен BLOB-объект, во всех процессах, в которых выполнено это отображение.
Используя API romfs.h, следует учитывать, что при монтировании образа ROMFS вызовом функции
KosRomFsMount()илиKosRomFsMountByHandle()выполняется резервирование региона виртуальной памяти и отображение на него BLOB-объекта. При размонтировании образа ROMFS вызовом функцииKosRomFsUnmount()илиKosRomFsUnmountAll()выполняется освобождение региона виртуальной памяти, на который отображен BLOB-объект. - Закрыт или отозван каждый дескриптор BLOB-объекта во всех процессах, которые владеют этими дескрипторами.
Используя API romfs.h, следует учитывать, что функция
KosRomFsMount()закрывает дескриптор BLOB-объекта, а функцияKosRomFsMountByHandle()этого не делает. Поэтому после вызова функцииKosRomFsMountByHandle()дескриптор нужно закрыть самостоятельно.
Удаление BLOB-объекта может быть запрещено ядром KasperskyOS. В этом случае функция KnBlobRemove() возвращает rcInvalidOperation.
Сведения о функциях API
Функции blob_api.h
Функция | Сведения о функции |
|---|---|
| Назначение Позволяет получить дескриптор BLOB-объекта по имени этого объекта. Параметры
Возвращаемые значения В случае успеха возвращает |
| Назначение Инициирует удаление BLOB-объекта. Параметры
Возвращаемые значения В случае успеха возвращает |
| Назначение Резервирует регион виртуальной памяти и отображает на него BLOB-объект. Параметры
Возвращаемые значения В случае успеха возвращает Дополнительные сведения В параметре
В параметре
|
| Назначение Позволяет получить размер BLOB-объекта. Параметры
Возвращаемые значения В случае успеха возвращает |