Служба предназначена для управления процессами.
Сведения о методах службы приведены в таблице ниже.
Метод
|
Назначение и параметры метода
|
Потенциальная опасность метода
|
Create
|
Назначение
Создает процесс.
Параметры
- [in]
name – имя процесса. - [in]
eiid – имя класса процесса. - [in]
path – имя исполняемого файла в ROMFS. - [in]
stackSize – размер стека потока исполнения, используемый по умолчанию при создании потоков процесса, в байтах. - [in]
priority – приоритет начального потока исполнения. - [in]
flags – флаги, задающие параметры создания процесса. - [out]
child – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует созданный процесс. - [out]
rc – код возврата.
|
Позволяет выполнить следующие действия:
- Создать процесс, который будет привилегированным с точки зрения политики безопасности решения (указав имя класса процессов с привилегиями).
- Зарезервировать имя процесса, чтобы другой процесс с таким именем нельзя было создать.
- Создать процесс, при возникновении необработанного исключения в котором операционная система останавливается.
- Загрузить в память процесса код из исполняемого файла для последующего исполнения.
- Исчерпать оперативную память, создавая множество процессов.
- Исчерпать память ядра, создавая в ней множество объектов.
|
LoadSeg
|
Назначение
Загружает сегмент ELF-образа в память процесса из буфера MDL.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
mdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий сегмент ELF-образа. - [in]
segAttr – структура, содержащая параметры загрузки сегмента ELF-образа. - [out]
rc – код возврата. - [out]
retaddr – базовый адрес региона виртуальной памяти процесса, куда загружен сегмент ELF-образа.
|
Позволяет загрузить в память процесса код для последующего исполнения.
|
VmReserve
|
Назначение
Резервирует регион виртуальной памяти в процессе, который был создан "пустым".
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
addr – желаемый базовый адрес региона виртуальной памяти или 0 , чтобы этот адрес был выбран автоматически. - [in]
size – размер региона виртуальной памяти в байтах. - [in]
flags – флаги, задающие параметры региона виртуальной памяти. - [out]
outAddr – базовый адрес зарезервированного региона виртуальной памяти. - [out]
rc – код возврата.
|
Позволяет выполнить следующие действия:
- Исчерпать память ядра, создавая в ней множество объектов.
- Зарезервировать регионы виртуальной памяти в другом процессе, который был создан "пустым" и еще не запущен, при наличии его дескриптора. (Маска прав дескриптора должна разрешать резервирование виртуальной памяти.)
|
VmFree
|
Назначение
Освобождает регион виртуальной памяти, зарезервированный вызовом метода VmReserve в процессе, который был создан "пустым".
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
addr – базовый адрес региона виртуальной памяти. - [in]
size – размер региона виртуальной памяти в байтах. - [out]
rc – код возврата.
|
Позволяет освободить регионы виртуальной памяти в другом процессе, который был создан "пустым" и еще не запущен, при наличии его дескриптора. (Маска прав дескриптора должна разрешать освобождение виртуальной памяти.)
|
SetEntry
|
Назначение
Задает точку входа в программу и смещение загрузки ELF-образа.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
state – структура, содержащая адрес точки входа в программу и смещение загрузки ELF-образа в байтах. - [out]
rc – код возврата.
|
Создает условия для запуска кода, загруженного в память процесса.
|
LoadElfSyms
|
Назначение
Загружает таблицу символов .symtab и таблицу строк .strtab из буферов MDL в память процесса, который был создан "пустым".
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
symMdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий таблицу символов .symtab . - [in]
symSegAttr – структура, содержащая параметры загрузки таблицы символов .symtab . - [in]
symSize – размер таблицы символов .symtab в байтах. - [in]
strMdl – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL, содержащий таблицу строк .strtab . - [in]
strSegAttr – структура, содержащая параметры загрузки таблицы строк .strtab . - [in]
strSize – размер таблицы строк .strtab в байтах. - [out]
rc – код возврата.
|
Нет.
|
LoadElfHdr
|
Назначение
Записывает заголовок ELF-образа в PCB процесса, который был создан "пустым".
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
hdrData – последовательность, содержащая заголовок ELF-образа. - [out]
rc – код возврата.
|
Нет.
|
SetEnv
|
Назначение
Записывает данные в SCP дочернего процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует дочерний процесс. - [in]
env – последовательность, содержащая данные для записи в SCP. - [out]
rc – код возврата.
|
Позволяет исчерпать память ядра, создавая в ней множество объектов.
|
FreeSelfEnv
|
Назначение
Удаляет SCP вызывающего процесса.
Параметры
|
Нет.
|
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 – структура, содержащая идентификатор (TID) и контекст потока исполнения. - [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
|
Назначение
Позволяет получить имя исполняемого файла (в ROMFS), из которого создан вызывающий процесс.
Параметры
- [out]
path – имя исполняемого файла. - [out]
rc – код возврата.
|
Нет.
|
GetInitialThreadPriority
|
Назначение
Позволяет получить приоритет начального потока процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [out]
priority – приоритет начального потока исполнения. - [out]
rc – код возврата.
|
Нет.
|
SetInitialThreadPriority
|
Назначение
Задает приоритет начального потока процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
priority – приоритет начального потока исполнения. - [out]
rc – код возврата.
|
Позволяет повысить приоритет начального потока процесса, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов.
Рекомендуется контролировать приоритет начального потока исполнения.
|
GetTasksList
|
Назначение
Позволяет получить сведения о существующих процессах.
Параметры
- [out]
notice – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует приемник уведомлений, который настроен на получение уведомлений о завершении процессов. - [out]
strings – последовательность, содержащая параметры процессов. - [out]
pids – последовательность, содержащая идентификаторы процессов (PID каждого процесса). - [out]
rc – код возврата.
|
Позволяет исчерпать память ядра, создавая в ней множество объектов.
|
SetInitialThreadSchedPolicy
|
Назначение
Задает класс планирования и приоритет начального потока процесса.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
policy – класс планирования начального потока процесса. - [in]
priority – приоритет начального потока процесса. - [in]
params – объединение, содержащее параметры класса планирования начального потока процесса. - [out]
rc – код возврата.
|
Позволяет выполнить следующие действия:
- Сделать начальный поток процесса потоком исполнения реального времени, который заберет все процессорное время у остальных потоков исполнения, в том числе из других процессов (рекомендуется контролировать класс планирования начального потока процесса).
- Повысить приоритет начального потока процесса, чтобы сократить процессорное время, доступное остальным потокам исполнения, в том числе из других процессов (рекомендуется контролировать приоритет начального потока процесса).
|
ReseedAslr
|
Назначение
Задает начальное значение генератора случайных чисел для поддержки ASLR.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
seed – последовательность, содержащая начальное значение генератора случайных чисел. - [out]
rc – код возврата.
|
Нет.
|
GetElfSyms
|
Назначение
Позволяет получить адрес и размер таблицы символов .symtab и таблицы строк .strtab для вызывающего процесса.
Параметры
- [out]
relocBase – смещение загрузки ELF-образа в байтах. - [out]
syms – адрес таблицы символов .symtab . - [out]
symsCnt – размер таблицы символов .symtab в байтах. - [out]
strs – адрес таблицы строк .strtab . - [out]
strsSize – размер таблицы строк .strtab в байтах. - [out]
rc – код возврата.
|
Нет.
|
TransferHandle
|
Назначение
Передает дескриптор процессу, который еще не запущен.
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [in]
srcHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Поле дескриптора содержит передаваемый дескриптор. - [in]
srcBadge – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует объект контекста передачи ресурса. - [in]
dstRights – маска прав потомка передаваемого дескриптора. - [out]
dstHandle – значение потомка переданного дескриптора (из пространства дескрипторов процесса, который получил дескриптор). - [out]
rc – код возврата.
|
Позволяет исчерпать память ядра, создавая в ней множество объектов.
|
GetPid
|
Назначение
Позволяет получить идентификатор процесса (PID).
Параметры
- [in]
task – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует процесс. - [out]
pid – идентификатор процесса. - [out]
rc – код возврата.
|
Нет.
|