Чтобы извлечь сведения о диапазоне страниц в адресное пространство другого процесса, используйте функцию VirtualQueryEx.
Синтаксис Delphi
function VirtualQuery(lpAddress: Pointer;
var lpBuffer: TMemoryBasicInformation; dwLength: DWORD): DWORD; stdcall;
- lpAddress [in, необязательно]
- Указатель на базовый адрес региона страниц для запрашиваться. Это значение округляется до следующей границу страницы. Чтобы определить размер страницы на главном компьютере, используйте функцию GetSystemInfo.
Если lpAddress указывает адрес выше наивысший адрес памяти, доступной для процесса, функция завершается с ERROR_INVALID_PARAMETER.
- lpBuffer [out]
- Указатель на структуру MEMORY_BASIC_INFORMATION, в которых информация указанная страница возвращается диапазон.
- dwLength [in]
- Размер буфера указывает параметр lpBuffer, в байтах.
Возвращаемое значение является фактическим количество байтов, возвращенных в буфере сведений.
Если вызов функции был неуспешен, возвращаемое значение равно нулю. Чтобы получить расширенные сведения об ошибке, вызовите функцию GetLastError. Значения возможной ошибки включают ERROR_INVALID_PARAMETER.Замечания
VirtualQuery предоставляет информацию о регионе последовательных страниц, начиная с указанного адреса, которые разделяют следующие атрибуты:
- Состояние всех страниц равно же (MEM_COMMIT, MEM_RESERVE, MEM_FREE, MEM_PRIVATE, MEM_MAPPED или MEM_IMAGE).
- Если начальная страница не свободна, все страницы в регионе являются частью же первоначальное распределение страниц созданных один вызов VirtualAlloc, MapViewOfFile или один из следующих расширенных версий этих функций: VirtualAllocEx, VirtualAllocExNuma, MapViewOfFileEx, MapViewOfFileExNuma.
- Права доступа, предоставляемые всех страниц это же (PAGE_READONLY, PAGE_READWRITE, PAGE_NOACCESS, PAGE_WRITECOPY, PAGE_EXECUTE, PAGE_EXECUTE_READ, PAGE_EXECUTE_READWRITE, PAGE_EXECUTE_WRITECOPY, PAGE_GUARD или PAGE_NOCACHE).
Если изменить общую страницу copy-on-write, становится частным процессу изменения страницы. Однако функции VirtualQuery продолжит представлять такие страницы как MEM_MAPPED (для представления данных) или MEM_IMAGE (для исполняемого образа просмотров), а не MEM_PRIVATE. Чтобы определить, произошла ли copy-on-write для конкретной страницы, либо доступ к странице или блокировки его с помощью функции VirtualLock убедитесь, что страница находится в памяти, а затем используйте функцию QueryWorkingSetEx, чтобы проверить Общие бит в расширенная информация о рабочем множестве для страницы. Если бит Shared ясно, страница является частным.
Эта функция доклады на регионе страниц в памяти вызывающего процесса, и функцию VirtualQueryEx доклады о регионе страниц в памяти указанным процессом.
Требования
Требования
Минимальная поддерживаемая клиента | Windows 2000 Professional |
---|---|
Минимальный поддерживаемый сервер | Windows 2000 Server |
Заголовок | Windows.pas |
Библиотека | Kernel32.lib |
DLL | Kernel32.dll |
Комментариев нет:
Отправить комментарий