Overview | ||||||||||||||||
Group | ||||||||||||||||
Quick Info
|
VirtualAllocEx
[New - Windows NT] The VirtualAllocEx function reserves, commits, or both, a region of memory within the virtual address space of a specified process. The function initializes the memory it allocates to zero. The difference between the VirtualAllocEx function and the VirtualAlloc function is that VirtualAlloc allocates memory within the address space of the calling process, while VirtualAllocEx lets you specify a process. LPVOID VirtualAllocEx( HANDLE hProcess,
| // process within which to allocate memory
|
LPVOID lpAddress,
| // desired starting address of allocation
|
DWORD dwSize,
| // size, in bytes, of region to allocate
|
DWORD flAllocationType,
| // type of allocation
|
DWORD flProtect
| // type of access protection
|
);
|
|
Flag
| Meaning
|
MEM_COMMIT
| The function allocates actual physical storage in memory or in the paging file
on disk for the specified region of memory pages. The function initializes the
memory to zero.
|
| An attempt to commit a memory page that is already committed does not cause
the function to fail. This means that you can commit a range of pages without
first determining the current commitment state of each page.
If a memory page is not yet reserved, setting this flag causes the function to both reserve and commit the memory page. |
MEM_RESERVE
| The function reserves a range of the process's virtual address space without
allocating any actual physical storage in memory or in the paging file on disk.
Other memory allocation functions, such as malloc and LocalAlloc, cannot use a reserved range of memory until it is released. You can commit reserved memory pages in subsequent calls to the VirtualAllocEx function. |
MEM_TOP_DOWN
| The function allocates memory at the highest possible address.
|
Flag
| Meaning
|
PAGE_READONLY
| Enables read permission to the committed region of pages. An attempt to write
to the committed region results in an access violation. If the system
differentiates between read-only permission and execute permission, an attempt to
execute code in the committed region results in an access violation.
|
PAGE_READWRITE
| Enables both read and write permission to the committed region of pages.
|
PAGE_EXECUTE
| Enables execute permission to the committed region of pages. An attempt to
read or write to the committed region results in an access violation.
|
PAGE_EXECUTE_READ
| Enables execute and read permission to the committed region of pages. An
attempt to write to the committed region results in an access violation.
|
PAGE_EXECUTE_READWRITE
| Enables execute, read, and write permission to the committed region of pages.
|
PAGE_GUARD
| Pages in the region become guard pages. Any attempt to read from or write to a
guard page causes the operating system to raise a STATUS_GUARD_PAGE exception
and turn off the guard page status. Guard pages thus act as a one-shot access
alarm.
The PAGE_GUARD flag is a page protection modifier. An application uses it with one of the other page protection flags, with one exception: It cannot be used with PAGE_NOACCESS. When an access attempt leads the operating system to turn off guard page status, the underlying page protection takes over. If a guard page exception occurs during a system service, the service typically returns a failure status indicator. |
PAGE_NOACCESS
| Disables all access to the committed region of pages. An attempt to read from,
write to, or execute in the committed region results in an access violation
exception, called a general protection (GP) fault.
|
PAGE_NOCACHE
| Allows no caching of the committed regions of pages. The hardware attributes
for the physical memory should be specified as "no cache." This is not
recommended for general usage. It is useful for device drivers; for example, mapping a
video frame buffer with no caching. This flag is a page protection modifier,
only valid when used with one of the page protections other than PAGE_NOACCESS.
|
- Commit a region of pages reserved by a previous call to the VirtualAllocEx function.
- Reserve a region of free pages.
- Reserve and commit a region of free pages.
State
| Meaning
|
Free
| The page is not committed or reserved and is not accessible to the process.
The VirtualAllocEx function can reserve, or simultaneously reserve and commit, a free page.
|
Reserved
| The page is reserved. The range of addresses cannot be used by other
allocation functions, but the page is not accessible and has no physical storage
associated with it. The VirtualAllocEx function can commit a reserved page, but it cannot reserve it a second time.
You can use the VirtualFreeEx function to release a reserved page in a specified process, making it a free
page.
|
Committed
| Physical storage is allocated for the page, and access is controlled by a
protection code. The system initializes and loads each committed page into physical
memory only at the first attempt to read or write to that page. When the
process terminates, the system releases the storage for committed pages. The VirtualAllocEx function can commit an already committed page. This means that you can commit
a range of pages, regardless of whether they have already been committed, and
the function will not fail. You can use the VirtualFreeEx function to decommit a committed page in a specified process, or to
simultaneously decommit and free a committed page.
|
- Software for developers
-
Delphi Components
.Net Components
Software for Android Developers - More information resources
-
MegaDetailed.Net
Unix Manual Pages
Delphi Examples - Databases for Amazon shops developers
-
Amazon Categories Database
Browse Nodes Database