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