Интерфейс IProcessControl
API определен в заголовочном файле sysroot-*-kos/include/alm/execution_manager/i_process_control.h
из состава KasperskyOS SDK.
API позволяет:
- запускать процесс из исполняемого файла, установленного компонентом PackageManager из KPA-пакета в решение на базе KasperskyOS;
- получать сведения о процессе (включая информацию о его завершении);
- останавливать процесс.
Сведения о функциях API приведены в таблице ниже.
Запуск процесса
Чтобы запустить процесс, нужно вызвать функцию StartProcess()
. Через входной параметр opts
эта функция принимает параметры для запуска процесса в виде структуры StartOptions
. Все поля этой структуры являются опциональными для инициализации.
При инициализации структуры StartOptions
транспортный контейнер дескриптора parent
заполняется значениями по умолчанию, которые означают отсутствие родительского процесса. Передавая в этом параметре запускаемому дочернему процессу дескриптор родительского процесса, можно создавать иерархию процессов.
Вектор userHandles
является компонентом структуры StartOptions
и содержит список пользовательских дескрипторов, которые будут переданы процессу при его запуске. Элементами списка являются пары, задаваемые в структуре UserHandleItem
и состоящие из дескриптора и его имени. После запуска процесса переданные ему дескрипторы могут быть найдены с помощью функции KosTaskLookupResource()
по их именам.
Входные параметры pkgId
и runConfigId
функции StartProcess()
определены в манифесте KPA-пакета. Их значения могут быть получены с использованием функций из интерфейса IPackageManifest компонента PackageManager.
Остановка процесса
Чтобы остановить процесс, нужно вызвать функцию StopProcess()
. Через входной параметр stopPolicy
эта функция принимает политику остановки процесса из перечисления StopPolicy
.
Получение сведений о процессе
Чтобы запросить сведения о процессе, нужно вызвать функцию GetProcessState()
. Через выходной параметр state
эта функция возвращает сведения о процессе в виде структуры ProcessContext
.
Перечисление state
является компонентом структуры ProcessContext
и описывает состояние процесса.
Перечисление exitStatus
является компонентом структуры ProcessContext
и описывает причину остановки процесса. Перечисление ExecutableExitStatus
определено в заголовочном файле sysroot-*-kos/include/alm/execution_manager/execution_manager_types.h
из состава KasperskyOS SDK.
Числовой параметр exitCode
является компонентом структуры ProcessContext
и содержит код возврата для процесса, который остановился самостоятельно, в том числе после получения сигнала на свою остановку. Значения для этого кода возврата определяются разработчиком решения на базе KasperskyOS.
Числовой параметр exitReason
является компонентом структуры ProcessContext
и содержит код возврата, который уточняет причину неудачной попытки запуска процесса, либо rcOk
в случае успешного запуска. Параметр определен в заголовочном файле sysroot-*-kos/include/rtl_cpp/retcode.h
из состава KasperskyOS SDK. В этом файле содержатся коды возврата, которые являются общими для API любых компонентов решения и их составных частей (см. "Коды возврата").
Функции i_process_control.h
Функция |
Сведения о функции |
---|---|
|
Назначение Запускает процесс. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Останавливает процесс. Параметры
Возвращаемые значения В случае успеха возвращает |
|
Назначение Запрашивает сведения о процессе. Параметры
Возвращаемые значения В случае успеха возвращает |
Пример использования:
client.cpp