Для того, чтобы определить размер страницы на текущем компьютере, необходимо использовать функцию GetSystemInfo
Функции VirtualQuery и VirtualQueryEx позволяют получить информацию о регионе, состоящем из некольких последовательно расположенных страниц памяти, начинающихся с указанного адреса в виртуальном адресном пространстве процесса. При этом функция VirtualQuery позволяет получить информацию о памяти в вызывающем процессе, а VirtualQueryEx в указанном процессе и обычно используется для поддежки отладчиков, которые нуждаются в информации об отлаживаемом процессе. Если указанный адрес не попадает на границу страницы, то он округляется вниз до первого граничного значения. Указанный блок расширяется за счет следующих страниц, если они имеют следующие одинаковые атрибуты:
Функция VirtualLock позволяет зафиксировать одну или несколько страниц, которые имют под собой физическую память, в оперативной памяти (RAM), предотвращая сбрасвание этих страниц ситемой в файл подкачки. Эта функция гарантирует, что обращение к указанным критическим страницам пройдет без обращения к диску. Фиксирование страниц в памяти является опасным, так как оно ограничивает возможности системы по управлению памятью. Чрезмерное использование функции VirtualLock может понизить работоcпособность системы из-за частого сбрасывания страниц с выполняющимся кодом в файл подкачки. Функия VirtualUnlock снимает фиксацию с памяти, которая была зафиксирована вызовом VirtualLock.
Функция VirtualProtect позволяет процессу изменить права доступа к любой странице памяти, которая имеет под собой физическую память в адресном простанстве процесса. Например, процесс может выделить страницы с доступом как для чтения, так и для записи, а после того, как он изменит в них данные, установить для них доступ только для чтения, или вообще запретить всякий к ним доступ с целью предотвратить случайную перезапись. Функция VirtualProtect обычно используется при работе с памятью, которая была выделена функцией VirtualAlloc, но она может также работать и с памятью, которая выделила любая другая функция. Однако вызов функции VirtualProtect изменяет атрибуты доступа сразу у целой странице, а указатели, которые возвращают другие функции, не обязательно выравнены по границе страницы. Функция VirtualProtectEx подобна функции VirtualProtect, за исключение того, что она позволяет менять атрибуты доступа к памяти указанного процесса. Такие изменения атрибутов доступа обычно требуются отладчикам при доступе к памяти отлаживаемого процесса.
Освобождение виртуальной памяти |
Примеры использования![]() |
© Mystic, 2002