KasperskyOS Community Edition 1.3

Компонент ExecutionManager

API определен в заголовочных файлах, расположенных в директории sysroot-*-kos/include/component/execution_manager/ из состава KasperskyOS SDK.

Сценарий использования компонента ExecutionManager описан в статье "Запуск процессов с помощью системной программы ExecutionManager".

Интерфейс execution_manager_proxy.h

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

Интерфейс содержит функцию CreateExecutionManager() для получения указателя на экземпляр интерфейса IExecutionManager, необходимого для работы с компонентом ExecutionManager. Через входной параметр cfg эта функция принимает параметры конфигурации в виде структуры ExecutionManagerConfig. Все поля этой структуры опциональны для заполнения.

struct ExecutionManagerConfig { // Имя IPC-канала для соединения с процессом ExecutionManager. char const* const mainConnection = KOS_EXECMGR_CONN_MAIN; // Имя службы, реализующей интерфейс IApplicationController. char const* const appControlInterface = KOS_EXECMGR_IFACE_AC; // Имя службы, реализующей интерфейс IStateProvider. char const* const appStateInterface = KOS_EXECMGR_IFACE_AS; // Имя службы, реализующей интерфейс ISystemController. char const* const systemControlInterface = KOS_EXECMGR_IFACE_SC; // Имя службы, реализующей интерфейс IProcessControl. char const* const processControlInterface = KOS_EXECMGR_IFACE_PC; // Имя класса процесса ExecutionManager. char const* const execmgrServerName = KOS_EXECMGR_SERVER_NAME; };

Функции execution_manager_proxy.h

Функция

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

CreateExecutionManager()

Назначение

Получение указателя на экземпляр интерфейса IExecutionManager, необходимого для работы с компонентом ExecutionManager.

Параметры

  • [in] cfg – структура ExecutionManagerConfig с параметрами конфигурации для соединения с процессом ExecutionManager.
  • [out] emp – указатель на экземпляр интерфейса IExecutionManager.

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

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

Пример использования:

client.cpp

#include <component/execution_manager/kos_ipc/execution_manager_proxy.h> int main(int argc, const char *argv[]) { // ... execution_manager::ipc::ExecutionManagerConfig emCfg { // Имя IPC-канала для соединения с процессом ExecutionManager. // Должно совпадать со значением MAIN_CONN_NAME в файле // CMakeLists.txt для сборки компонента ExecutionManager. .mainConnection = "ExecMgrEntity", // Имя класса процесса ExecutionManager. .execmgrServerName = "kl.ExecMgrEntity" }; execution_manager::IExecutionManagerPtr emPtr; kos::Result res = CreateExecutionManager(emCfg, emPtr); if (res != kos::Ok) { std::cerr << fmt::format("[{}] Failed to create execution manager. res=0x{:x}\n", selfName, res); return EXIT_FAILURE; } // ... }

Интерфейс IExecutionManager

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

Интерфейс IExecutionManager позволяет получить доступ к указателям на следующие интерфейсы:

  • IProcessControl – интерфейс, который позволяет запускать процесс из исполняемого файла, установленного компонентом PackageManager из KPA-пакета в решение на базе KasperskyOS, а также получать сведения о процессе (включая информацию о его завершении) и останавливать его.
  • IApplicationController – интерфейс, который позволяет запускать процесс из любого исполняемого файла, чье расположение в файловой системе известно, а также останавливать этот процесс.
  • IStateProvider – интерфейс для получения сведений о процессе, запущенном с использованием интерфейса IApplicationController.
  • ISystemController – интерфейс для управления системой.

Пример использования:

client.cpp

int main(int argc, const char *argv[]) { // ... alm::execution_manager::IProcessControlPtr pc; res = emPtr->GetProcessController(pc); if (res != kos::Ok) { std::cerr << fmt::format("[{}] Failed to create process controller. res=0x{:x}\n", selfName, res); return EXIT_FAILURE; } execmgr::IApplicationControllerPtr ac; if (ptr->GetApplicationController(ac) != kos::Ok) { std::cerr << "Can not get application controller" << std::endl; return EXIT_FAILURE; } execmgr::ISystemControllerPtr sc; if (ptr->GetSystemController(sc) != kos::Ok) { std::cerr << "Cannot get system controller" << std::endl; return EXIT_FAILURE; } // ... }

В этом разделе

Интерфейс IProcessControl

Интерфейс IApplicationController

Интерфейс IStateProvider

Интерфейс ISystemController