Компонент 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 позволяет получить доступ к указателям на следующие интерфейсы:

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

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

В начало