Virtual Devices (3.1) (vdag31qh.hlp) (
Table of Contents;
Topic list)
Important Notice
The pages on this site contain documentation for very old MS-DOS software,
purely for historical purposes.
If you're looking for up-to-date documentation, particularly for programming,
you should not rely on the information found here, as it will be woefully
out of date.
_MMGR_Toggle_HMA
◄Up► ◄Next► ◄Previous►
────────────────────────────────────────────────────────────────────────────
include vmm.inc
VMMcall _MMGR_Toggle_HMA, <VM, flags>
cmp flags, MMGRHMAQuerry
jne did_toggle
mov [HMAState], eax ; 0 if disabled, 1 if enabled
did_toggle:
or eax, eax ; nonzero if enabled/disabled, zero if error
jz error
The _MMGR_Toggle_HMA service enables or disables the high memory area (HMA).
The V86MMGR XMS device uses this service to control the state of the HMA for
a specified virtual machine and to notify the instance data manager that the
state is changing.
This service is for exclusive use by the V86MMGR XMS device.
Parameter Description
────────────────────────────────────────────────────────────────────────────
VM Specifies a handle identifying the virtual machine.
flags Specifies the operation flags. It can be one of the following
values:
Value Meaning
─────────────────────────────────────────────────────────────────
MMGRHMAPhysical Specifies whether the service maps physical
pages 100h through 10Fh into the HMA or expects
the virtual device to map some other physical
pages into the area. The value is used only if
the MMGRHMAEnable value is also given.
MMGRHMAEnable Enables the HMA, allowing addresses greater than
1 megabyte to access pages 100h through 10Fh. If
the MMGRHMAPhysical value is given, the service
maps physical pages 100h through 10Fh into the
linear pages 100h through 10Fh for the virtual
machine, enabling the global HMA for this
virtual machine and which all virtual machines
share.
If the MMGRHMAPhysical value is not given, the
service marks the linear pages 100h through 10Fh
as not present system pages. To prevent a system
crash when these pages are accessed, the virtual
device must provide its own physical pages to
map into these linear pages. This effectively
creates a local HMA that is specific to the
given virtual machine.
MMGRHMADisable Disables the HMA, causing addresses greater than
1 megabyte to be wrapped back to addresses in
pages 0 through 0Fh.
MMGRHMAQuerry Returns the current state of the HMA for the
virtual machine.
The MMGRHMAEnable, MMGRHMADisable, MMGRHMAQuerry values are
mutually exclusive.
All other values are reserved.
Return Value
If MMGRHMAEnable or MMGRHMADisable are given, the EAX register contains a
nonzero if the service is successful. Otherwise, EAX contains zero to
indicate an error.
If the MMGRHMAQuerry value is given, the EAX register contains a nonzero
value if the HMA is enabled and zero if the HMA is disabled.
Comments
This service can fail if the MMGRHMAEnable and MMGRHMAPhysical values are
given but the system is already using the physical pages 100h through 10Fh
for some other purpose.
A virtual device must not call this service unless it has already used the
_Assign_Device_V86_Pages service to assign the pages 100h through 10Fh to
itself. For this reason, this service is intended to be used by one and only
one virtual device.
When the system creates a virtual machine, it disables the HMA and causes
the virtual machine to operate like an 8086 processor. To override this
default, the virtual device responsible for the HMA must enable the HMA
while processing the VM_Critical_Init message.
Virtual devices must not identify instance data in the HMA.
Uses
EAX
See Also
_Assign_Device_V86_Pages, VM_Critical_Init
♦