Уроки Iczelion'а


buy generic cialis online

Hемного теории - часть 2


  • ebx - хэндл текущей виртуальной машины
  • ebр - указатель на CRS текущей виртуальной машины
  • ecx - количество байтов, которое нужно зарегистрировать в буфере трансляции.
  • carry flag - очищается, если вы не хотите копировать данные из ring0-буфер в зарезервированный блок. Установите флаг, если вы хотите копировать данные из ring0-буфера в зарезервированный блок.
  • fs:esi - селектор:смещение блока ring0-памяти, содержащий данные, которые должны быть скопированны в зарезервированный буфер. Игнорируется, если carry flag очищен.
  • Если вызов прошел успешно, флаг переноса будет очищен и ecx будер содержать количество байтов, которые были зарезервированы в буфере трансляции. Это значение может быть меньше, чем переданное вам значение, поэтому вам следует сохранить содержимое ecx, чтобы затем использовать для передачи V86MMGR_Free_Buffer. edi содержит V86-адрес зарезервированного блока, причем сегмент находится в верхнем слове, а смещение в нижнем. Флаг переноса устанавливается, если происходит ошибка.

    V86MMGR_Free_Buffer принимает точно такие же параметры, как и V86MMGR_Allocate_Buffer.

    Что в действительно происходит, когда вы вызываете V86MMGR_Allocate_Buffer? Вы резервирует блок памяти в V86-регионе текущей виртуальной машины и получаете V86-адрес этого блока в edi. Мы можем использовать эти сервисы для передачи и получения данных от V86-прерываний.

    Кроме API трансляции менеджер V86-памяти также предлагает другим VxD сервисы API мэппирования. API мэппирования - это процесс мэппирования некоторых страниц в расширенной памяти в V86-регион каждой виртуальной машины. Вы можете использовать V86MMGR_Map_Pages, чтобы делать это. С помощью этого сервиса, страницы мэппируются в то же линейное пространство каждой виртуальной машины. Это тратит адресное пространство впустую, если вы хотите работать только с одной VM. Также API мэппирования медленнее, чем API трансляции, поэтому вам лучше использовать последнюю так часто, как это возможно. API-мэппирование требуется для некоторой V86-операции, которые требуются для доступа к тому же линейному пространству и должны присутствовать во всех виртуальных машинах.




    Содержание  Назад  Вперед