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.
_PageUnLock
◄Up► ◄Next► ◄Previous►
────────────────────────────────────────────────────────────────────────────
include vmm.inc
VMMcall _PageUnLock, <hMem, nPages, PageOff, flags>
or eax, eax ; nonzero if unlocked, zero if error
jz not_unlocked
The _PageUnLock service unlocks one or more pages in the specified memory
block.
Parameter Description
────────────────────────────────────────────────────────────────────────────
hMem Specifies a handle identifying the memory block to unlock. This
handle must have been previously created using the PageAllocate
or PageReAllocate service.
nPages Specifies the number of pages to unlock.
PageOff Specifies the offset in pages from the start of the block to the
first page to unlock.
flags Specifies the operation flags. This parameter can be a
combination of the following values:
Value Meaning
─────────────────────────────────────────────────────────────────
PageLockedIfDP Unlock pages only if the virtual pageswap device
use MS-DOS or BIOS functions to write to the
hardware. If the virtual pageswap device writes
directly to the hardware, this service returns
immediately without unlocking the pages.
The PageLockedIfDP value cannot be used until
after the Init_Complete message has been
processed.
PageMarkPageOut Marks pages for immediate swapping if this
service sets the lock count for the pages to
zero. This service marks the pages by clearing
the P_ACC bit for each page. The PageMarkPageOut
value should only be used if the pages are
unlikely to be accessed for some time.
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 memory
handle.
Comments
This service returns an error if the sum of the PageOff and nPages
parameters is greater than the number of pages in the memory block. It also
returns an error if the specified pages are not already locked.
Each page in a memory block has an individual lock count. This service
increments the lock count each time the page is locked, and decrements the
count each time the page is unlocked. The lock count must be zero for the
page to be unlocked. This means that if the handle is locked 5 times, it has
to be unlocked 5 times. Virtual devices must not leave handles locked when
not needed.
Uses
EAX
See Also
_PageLock
♦