Служба предназначена для управления процессами.
Сведения о методах службы приведены в таблице ниже.
Метод
|
Назначение и параметры метода
|
Потенциальная опасность метода
|
Create
|
Назначение
Создает процесс.
Параметры
- [in]
name – имя процесса. - [in]
eiid – имя класса процесса. - [in]
path – имя исполняемого файла в ROMFS. - [in]
stackSize – размер стека процесса в байтах. - [in]
priority – значение, задающее приоритет начального потока исполнения. - [in]
flags – флаги, задающие параметры создания процесса. - [out]
child – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует созданный процесс. - [out]
rc – код возврата.
|
Позволяет выполнить следующие действия:
- Создать процесс, который будет привилегированным с точки зрения политики безопасности решения (указав имя класса процессов с привилегиями).
- Зарезервировать имя процесса, чтобы другой процесс с таким именем нельзя было создать.
- Создать процесс, при возникновении необработанного исключения в котором операционная система останавливается.
- Загрузить в память процесса код из исполняемого файла для последующего исполнения.
- Исчерпать оперативную память, создавая множество процессов.
- Исчерпать память ядра, создавая в ней множество объектов.
|
LoadSeg
|
Назначение
Загружает сегмент образа программы в память процесса из буфера MDL.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
mdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий сегмент образа программы. - [in]
segAttr – структура, содержащая параметры загрузки сегмента образа программы. - [out]
rc – код возврата. - [out]
retaddr – базовый адрес региона виртуальной памяти процесса, куда загружен сегмент образа программы.
|
Позволяет загрузить в память процесса код для последующего исполнения.
|
SetEntry
|
Назначение
Задает точку входа процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
entry – точка входа начального потока процесса. - [out]
rc – код возврата.
|
Создает условия для запуска кода, загруженного в память процесса.
|
LoadElfSyms
|
Назначение
Загружает таблицу символов и таблицу строк из буферов MDL в память процесса.
Буферы MDL содержат таблицу символов и таблицу строк из незагружаемых сегментов файла ELF. Эти таблицы нужны для получения данных обратной трассировки стека (сведений о стеках вызовов).
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
relocBase – базовый адрес загрузки образа программы. - [in]
symMdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий таблицу символов. - [in]
symSegAttr – структура, содержащая параметры загрузки таблицы символов. - [in]
symSize – размер таблицы символов в байтах. - [in]
strMdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий таблицу строк. - [in]
strSegAttr – структура, содержащая параметры загрузки таблицы строк. - [in]
strSize – размер таблицы строк в байтах. - [out]
rc – код возврата.
|
Нет.
|
SetEnv
|
Назначение
Загружает параметры процесса в его память.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
env – последовательность, содержащая параметры процесса. - [out]
rc – код возврата.
|
Позволяет исчерпать память ядра, создавая в ней множество объектов.
|
FreeSelfEnv
|
Назначение
Освобождает память текущего процесса, занятую параметрами, загруженными методом SetEnv .
Параметры
|
Нет.
|
Resume
|
Назначение
Запускает процесс.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [out]
rc – код возврата.
|
Позволяет выполнить следующие действия:
- Запустить на исполнение код, загруженный в память процесса.
- Запустить множество ранее созданных процессов, чтобы сократить вычислительные ресурсы, доступные другим процессам (рекомендуется контролировать приоритет начального потока исполнения при вызове метода
Create ).
|
Exit
|
Назначение
Завершает текущий процесс.
Параметры
- [in]
status – код завершения текущего процесса. - [out]
rc – код возврата.
|
Нет.
|
Terminate
|
Назначение
Завершает процесс.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [out]
rc – код возврата.
|
Позволяет завершить другой процесс при наличии его дескриптора. (Маска прав дескриптора должна разрешать завершение процесса.)
|
GetExitInfo
|
Назначение
Позволяет получить сведения о завершенном процессе.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует завершенный процесс. - [out]
status – код завершения процесса. - [out]
info – объединение, содержащее сведения о завершенном процессе. - [out]
rc – код возврата.
|
Нет.
|
GetThreadContext
|
Назначение
Позволяет получить контекст потока исполнения, входящего в процесс, который перешел в "замороженное" состояние в результате необработанного исключения.
В "замороженном" состоянии исполнение процесса прекращается, но его ресурсы не освобождаются, чтобы можно было собрать данные об этом процессе.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс, который находится в "замороженном" состоянии. - [in]
index – индекс потока исполнения. Используется для перечисления потоков исполнения. Нумерация начинается с нуля. Нулевой индекс имеет поток исполнения, в котором возникло необработанное исключение. - [out]
context – последовательность, содержащая контекст потока исполнения. - [out]
rc – код возврата.
|
Позволяет нарушить изоляцию процесса, который перешел в "замороженное" состояние в результате необработанного исключения. Например, полученный контекст потока исполнения может содержать значения переменных.
|
GetNextVmRegion
|
Назначение
Позволяет получить сведения о регионе виртуальной памяти, принадлежащем процессу, который перешел в "замороженное" состояние в результате необработанного исключения.
В "замороженном" состоянии исполнение процесса прекращается, но его ресурсы не освобождаются, чтобы можно было собрать данные об этом процессе.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс, который находится в "замороженном" состоянии. - [in]
after – адрес, после которого размещен регион виртуальной памяти. - [out]
next – базовый адрес региона виртуальной памяти. - [out]
size – размер региона виртуальной памяти в байтах. - [out]
flags – флаги, отражающие параметры региона виртуальной памяти. - [out]
handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, отображенный на регион виртуальной памяти. - [out]
rc – код возврата.
|
Позволяет нарушить изоляцию процесса, который перешел в "замороженное" состояние в результате необработанного исключения. Изоляция нарушается, так как открывается доступ к региону памяти процесса.
|
TerminateAfterFreezing
|
Назначение
Завершает процесс, который перешел в "замороженное" состояние в результате необработанного исключения.
В "замороженном" состоянии исполнение процесса прекращается, но его ресурсы не освобождаются, чтобы можно было собрать данные об этом процессе. Процесс в "замороженном" состоянии не может быть повторно запущен, он может быть только завершен.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс, который находится в "замороженном" состоянии. - [out]
rc – код возврата.
|
Позволяет завершить процесс, который перешел в "замороженное" состояние в результате необработанного исключения. Это не позволит собрать данные об этом процессе для диагностики.
|
GetName
|
Назначение
Позволяет получить имя текущего процесса.
Параметры
- [out]
name – имя процесса. - [out]
rc – код возврата.
|
Нет.
|
GetPath
|
Назначение
Позволяет получить имя исполняемого файла, из которого запущен текущий процесс.
Параметры
- [out]
path – имя исполняемого файла в ROMFS. - [out]
rc – код возврата.
|
Нет.
|
GetInitialThreadPriority
|
Назначение
Позволяет получить приоритет начального потока процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [out]
priority – значение, отражающее приоритет начального потока исполнения. - [out]
rc – код возврата.
|
Нет.
|
SetInitialThreadPriority
|
Назначение
Задает приоритет начального потока процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
priority – значение, задающее приоритет начального потока исполнения. - [out]
rc – код возврата.
|
Позволяет повысить приоритет начального потока процесса, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов.
Рекомендуется контролировать приоритет начального потока исполнения.
|
GetTasksList
|
Назначение
Позволяет получить сведения о существующих процессах.
Параметры
- [out]
notice – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений, который настроен на получение уведомлений о завершении процессов. - [out]
strings – последовательность, содержащая параметры процессов. - [out]
sids – последовательность, содержащая идентификаторы безопасности процессов (SID каждого процесса). - [out]
count – число процессов. - [out]
rc – код возврата.
|
Позволяет исчерпать память ядра, создавая в ней множество объектов.
|
SetInitialThreadSchedPolicy
|
Назначение
Задает класс планирования и приоритет начального потока процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
policy – значение, задающее класс планирования начального потока исполнения. - [in]
priority – значение, задающее приоритет начального потока исполнения. - [in]
params – объединение, содержащее параметры класса планирования начального потока исполнения. - [out]
rc – код возврата.
|
Позволяет выполнить следующие действия:
- Сделать начальный поток процесса потоком исполнения реального времени, который заберет все процессорное время у остальных потоков исполнения, в том числе из других процессов (рекомендуется контролировать класс планирования начального потока исполнения).
- Повысить приоритет начального потока процесса, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов (рекомендуется контролировать приоритет начального потока исполнения).
|
ReseedAslr
|
Назначение
Задает начальный вектор в генераторе случайных чисел для поддержки ASLR.
Влияет на результаты вызова метода Allocate службы виртуальной памяти в контексте заданного процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
seed – последовательность, содержащая начальный вектор для генерации случайных чисел. - [out]
rc – код возврата.
|
Нет.
|