include vmm.inc
VMMCall _PageUnLock, <hMem, nPages, PageOff, flags>
or eax, eax ; nonzero if unlocked, zero if error
jz not_unlocked
Unlocks one or more pages in the specified memory block. Uses EAX, ECX, EDX, and Flags.
Value | Meaning |
---|---|
PAGELOCKEDIFDP | Unlocks pages only if the virtual page swap device use MS-DOS or BIOS functions to write to the hardware. If the virtual page swap device writes directly to the hardware, this service returns immediately without unlocking the pages.
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.
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.
_PageLock