Получение доступа к именованным BLOB-объектам (blob_api.h)

API определен в заголовочном файле sysroot-*-kos/include/coresrv/blob/blob_api.h из состава KasperskyOS SDK.

API предназначен для получения доступа к именованным BLOB-объектам (англ. Binary Large Objects, BLOBs). Можно получить доступ к следующим BLOB-объектам:

Сведения о функциях 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-объект будет удален после выполнения всех следующих условий:

  1. Освобожден каждый регион виртуальной памяти, на который отображен BLOB-объект, во всех процессах, в которых выполнено это отображение.

    Используя API romfs.h, следует учитывать, что при монтировании образа ROMFS вызовом функции KosRomFsMount() или KosRomFsMountByHandle() выполняется резервирование региона виртуальной памяти и отображение на него BLOB-объекта. При размонтировании образа ROMFS вызовом функции KosRomFsUnmount() или KosRomFsUnmountAll() выполняется освобождение региона виртуальной памяти, на который отображен BLOB-объект.

  2. Закрыт или отозван каждый дескриптор BLOB-объекта во всех процессах, которые владеют этими дескрипторами.

    Используя API romfs.h, следует учитывать, что функция KosRomFsMount() закрывает дескриптор BLOB-объекта, а функция KosRomFsMountByHandle() этого не делает. Поэтому после вызова функции KosRomFsMountByHandle() дескриптор нужно закрыть самостоятельно.

Удаление BLOB-объекта может быть запрещено ядром KasperskyOS. В этом случае функция KnBlobRemove() возвращает rcInvalidOperation.

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

Функции blob_api.h

Функция

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

KnBlobGet()

Назначение

Позволяет получить дескриптор BLOB-объекта по имени этого объекта.

Параметры

  • [in] name – указатель на имя BLOB-объекта.
  • [out] rid – указатель на дескриптор BLOB-объекта.
  • [out,optional] size – указатель на размер BLOB-объекта в байтах или RTL_NULL, если не требуется получать размер BLOB-объекта.

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

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

KnBlobRemove()

Назначение

Инициирует удаление BLOB-объекта.

Параметры

  • [in] name – указатель на имя BLOB-объекта.

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

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

KnBlobMap()

Назначение

Резервирует регион виртуальной памяти и отображает на него BLOB-объект.

Параметры

  • [in] rid – дескриптор BLOB-объекта.
  • [in] prot – флаги, задающие права доступа к BLOB-объекту. Флаги определены в заголовочном файле sysroot-*-kos/include/vmm/flags.h из состава KasperskyOS SDK.
  • [in,optional] attr – флаги, задающие параметры региона виртуальной памяти, или 0, если не требуется задавать эти параметры. Флаги определены в заголовочном файле sysroot-*-kos/include/vmm/flags.h из состава KasperskyOS SDK.
  • [out] addr – указатель на базовый адрес региона виртуальной памяти.
  • [out] handle – указатель на дескриптор региона виртуальной памяти.

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

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

Дополнительные сведения

В параметре prot можно указать следующие комбинации флагов:

  • VMM_FLAG_READ – доступ на чтение.
  • VMM_FLAG_READ | VMM_FLAG_WRITE – доступ на чтение и запись.

В параметре attr можно указать следующие флаги:

  • VMM_FLAG_CACHE_DISABLE – отключение кеширования.

KnBlobGetSize()

Назначение

Позволяет получить размер BLOB-объекта.

Параметры

  • [in] handle – дескриптор BLOB-объекта.
  • [out] size – указатель на размер BLOB-объекта в байтах.

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

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

В начало