На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

VirtualFreeEx



[New - Windows NT]

The VirtualFreeEx function releases, decommits, or both, a region of memory within the virtual address space of a specified process.
The difference between the VirtualFreeEx function and the VirtualFree function is that VirtualFree frees memory within the address space of the calling process, while VirtualFreeEx lets you specify a process.

BOOL VirtualFreeEx(

HANDLE hProcess, // process within which to free memory
LPVOID lpAddress, // starting address of memory region to free
DWORD dwSize, // size, in bytes, of memory region to free
DWORD dwFreeType // type of free operation
);


Parameters

hProcess

Handle to a process. The function frees memory within the virtual address space of this process.
You must have PROCESS_VM_OPERATION access to this process. If you do not, the function fails.

lpAddress

Pointer to the starting address of the region of memory to free.
If the MEM_RELEASE flag is set in the dwFreeType parameter, lpAddress must be the base address returned by the VirtualAllocEx function when the region was reserved.

dwSize

Specifies the size, in bytes, of the region of memory to free.
If the MEM_RELEASE flag is set in the dwFreeType parameter, dwSize must be zero. The function frees the entire region that was reserved in the initial allocation call to VirtualAllocEx.
If the MEM_DECOMMIT flag is set, the function decommits all memory pages that contain one or more bytes in the range from the lpAddress parameter to (
lpAddress+dwSize). This means, for example, that a 2-byte region of memory that straddles a page boundary causes both pages to be decommitted.

The function decommits the entire region that was reserved by VirtualAllocEx. If the following three conditions are met:

· the MEM_DECOMMIT flag is set
· lpAddress is the base address returned by the VirtualAllocEx function when the region was reserved
· dwSize is zero



The entire region the enters the reserved state.

dwFreeType

Set of bit flags that specifies the type of free operation. You must set one of the following two flags:

Flag Meaning
MEM_DECOMMIT The function decommits the specified region of pages. The pages enter the reserved state.
The function does not fail if you attempt to decommit an uncommitted page. This means that you can decommit a range of pages without first determining their current commitment state.
MEM_RELEASE The function releases the specified region of pages. The pages enter the free state.If you specify this flag, dwSize must be zero, and lpAddress must point to the base address returned by the VirtualAllocEx function when the region was reserved. The function fails if either of these conditions is not met.
If any pages in the region are currently committed, the function first decommits and then releases them. The function does not fail if you attempt to release pages that are in different states, some reserved and some committed. This means that you can release a range of pages without first determining their current commitment state.


Return Values

If the function succeeds, the return value is a nonzero value.
If the function fails, the return value is zero. To get extended error information, call GetLastError.

Remarks

Each page of memory in a process's virtual address space is in one of three states:

State Meaning
Free The page is neither committed nor reserved. The page is not accessible to the process. Attempting to read from or write to a free page results in an access violation exception.You can use the VirtualFreeEx function to put reserved or committed memory pages into the free state.
Reserved The page is reserved. The range of addresses cannot be used by other allocation functions. The page is not accessible and has no physical storage associated with it. Attempting to read from or write to a free page results in an access violation exception.You can use the VirtualFreeEx function to put committed memory pages into the reserved state, and to put reserved memory pages into the free state.
Committed The page is committed. Physical storage in memory or in the paging file on disk is allocated for the page, and access is controlled by a protection code. The operating system initializes and loads each committed page into physical memory only at the first attempt to read from or write to that page. When a process terminates, the operating system releases all storage for committed pages. You can use the VirtualAllocEx function to put committed memory pages into either the reserved or free state.


The VirtualFreeEx function can perform the following operations:

· Decommit a region of committed or uncommitted pages. After this operation, the pages are in the reserved state.
· Release a region of reserved pages. After this operation, the pages are in the free state.
· Decommit and release a region of committed or uncommitted pages. After this operation, the pages are in the free state.



The VirtualFreeEx function can decommit a range of pages that are in different states, some committed and some uncommitted. This means that you can decommit a range of pages without first determining the current commitment state of each page. Decommitting a page releases its physical storage, either in memory or in the paging file on disk.
If a page is decommitted but not released, its state changes to reserved. You can subsequently call VirtualAllocEx to commit it, or VirtualFreeEx to release it. Attempting to read from or write to a reserved page results in an access violation exception.

The VirtualFreeEx function can release a range of pages that are in different states, some reserved and some committed. This means that you can release a range of pages without first determining the current commitment state of each page. The entire range of pages originally reserved by the VirtualAllocEx function must be released at the same time.
If a page is released, its state changes to free, and it is available for subsequent allocation operations. Attempting to read from or write to a free page results in an access violation exception.

See Also

GlobalAlloc, GlobalFree, VirtualAlloc, VirtualAllocEx, VirtualFree


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

VirtualFreeEx



[Новый - Windows NT]

Функция VirtualFreeEx выпускает, decommits, или оба, регион памяти в пределах виртуального пространства адреса определенного процесса.
Различие между функцией VirtualFreeEx и функция VirtualFree -, что свободная память VirtualFree в пределах пространства адреса вызова процесса, тогда как VirtualFreeEx позволяет, Вы определяете процесс.

BOOL VirtualFreeEx(

РУЧКА hProcess, // обрабатывается в пределах которого, чтобы освобождать память LPVOID lpAddress, // стартовый адрес региона памяти, чтобы освобождать DWORD dwSize, // размер, в байтах, региона памяти, чтобы освобождать тип DWORD dwFreeType // свободного действия
);


Параметры

hProcess

Прооперируйте процесс. Функция освобождает память в пределах виртуального пространства адреса этого процесса.
Вы должны иметь доступ PROCESS_VM_OPERATION к этому процессу. Если Вы делаете нет, функция терпит неудачу.

lpAddress

Указатель в стартовый адрес региона памяти, чтобы освобождаться.
Если флаг MEM_RELEASE установлен в параметре dwFreeType, lpAddress должен быть базовым адресом возвращанным функцией VirtualAllocEx когда регион был зарезервирован.

dwSize

Определяет размер, в байтах, региона памяти, чтобы освобождаться.
Если флаг MEM_RELEASE установлен в параметре dwFreeType, dwSize должен - нулевым. Функция освобождает целый регион, который был зарезервирован на начальном вызове распределения на VirtualAllocEx.
Если флаг MEM_DECOMMIT установлен, функция decommits все страницы памяти, которая содержит один или более байтов в дипазоне из параметра lpAddress, чтобы ( lpAddress+dwSize). Это означает, например, что 2- байтовый регион памяти на которой располагается страничные причины границы обе страницы, которые нужно decommitted.

Функция decommits целый регион, который был зарезервирован VirtualAllocEx. Если следующие три условия выполнены:

флаг MEM_DECOMMIT установлен
lpAddress - базовый адрес возвращанный функцией VirtualAllocEx когда регион был зарезервирован dwSize нулевой



Целый регион вводы резервное состояние.

dwFreeType

Установитесь битовых флагов, которые определяют тип свободного действия. Вы должны установить один из следующих двух флагов:

Значение Флага
MEM_DECOMMIT функция decommits определенный регион страниц. Страницы вводят резервное состояние.
Функция не терпит неудачу если Вы пытаетесь decommit неприсоединившаяся страница. Это означает, что Вы можете decommit дипазон страниц без первого определения их текущего состояния обязательства.
MEM_RELEASE функция выпускает определенный регион страниц. Страницы вводят свободное состояние.Если Вы определяете этот флаг, dwSize должен быть нулем, и lpAddress должен указать на базовый адрес возвращанный функцией VirtualAllocEx когда регион был зарезервирован. Функция терпит неудачу если любое из этих условий не выполнены.
Если любые страницы в регионе к настоящему времени совершены, функция сначала decommits затем выпускает их. Функция не терпит неудачу если Вы пытаетесь выпускать страницы, которые - в других состояниях, некоторые зарезервированные и некоторые совершенные. Это означает, что Вы можете выпустить дипазон страниц без первого, определяющий их текущее состояние обязательства.


Обратные Величины

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

Замечания

Каждая страница памяти в пространстве виртуального адреса процесса - в одном из трех состояний:

Государственное Значение
Освободите страницу - ни совершено ни резервное. Страница не доступна в процесс. Пытаясь, чтобы читаться из или записываться в свободные страничные результаты в исключении нарушения доступа.Вы можете использовать функцию VirtualFreeEx, чтобы помещать резервные или совершенные страницы памяти в свободное состояние.
Резервный страница зарезервирована. Дипазон адресов не может быть использован другими функциями распределения. Страница не доступна и не связала физическую память с ним. Пытаясь, чтобы читаться из или записываться в свободные страничные результаты в исключении нарушения доступа.Вы можете использовать функцию VirtualFreeEx, чтобы помещать совершенные страницы памяти в резервное состояние, и, чтобы помещать резервные страницы памяти в свободное состояние.
Совершенный страница совершена. Физическая память в памяти или в файле подкачки на диске распределена для страницы, и доступ управлялся кодом защиты. Операционная система инициализирует и загружает каждую совершенную страницу в физическую память только в первой попытке, чтобы читаться из или записываться на эту страницу. Когда процесс завершается, операционная система выпускает всю память для совершенных страниц. Вы можете использовать функцию VirtualAllocEx, чтобы помещать совершенные страницы памяти в или резервное или свободное состояние.


Функция VirtualFreeEx может выполнить следующие операции:

Decommit Область совершенных или неприсоединившихся страниц. После этой операции, страницы - в резервном состоянии.
Версия область резервных страниц. После этой операции, страницы - в свободном состоянии.
Decommit И выпускать область совершенных или неприсоединившихся страниц. После этой операции, страницы - в свободном состоянии.



Функция VirtualFreeEx может decommit дипазон страниц, которые - в других состояниях, некоторые совершенные и немного неприсоединившиеся. Это означает, что Вы можете decommit дипазон страниц без первого определения текущего состояния обязательства каждой страницы. Decommitting Страница выпускает свою физическую память, или в памяти или в файле подкачки на диске.
Если страница decommitted но не выпущенное, состояние изменяется на зарезервированное. Вы можете впоследствии назвать VirtualAllocEx, чтобы совершать это, или VirtualFreeEx, чтобы выпускать это. Пытаясь, чтобы читаться из или записываться в резервные страничные результаты в исключении нарушения доступа.

Функция VirtualFreeEx может выпустить дипазон страниц, которые - в других состояниях, некоторая зарезервированную и некоторые совершенные. Это означает, что Вы можете выпустить дипазон страниц без первого, определяющий текущее состояние обязательства каждой страницы. Целый дипазон страниц первоначально зарезервированных функцией VirtualAllocEx должен выпускаться в то же самое время.
Если страница выпущена, состояние изменяется, чтобы освобождаться, и доступно для последующих операций распределения. Пытаясь, чтобы читаться из или записываться в свободные страничные результаты в исключении нарушения доступа.

Смотри Также

GlobalAlloc, GlobalFree, VirtualAlloc, VirtualAllocEx, VirtualFree


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz