|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
Virtual Memory Functions
The Win32 API provides a set of virtual memory functions that enable a process to manipulate or determine the status of pages in its virtual address space. Many applications are able to satisfy their memory needs by using the standard allocation functions (GlobalAlloc, LocalAlloc, malloc, and so on). However, virtual memory functions provide some capabilities not available to the standard allocation functions. They can perform the following operations:
· Reserve a range of a process's virtual address space. Reserving address space does not allocate any physical storage, but it prevents other allocation operations from using the specified range. It does not affect the virtual address spaces of other processes. Reserving pages prevents needless consumption of physical storage, while enabling a process to reserve a range of its address space into which a dynamic data structure can grow. The process can allocate physical storage for this space, as needed.
· Commit a range of reserved pages in a process's virtual address space so that physical storage (either in RAM or on disk) is accessible only to the allocating process. · Specify read-write, read-only, or no access for a range of committed pages. This differs from the standard allocation functions that always allocate pages with read-write access. · Free a range of reserved pages, making the range of virtual addresses available for subsequent allocation operations by the calling process.
· Decommit a range of committed pages, releasing their physical storage and making it available for subsequent allocation by any process. · Lock one or more pages of committed memory into physical memory (RAM) so that the system cannot swap the pages out to the paging file. · Obtain information about a range of pages in the virtual address space of the calling process or a specified process. · Change the access protection for a specified range of committed pages in the virtual address space of the calling process or a specified process.
The virtual memory functions manipulate pages of memory. The functions use the size of a page on the current computer to round off specified sizes and addresses. To determine the size of a page on the current computer, use the GetSystemInfo function. The VirtualAlloc function performs one of the following operations:
· Reserves one or more free pages. · Commits one or more reserved pages. · Reserves and commits one or more free pages.
You can specify the starting address of the pages to be reserved or committed, or you can allow the system to determine the address. The function rounds the specified address to the appropriate page boundary. Reserved pages are not accessible, but committed pages can be allocated with the PAGE_READWRITE, PAGE_READONLY, or PAGE_NOACCESS flag. When pages are committed, storage is allocated in the paging file, but each page is initialized and loaded into physical memory only at the first attempt to read from or write to that page. You can use normal pointer references to access memory committed by the VirtualAlloc function.
The VirtualFree function performs one of the following operations:
· Decommits one or more committed pages, changing the state of the pages to reserved. Decommitting pages releases the physical storage associated with the pages, making it available to be allocated by any process. Any block of committed pages can be decommitted. · Releases a block of one or more reserved pages, changing the state of the pages to free. Releasing a block of pages makes the range of reserved addresses available to be allocated by the process. Reserved pages can be released only by freeing the entire block that was initially reserved by VirtualAlloc.
· Decommits and releases a block of one or more committed pages simultaneously, changing the state of the pages to free. The specified block must include the entire block initially reserved by VirtualAlloc, and all of the pages must be currently committed.
The VirtualLock function enables a process to lock one or more pages of committed memory into physical memory (RAM), preventing the system from swapping the pages out to the paging file. It can be used to ensure that critical data is accessible without disk access. Locking pages into memory is dangerous because it restricts the system's ability to manage memory. Excessive use of VirtualLock can degrade system performance by causing executable code to be swapped out to the paging file. The VirtualUnlock function unlocks memory locked by VirtualLock.
The VirtualQuery and VirtualQueryEx functions return information about a region of consecutive pages beginning at a specified address in the address space of a process. VirtualQuery returns information about memory in the calling process. VirtualQueryEx returns information about memory in a specified process and is used to support debuggers that need information about a process being debugged. The region of pages is bounded by the specified address rounded down to the nearest page boundary. It extends through all subsequent pages with the following attributes in common:
· The state of all pages is the same: either committed, reserved, or free. · If the initial page is not free, all pages in the region are part of the same initial allocation of pages that were reserved by a call to VirtualAlloc. · The access protection of all pages is the same (that is, the PAGE_READONLY, PAGE_READWRITE, or PAGE_NOACCESS flag).
The VirtualProtect function enables a process to modify the access protection of any committed page in the address space of a process. For example, a process can allocate read-write pages to store sensitive data, and then it can change the access to read only or no access to protect against accidental overwriting. VirtualProtect is typically used with pages allocated by VirtualAlloc, but it also works with pages committed by any of the other allocation functions. However, VirtualProtect changes the protection of entire pages, and pointers returned by the other functions are not necessarily aligned on page boundaries. The VirtualProtectEx function is similar to VirtualProtect, except it changes the protection of memory in a specified process. Changing the protection is useful to debuggers in accessing the memory of a process being debugged.
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
Виртуальные Функции Памяти
Win32 API Обеспечивает набор виртуальных функций памяти, которая позволяет процесс, чтобы манипулировать или определять статус страниц в своем виртуальном пространстве адреса. Много приложений способные удовлетворить их потребности памяти используя стандартные функции распределения (GlobalAlloc, LocalAlloc, malloc, и так далее). Тем не менее, виртуальные функции памяти обеспечивают некоторые возможности не пригодный для стандартных функций распределения. Они могут выполнить следующие действия:
Резерв дипазон пространства виртуального адреса процесса. Пространство адреса Резерва не распределяет любое физическое хранение, но это предохраняет другие действия распределения от использования определенного дипазона. Это не влияет на виртуальное пространство адреса других процессов. Резерв страниц предохраняет ненужное потребление физической памяти, при включении процесса, чтобы резервировать дипазон своего пространства адреса в который динамическая структура данных может возрасти. Процесс может распределить физическую память для этого пространства, как и требуется.
Совершать дипазон резервных страниц в пространстве виртуального адреса процесса чтобы физическая память (или в РАМ или на диске), доступно только в распределении процесса. Определять прочитанную-запись, только для чтения, или никакой доступ для дипазона совершенных страниц. Это отличается от стандартных функций распределения, которые всегда распределяют страницы с читать-записывать доступом. Свободный дипазон резервных страниц, делающих дипазоном виртуальных адресов доступными для последующих операций распределения вызовом процесса.
Decommit Дипазон совершенных страниц, выпускающих их физическую память и получение это доступный для последующего распределения любым процессом. Блокировка одна или более страниц совершенной памяти в физическую память (РАМ) чтобы система не может подкачать страницы в файл подкачки. Получать информацию о дипазоне страниц в виртуальном пространстве адреса вызова процесса или определенный процесс. Изменение защита доступа для определенного дипазона совершенных страниц в виртуальном пространстве адреса вызова процесса или определенный процесс.
Виртуальные функции памяти манипулируют страницами памяти. Функции используют размер страницы в текущем компьютере, чтобы округлять определенные размеры и адресы. Для того, чтобы определять размер страницы в текущем компьютере, используйте функцию GetSystemInfo. Функция VirtualAlloc выполняет одну из следующих операций:
Резервы одно или более освобождают страницы. Совершает одна или более резервных страниц. Резервирует и совершает одна или более свободных страниц.
Вы можете определить стартовый адрес страниц, которые нужно резервировать или совершались, или Вы можете позволить систему, чтобы определять адрес. Функция округляет определенный адрес на подходящую страничную границу. Резервные страницы не доступны, но совершившие страницы может быть распределено PAGE_READWRITE, PAGE_READONLY, или флагом PAGE_NOACCESS. Когда страницы совершены, память распределена в файле подкачки, но каждая страница инициализирована и загружена в физическую память только в первой попытке, чтобы читаться из или записываться на эту страницу. Вы можете использовать нормальные ссылки указателя, чтобы иметь доступ к памяти совершенной функцией VirtualAlloc.
Функция VirtualFree выполняет одну из следующих операций:
Decommits Одна или более совершенных страниц, изменяющих состояние страниц на зарезервированное. Версии страниц Decommitting физическая память связывалась страницами, делающими это доступным быть распределенн любым процессом. Любой блок совершенных страниц может decommitted. Версии блок одной или более резервных страниц, изменяющий состояние страниц, чтобы освобождаться. Освобождение блока страниц делает дипазоном резервных адресов доступных быть распределенн процессом. Резервные страницы могут выпускаться только освобождая целого блока, который первоначально был зарезервирован VirtualAlloc.
Decommits И выпускает блока одной или более совершенных страниц одновременно, изменяющего состояние страниц, чтобы освобождаться. Определенный блок должен включить целого блока первоначально зарезервированного VirtualAlloc, и все страницы должны к настоящему времени быть совершены.
Функция VirtualLock позволяет процесс, чтобы запирать одна или более страниц совершенной памяти в физическую память (РАМ), предохраняя систему чтобы свопинг страницы в файл подкачки. Может быть использовано, чтобы проверять, что критические данные доступно без дискового доступа. Блокировка страниц в память опасная поскольку это ограничивает системную способность управлять памятью. Чрезмерное использование VirtualLock может деградировать системное исполнение вызывая выполняемый код, чтобы быть откачанн в файл подкачки. Функция VirtualUnlock деблокирует память запертую VirtualLock.
VirtualQuery И обратная информация функций VirtualQueryEx об области последовательных страниц, начинаемых по определенному адресу в пространстве адреса процесса. VirtualQuery ВОЗВРАЩАЕТ информацию о памяти на вызове процесса. VirtualQueryEx ВОЗВРАЩАЕТ информацию о памяти в определенном процессе и использован, чтобы поддерживать программы отладки, что нужно информация о процессе, отлаживанном. Область страниц связана определенным адресом округленным в меньшую сторону на ближайшую страничную границу. Это расширяется через все последующие страницы с следующим атрибутов в общем:
Состояние всех страниц - то же: также совершенное, зарезервированное, или свободное. Если начальная страница не свободна, все страницы в области - часть того же самого начального распределения страниц, которые были зарезервированы вызовом на VirtualAlloc. Защита доступа всех страниц - та же (то есть, PAGE_READONLY, PAGE_READWRITE, или флаг PAGE_NOACCESS).
Функция VirtualProtect позволяет процесс, чтобы модифицировать защиту доступа любой совершенной страницы в пространство адреса процесса. Например, процесс может распределить прочитанная запись страниц, чтобы загружать чувствительные данные, и затем это может изменить доступ, чтобы не читать только или никакой доступ, чтобы защищаться против случайной перезаписи. VirtualProtect ОБЫЧНО использован страницами распределенными VirtualAlloc, но это также работает со страницами совершенными любой из других функций распределения. Тем не менее, VirtualProtect изменяет защиту целых страниц, и указатели возвращанные другими функциями обязательно не выровнены на страничных границах. Функция VirtualProtectEx подобная VirtualProtect, за исключением того она изменяет защиту памяти в определенном процессе. Изменение защиты полезное в программах отладки в доступе памяти процесса, отлаживанного.
|
|
|
|
| |