Создание VxD на Visual C++ без ассемблерных модулей

       

_SelectorMapFlat - отображение сегментного адреса в линейный


_SelectorMapFlat ( DWORD VMHandle,   DWORD Sel,   DWORD Reserved );

  • VMHandle — идентификатор виртуальной машины, которой принадлежит селектор. Если селектор относится к GDT, идентификатор игнорируется.
  • Sel — селектор для отображения.
  • Flags — резервный параметр, должен быть нулевым.
  • Функция получает параметры в стеке, в стиле языков C, и возвращает в EAX линейный адрес, соответствующий началу сегмента, селектор которого задан параметром Sel, либо — 1 в случае ошибки. При помощи этой функции возможен доступ из VxD к данным приложений Win16.

    Полученный адрес действителен до момента возврата в VMM, после чего отображение может быть аннулировано. Чтобы сохранять отображение длительное время, необходимо использовать специальные средства работы со страницами — резервирование страниц, копирование элементов таблицы страниц и т.п.



    Содержание раздела