Служба виртуальной памяти

Служба предназначена для управления виртуальной памятью.

Сведения о методах службы приведены в таблице ниже.

Методы службы vmm.VMM (интерфейс kl.core.VMM)

Метод

Назначение и параметры метода

Потенциальная опасность метода

Allocate

Назначение

Выделяет (резервирует и опционально фиксирует) регион виртуальной памяти.

Параметры

  • [in] addr – желаемый базовый адрес региона виртуальной памяти или 0, чтобы базовый адрес был выбран автоматически.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – флаги, задающие параметры региона виртуальной памяти.
  • [out] va – базовый адрес выделенного региона виртуальной памяти.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Исчерпать оперативную память.

Commit

Назначение

Фиксирует зарезервированный методом Allocate регион виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – фиктивный параметр.
  • [out] rc – код возврата.

Позволяет исчерпать оперативную память.

Decommit

Назначение

Отменяет фиксацию региона виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [out] rc – код возврата.

Нет.

Protect

Назначение

Изменяет права доступа к региону виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – флаги, задающие права доступа к региону виртуальной памяти.
  • [out] rc – код возврата.

Нет.

Free

Назначение

Освобождает регион виртуальной памяти.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [out] rc – код возврата.

Нет.

Query

Назначение

Позволяет получить сведения о странице виртуальной памяти.

Параметры

  • [in] va – адрес, входящий в страницу виртуальной памяти.
  • [out] info – последовательность, содержащая сведения о странице виртуальной памяти.
  • [out] rc – код возврата.

Нет.

MdlCreate

Назначение

Создает буфер MDL.

Параметры

  • [in] size – размер буфера MDL в байтах.
  • [in] prot – флаги, задающие права доступа к буферу MDL.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Исчерпать оперативную память.

MdlCreateFromVm

Назначение

Создает буфер MDL из физической памяти, отображенной на заданный регион виртуальной памяти, и отображает созданный буфер MDL на этот регион.

Параметры

  • [in] va – базовый адрес региона виртуальной памяти.
  • [in] size – размер региона виртуальной памяти в байтах.
  • [in] flags – флаги, задающие права доступа к буферу MDL.
  • [out] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Исчерпать память ядра, создавая в ней множество объектов.
  • Исчерпать оперативную память.

MdlGetSize

Назначение

Позволяет получить размер буфера MDL.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [out] size – размер буфера MDL в байтах.
  • [out] rc – код возврата.

Нет.

MdlMap

Назначение

Резервирует регион виртуальной памяти и отображает на него буфер MDL.

Параметры

  • [in] handle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует буфер MDL.
  • [in] offset – смещение в буфере MDL, с которого нужно начать отображение, в байтах.
  • [in] length – размер части буфера MDL, которую нужно отобразить, в байтах.
  • [in] hint – желаемый базовый адрес региона виртуальной памяти или 0, чтобы базовый адрес был выбран автоматически.
  • [in] prot – флаги, задающие параметры региона виртуальной памяти.
  • [out] address – базовый адрес региона виртуальной памяти.
  • [out] rc – код возврата.

Позволяет выполнить следующие действия:

  • Создать разделяемую память для межпроцессного взаимодействия, скрытого от модуля безопасности, если дескрипторами одного буфера MDL владеют несколько процессов (маски прав дескрипторов должны разрешать отображение буфера MDL).
  • Исчерпать память ядра, создавая в ней множество объектов.

MdlClone

Назначение

Создает буфер MDL на основе существующего.

Буфер MDL создается из тех же регионов физической памяти, что и оригинальный.

Параметры

  • [in] originHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует оригинальный буфер MDL.
  • [in] offset – смещение в оригинальном буфере MDL, с которого нужно начать дублирование, в байтах.
  • [in] length – размер части оригинального буфера MDL, которую нужно дублировать, в байтах.
  • [out] cloneHandle – значение, двоичное представление которого состоит из нескольких полей, включая поле дескриптора и поле маски прав дескриптора. Дескриптор идентифицирует созданный буфер MDL.
  • [out] rc – код возврата.

Позволяет исчерпать память ядра, создавая в ней множество объектов.

В начало