Подготовка сегментов ELF-образа к загрузке в память процесса
Сведения о функциях API приведены в таблице ниже.
Использование API
Буферы MDL используются не только для создания разделяемой памяти, но и для загрузки сегментов ELF-образа в память нового процесса. (Загрузку сегментов ELF-образа выполняет, например, инициализирующая программа Einit.)
Функции KnVmSegInitFromVm() и KnVmSegInitFromBuf() создают буфер MDL и помещают в него сегмент ELF-образа для последующей загрузки этого сегмента в память нового процесса.
Удаление буферов MDL, содержащих сегменты ELF-образа
Чтобы буферы MDL, содержащие сегменты ELF-образа, были удалены, необходимо, чтобы завершился новый процесс, на память которого эти буферы MDL отображены. А также до или после завершения этого процесса нужно выполнить следующие шаги:
- Освободить регионы виртуальной памяти, на которые отображены буферы MDL, в процессе, который создал эти буферы MDL.
Этот шаг нужно выполнить только для тех буферов MDL, которые созданы с использованием функции
KnVmSegInitFromVm().Чтобы выполнить этот шаг, нужно использовать функцию
KnVmUnmap(). - Закрыть дескрипторы буферов MDL в процессе, который создал эти буферы MDL.
Чтобы выполнить этот шаг, нужно использовать функцию
KnHandleClose(), которая объявлена в заголовочном файлеsysroot-*-kos/include/coresrv/handle/handle_api.hиз состава KasperskyOS SDK.
Сведения о функциях API
Функции vmm_api.h
Функция | Сведения о функции |
|---|---|
| Назначение Создает буфер MDL из физической памяти, отображенной на заданный регион виртуальной памяти, который содержит сегмент ELF-образа. Параметры
Возвращаемые значения В случае успеха возвращает Дополнительные сведения Функцию можно использовать, если заданный регион виртуальной памяти выделен с фиксацией. В параметре
|
| Назначение Создает буфер MDL и копирует в него сегмент ELF-образа из заданного буфера. Параметры
Возвращаемые значения В случае успеха возвращает Дополнительные сведения В параметре
|