24.1 Memory Management Services

There are the following memory management services:

Device V86 Page Management

Service Description

_Assign_Device_V86_Pages Assigns V86 pages to a virtual device.
_DeAssign_Device_V86_Pages Frees V86 pages.
_Get_Device_V86_Pages_Array Retrieves assignment arrays.
Hook_V86_Page Installs a page-fault callback procedure.

Free Physical Memory Management

Service Description

_AddFreePhysPage Adds free physical pages.
_MapFreePhysReg Maps pages into a free physical region.
_PageResetHandlePAddr Adds physical pages to a memory block.
_SetFreePhysRegCalBk Installs a free-physical-region callback.
_UnmapFreePhysReg Unmaps pages in a free physical region.
_XchgFreePhysReg Exchanges a physical address.

GDT/LDT Management

Service Description

_Allocate_GDT_Selector Allocates a GDT selector.
_Allocate_LDT_Selector Allocates a selector.
_BuildDescriptorDWORDs Builds a selector descriptor.
_Free_GDT_Selector Frees a GDT selector.
_Free_LDT_Selector Frees an LDT selector.
_GetDescriptor Retrieves a copy of a descriptor.
_SetDescriptor Sets the descriptor for a selector.

Heap Allocation

Service Description

_HeapAllocate Allocates memory from the heap.
_HeapFree Frees a memory block from the heap.
_HeapGetSize Returns the size of a heap memory block.
_HeapReAllocate Reallocates a heap memory block.

Memory Management for Protected-Mode

Service Description

_GetV86PageableArray Returns pageable array.
_LinMapIntoV86 Maps pages into V86 addresses.
_LinPageLock Locks pages.
_LinPageUnLock Unlocks pages.
_PageCheckLinRange Checks range of linear addresses.
_PageDiscardPages Discards pages.
_SelectorMapFlat Returns the base address of the selector.
_SetResetV86Pageable Modifies locking and unlocking.

Miscellaneous Memory Management

Service Description

_AddInstanceItem Add an instance item.
_Allocate_Device_CB_Area Allocates a control block area.
_MapPhysToLinear Returns the linear address of physical memory.

Page Allocation and Management

Service Description

_CopyPageTable Copies page-table entries.
_GetAppFlatDSAlias Returns read-only selector for flat DS.
_GetDemandPageInfo Retrieves information for demand paging.
_GetFirstV86Page Returns number of first page for V86 memory.
_GetFreePageCount Returns the number of free pages.
_GetGlblRng0V86IntBase Returns address for ring-0 V86 handlers.
_GetLastV86Page Returns number of last page of V86 memory.
_GetNulPageHandle Returns handle of system nul page.
_GetSysPageCount Returns count of system pages.
_GetVMPgCount Returns count of pages in a virtual machine.
_ModifyPageBits Modifies page attribute bits.
_PageAllocate Allocates a memory block.
_PageFree Frees a memory block.
_PageGetAllocInfo Returns allocation information.
_PageGetSizeAddr Returns size and address of memory block.
_PageLock Locks pages.
_PageReAllocate Reallocates a block of memory.
_PageUnLock Unlocks pages.

System-Internal Memory Management

Service Description

_GetSetPageOutCount Sets or returns the page-out count.
_MMGR_Toggle_HMA Enables or disables the HMA.
_PageOutDirtyPages Flushes dirty pages.
_SetLastV86Page Sets last page in V86 address space.
Set_Physical_HMA_Alias Sets the physical HMA alias.

V86 Address Space Mapping and Allocation

Service Description

_Add_Global_V86_Data_Area Adds a region to global V86 data.
_Allocate_Global_V86_Data_Area Allocates a global V86 data area.
_Allocate_Temp_V86_Data_Area Allocates a V86 memory block.
_Free_Temp_V86_Data_Area Frees a V86 memory block.
_MapIntoV86 Maps pages into V86 address.
_PhysIntoV86 Maps physical pages into V86 memory.
_TestGlobalV86Mem Tests for global V86 memory.