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.
_SetResetV86Pageable
◄Up► ◄Next► ◄Previous►
────────────────────────────────────────────────────────────────────────────
include vmm.inc
VMMcall _SetResetV86Pageable, <VM, VMLinPgNum, nPages, flags>
or eax, eax ; nonzero if set or reset, zero if error
jz error
The _SetResetV86Pageable service modifies the locking and unlocking behavior
associated with a specific range of V86 memory.
Parameter Description
────────────────────────────────────────────────────────────────────────────
VM Specifies a handle identifying the virtual machine for which the
behavior is modified.
VMLinPgNum Specifies the linear page number of the first page in 1 megabyte
V86 address space to modify. This parameter must not be below
the page number for the first V86 page or above 100h.
nPages Specifies the number of pages to modify.
flags Specifies the operation flags. This parameter can be one of the
following values:
Value Meaning
────────────────────────────────────────────────────────────────
PageSetV86Pageable Disable normal locking behavior of
_MapIntoV86 and let V86 memory be
paged.
PageClearV86Pageable Enable normal locking behavior.
PageSetV86IntsLocked Enable locking of all V86 memory that is
not pageable regardless of whether the
virtual pageswap device uses MS-DOS or
BIOS functions.
PageClearV86IntsLocked Disable locking of all V86 memory that
is not pageable regardless of whether
the virtual pageswap device uses MS-DOS
or BIOS functions.
All other values are reserved.
Return Value
The EAX register contains a nonzero value if the service is successful.
Otherwise, EAX contains zero to indicate an error, such as an invalid
virtual machine handle or an invalid address range.
Comments
This service is intended to be used to support protected-mode applications
running in a virtual machine. Virtual devices must not use this service for
any other purpose.
This service returns an error if the VMStat_PageableV86 or
VMStat_V86IntsLocked state is inconsistent with the specified
PageSetV86Pageable, PageClearV86Pageable, PageSetV86IntsLocked, or
PageClearV86IntsLocked values.
This service returns an error if the PageClearV86Pageable or
PageSetV86IntsLocked values are given, but the service cannot lock the
specified memory.
The V86MMGR device uses the PageSetV86IntsLocked value for virtual machines
which are created with their base memory specified as locked.
Virtual device should avoid manipulating the locking and unlocking behavior
of regions above page 0A0h. A virtual device should not modify these pages
unless it owns a global or local region set by the _Assign_Device_V86_Pages
service.
If the PageSetV86IntsLocked or PageClearV86IntsLocked value is given, the
service applies the modification to every page that that is not pageable.
For this reason the HLinPgNum and nPages parameters should be set to zero.
By default, the _MapIntoV86 service locks the memory it maps. For a virtual
machine running a protected-mode application, it is desirable change this
default behavior.
Uses
EAX
See Also
_Assign_Device_V86_Pages
♦