VirtualQuery

Функция VirtualQuery возвращает информацию о диапазоне страниц виртуального адресного пространства вызывающего процесса. Для того, чтобы получить информацию о диапазоне страниц произвольного процесса, следует воспользоватьс функцией VirtualQueryEx.

function VirtualQuery(
  lpAddress: Pointer;                     //адрес начала региона памяти
  var lpBuffer: TMemoryBasicInformation;  //буфер для получения информации
  dwLength: DWORD                         //размер буфера
): DWORD; stdcall;

Параметры

lpAddress [in]
Указывает на начальный базовый адрес региона, информация о котором запрашивается. Это значение округляется вниз до границы страницы. Для того, чтобы определить значения размера страницы на данном компьютере, необходимо произвести вызов функции GetSystemInfo.

lpBuffer [in]
Ссылка на структуру TMemoryBasicInformation, в которую запиштся информация об указанном диапазоне памяти.

dwLength [in]
Размер в байтах структуры данных, ссылка на которую передается в параметре lpBuffer.

Возвращаемое значение

Количество байт, которые были записаны в буфер.

Описание

Функция VirtualQuery возвращает информацию о блоке, состоящем из смежных страниц, начинающемся по указанному начальному адресу, при этом вы можете получить информацию о следующих атрибутах страницы:

  • Состояние всех страниц в указанномрегионе, которое может быть MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED или MEM_IMAGE.
  • Если память в указанном регионе не свободна, то память под все страницы диапазона была зарезервирована одним вызовом VirtualAlloc.
  • Все страницы в указанном диапазоне должны иметь одни и те же атрибуты защиты PAGE_READONLY, PAGE_READWRITE, PAGE_NOACCESS, PAGE_WRITECOPY, PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD или PAGE_NOCACHE.
  • Данная функция определяет атрибуты первой страницы из указанного диапазона, а затем последовательно сканирует страницы в памяти до тех пор, пока не найдет страницу в памяти с отличными атрибутами. Возвращаемым значением функции является количество байт памяти, дкоторые имеют те же атрибуты, что и первая рассматриваемая страница. Пусть, например, в памяти расположен свободный фрагмент размером 40 Мб, и функция VirtualQuery была вызвана для ареса со смещением в 10 Мб от начала описанного фрагмента. Тогда функция определит состояние страниц как MEM_FREE, и вернет размер 30 Мб.

    Данная функция возвращает информацию об виртуальном адресном пространстве вызывающего процесса. Для того, чтобы получить информацию о виртальном адресном пространстве произвольного процесса, необходимо использовать функцию VirtualQueryEx.

    Требования

    Windows NT/2000: Требуется Windows NT 3.1 или более поздняя версия
    Windows 95/98: Требуется Windows 95 или более поздняя версия
    Бибиотека: Kernel32.dll
    Подключаемый модуль: Windows

    Смотри также:

  • виртуальная память,
  • работа с виртуальной памятью,
  • список функций для работы с виртуальной памятью,
  • GetSystemInfo,
  • TMemoryBasicInformation,
  • VirtualQueryEx
  • НазадVirtualProtectEx VirtualQueryExВперед

    © Mystic, 2002