_LinPageLock


include vmm.inc

VMMcall _LinPageLock, <page, npages, flags>
or      eax, eax                ; nonzero if locked, zero if error
jz      not_locked


#include <vmm.h>

ULONG EXTERNAL _LinPageLock(ULONG page, ULONG npages, ULONG flags);

Locks one or more pages starting at the specified linear page number. Locking a pages forces it to become physically present and to remain so until it is unlocked. This service is similar to the _PageLock service. Uses EAX, ECX, EDX, and Flags.

page and npages

Linear page number of the first page in the range, and the number of pages in the range. All of the pages in the range must be committed.

flags

Zero or one of these values:

PAGELOCKEDIFDP

Lock the pages only if the virtual pageswap device uses MS-DOS or BIOS functions to write pages to the hardware.

PAGEMAPGLOBAL

Map a global linear address to the locked range so that the memory can be accessed out of the current context. Cannot be specified with PAGELOCKEDIFDP.

PAGEMARKDIRTY

Mark the pages as if they have been written to. This flag is intended for a VxD that needs to modify the pages, but the CPU doesn't recognize the modifications. For example, the CPU may not recognize DMA write operations, or write operations using the address returned when the PAGEMAPGLOBAL flag is used.


A page can be locked more than once, in which case it must be unlocked once for each time it is locked. Unlock pages using the _LinPageUnLock service.

See also _LinMapIntoV86, _LinPageUnLock, _PageLock