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
Функция |
Сведения о функции |
---|---|
|
Назначение Получение указателя на экземпляр интерфейса Параметры
Возвращаемые значения В случае успеха возвращает |
Пример использования:
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;
}
// ...
}