Говорят, что драйвер имеет доступ ко всему, что есть в компе. Только вот так получается, что по простому, по обычному он не может обратиться к памяти приложения. Насколько я понимаю, это происходит из-за того, что если в момент обращения страница, к которой обращаются окажется отсутствующей, то возникнет исключение, которое недопустимо(почему-то) для драйвера. Судя по всему, чтобы решить проблему(научиться свободно обращаться с любой памятью из драйвера), нужно как-то научиться запрещать/разрешать сбрасывание данной страницы на диск(или куда она там сбрасывается?). Желательно с помощью средств DDK, без лазанья самому в таблицу/каталог страниц. Подскажите пожалуйста необходимые для этого функции(и по возможности некоторые рекомендации по их применению )
Вопрос конечно интересный...Но как я понимаю здесь существует два аспекта: 1.на уровне PASSIVE_LEVEL драйвер может обращатся к "любой" памяти, как подкачиваемой с диска, так и неподкачиваемой. И диспетчер памяти обязан подкачать несуществующую (сброшенную на диск)страницу обратно в память... 2.Самое плохое в этой ситуации что ты не знаешь контекст (регистр каталога страниц)необходимого тебе приложения User Mode. Без него ты не знаешь как спроецированна виртуальная память твоего приложения(нижние 2 ГГб)на физическую(электрические сигналы адреса и данных на системной шине компьютера). Т.е. у приложения "А" адрес виртуальной памяти адресного пространства приложения "А" 0хХХХХХХХХ может располагаться по физическому адресу 0хАААА, а у приложения "В" адрес виртуальной памяти адресного пространства приложения "В" тот же адрес 0хХХХХХХХХ может располагаться по физическому адресу 0хВВВВ. Таким образом проблема не в том как "научиться запрещать/разрешать сбрасывание данной страницы на диск" а в том что надо реализовать механизм сопоставления значений регистра каталога страниц выполняющимся приложениям, а затем с помощью таблиц страниц совершить все необходимые преобразования для вычисления "реального" адреса необходимых данных, и самое главное надо узнать а выделена ли вообще память этому адресу(странице)потому-что при обращении из режима ядра по несуществующему адресу может привести к небольшому сюрпризу...Так что реализовав всё это можно обращаться по каким угодно адресам...Если я не прав, гуру поправьте меня...