Get Free Memory Information


This function is provided so that protected mode
applications can determine how much memory is
available. Under DPMI implementations that support
virtual memory, it is important to consider issues such
as the amount of available physical memory.

Note that since DPMI applications will often run in
multi-tasking environments, this function must be
considered only advisory.

To Call

AX = 0500h
ES:(E)DI = Selector:Offset of 30h byte buffer

Returns

If function was successful:
Carry flag is clear.
ES:(E)DI = Selector:Offset of buffer with the following
structure:



Offset Description

00h Largest available free block in
bytes

04h Maximum unlocked page allocation

08h Maximum locked page allocation

0Ch Linear addr space size in pages

10h Total number of unlocked pages

14h Number of free pages

18h Total number of physical pages

1Ch Free linear address space in pages

20h Size of paging file/partition in
pages




24h-2Fh Reserved





If function was not successful:
Carry flag is set.




Programmer's Notes

o 32-bit programs must use ES:EDI to point to the
buffer. 16-bit programs should use ES:DI.
o DPMI implementations that do not support virtual
memory (returned in flags from Get Version call)
will only fill in the first field. This value
specifies that largest allocation that could be
made using function 0501h. Other fields will be
set to -1.
o Only the first field of this structure is
guaranteed to contain a valid value. All fields
that are not returned by the DPMI implementation
will be set to -1 (0FFFFFFFFh) to indicate that
the information is not available.
o The field at offset 00h specifies the largest
block of contiguous linear memory in bytes that
could be allocated if the memory were to be
allocated and left unlocked.
o The field at offset 04h specifies the number of
pages that could be allocated. This is the value
returned by field 00h / page size.
o The field at offset 08h specifies the largest
block of memory in pages that could be allocated
and then locked.
o The field at offset 0Ch specifies the size of the
total linear address space in pages. This
includes all linear address space that has already
been allocated.
o The field at offset 10h specifies the total number
of pages that are currently unlocked and could be
paged out. This value also contains any free
pages.
o The field at offset 14h specifies the number of
physical pages that currently are not in use.
o The field at offset 18h specifies the total number
of physical pages that the DPMI host manages.
This value includes all free, locked, and unlocked
physical pages.
o The field at offset 20h specifies the size of the
DPMI host's paging partition or file in pages.
o To determine the size of pages for the DPMI host
call the Get Page Size service (see function 0B03H).