API определен в заголовочном файле sysroot-*-kos/include/component/execution_manager/i_system_control.h из состава KasperskyOS SDK.
API позволяет получать сведения о процессах, запущенных с использованием компонента ExecutionManager, а также завершать работу системы.
Сведения о функциях API приведены в таблице ниже.
Получение сведений о процессах
Чтобы запросить сведения о процессах, нужно вызвать функцию GetSystemInfo(). Через выходной параметр ProcessInfos функция возвращает сведения о процессах в виде вектора структур ProcessInfo.
struct ProcessInfo
{
// Имя процесса.
std::string name;
// Имя класса процесса.
std::string eiid;
// Состояние процесса.
ProcessState state;
};
Перечисление state является компонентом структуры ProcessInfo и описывает состояние процесса.
enum class ProcessState : uint32_t
{
// Служебная константа.
None = 0,
// Процесс создан.
Created,
// Процесс инициализирован.
Prepared,
// Процесс запущен.
Running,
// Процесс аварийно остановлен.
Failed,
// Процесс остановлен, но данные о процессе доступны
// для функции GetProcessState() интерфейса IProcessControl.
Finished,
// Процесс завершен и не существует в системе.
NotExisting,
};
Завершение работы системы
Чтобы завершить работу системы, нужно вызвать функцию StopAllEntities(). Эта функция не имеет параметров.
Функции i_system_control.h
Функция |
Сведения о функции |
|---|---|
|
Назначение Останавливает все запущенные процессы, затем завершает процесс ExecutionManager и отправляет в ядро запрос на выключение устройства. Параметры Нет. Возвращаемые значения В случае успеха возвращает |
|
Назначение Получает сведения о процессах, запущенных с использованием компонента ExecutionManager. Параметры
Возвращаемые значения В случае успеха возвращает |
Пример использования:
client.cpp
int main(int argc, const char *argv[])
{
// ...
alm::execution_manager::ProcessInfos infos{};
res = sysCtl->GetSystemInfo(infos);
if (res != kos::Ok)
{
std::cerr << fmt::format("[{}] Failed to get system info. res=0x{:x}\n", selfName, res);
return EXIT_FAILURE;
}
if (sc->StopAllEntities() != kos::Ok)
{
std::cerr << "Cannot stop all processes\n";
return EXIT_FAILURE;
}
// ...
}
В начало