MEMORY_BASIC_INFORMATION
The MEMORY_BASIC_INFORMATION
structure contains information about a range of pages in the virtual address
space of a process. The VirtualQuery
typedef struct _MEMORY_BASIC_INFORMATION { // mbi
PVOID
BaseAddress; // base address
of region
PVOID
AllocationBase; // allocation
base address
DWORD
AllocationProtect; // initial access
protection
DWORD
RegionSize; // size, in
bytes, of region
DWORD
State; // committed,
reserved, free
DWORD
Protect; // current access
protection
DWORD
Type; // type of pages
} MEMORY_BASIC_INFORMATION;
typedef MEMORY_BASIC_INFORMATION
*PMEMORY_BASIC_INFORMATION;
Members
BaseAddress
Points to the
base address of the region of pages.
AllocationBase
Points to the
base address of a range of pages allocated by the VirtualAlloc
AllocationProtect
Specifies the
access protection given when the region was initially allocated. One of the
following flags can be present, along with the PAGE_GUARD and PAGE_NOCACHE
protection modifier flags:
Flag |
Meaning |
PAGE_READONLY |
Enables
read access 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 access and execute access, an attempt to execute code in
the committed region results in an access violation. |
PAGE_READWRITE |
Enables
both read and write access to the committed region of pages. |
PAGE_WRITECOPY |
Gives
copy-on-write access to the committed region of pages. |
PAGE_EXECUTE |
Enables
execute access 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 access 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 access to the committed region of pages. |
PAGE_EXECUTE_WRITECOPY |
Enables
execute, read, and write access to the committed region of pages. The pages
are shared read-on-write and copy-on-write. |
PAGE_GUARD |
Protects
the page with the underlying page protection. However, access to the region
causes a guard page entered condition to be raised in the subject process. This flag is a page
protection modifier, only valid when used with one of the page protections
other than PAGE_NOACCESS. |
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 set to 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. |
RegionSize
Specifies the
size, in bytes, of the region beginning at the base address in which all pages
have identical attributes.
State
Specifies the
state of the pages in the region. One of the following states is indicated:
State |
Meaning |
MEM_COMMIT |
Indicates
committed pages for which physical storage has been allocated, either in
memory or in the paging file on disk. |
MEM_FREE |
Indicates
free pages not accessible to the calling process and available to be
allocated. For free pages, the information in the AllocationBase, AllocationProtect,
Protect, and Type members is undefined. |
MEM_RESERVE |
Indicates
reserved pages where a range of the process s virtual address space is reserved without allocating any physical
storage. For reserved pages, the information in the Protect member is
undefined. |
Protect
Specifies the
access protection of the pages in the region. One of the flags listed for the AllocationProtect
member is specified.
Type
Specifies the
type of pages in the region. The following types are defined:
Type |
Meaning |
MEM_IMAGE |
Indicates
that the memory pages within the region are mapped into the view of an image
section. |
MEM_MAPPED |
Indicates
that the memory pages within the region are mapped into the view of a
section. |
MEM_PRIVATE |
Indicates
that the memory pages within the region are private (not shared by other
processes). |
See Also