VirtualLock
The VirtualLock
function locks the specified region of the process s virtual address space into memory, ensuring that subsequent
access to the region will not incur a page fault.
BOOL VirtualLock(
LPVOID lpAddress, |
// address of first
byte of range to lock |
DWORD dwSize |
// number of bytes in
range to lock |
); |
|
Parameters
lpAddress
Points to the
base address of the region of pages to be locked.
dwSize
Specifies the
size, in bytes, of the region to be locked. The region of affected pages
includes all pages that contain one or more bytes in the range from the lpAddress
parameter to (lpAddress+dwSize). This means that a 2-byte range
straddling a page boundary causes both pages to be locked.
Return Values
If the
function succeeds, the return value is nonzero.
If the
function fails, the return value is zero. To get extended error information,
call GetLastError
Remarks
All pages in
the specified region must be committed. Memory protected with the PAGE_NOACCESS
flag cannot be locked.
Locking
pages into memory may degrade the performance of the system by reducing the
available RAM and forcing the system to swap out other critical pages to the
paging file. By default, a process can lock a maximum of 30 pages. The default
limit is intentionally small to avoid severe performance degradation.
Applications that need to lock larger numbers of pages must first call the SetProcessWorkingSetSize.
Pages that a
process has locked remain resident even when the process is idle for extended
periods.
To unlock a
region of locked pages, use the VirtualUnlock function. Locked pages are
automatically unlocked when the process terminates.
This function
is not like the GlobalLock or LocalLock function in that it does
not increment a lock count and translate a handle into a pointer. There is no
lock count for virtual pages, so multiple calls to the VirtualUnlock
function are never required to unlock a region of pages.
Windows
95:
On Windows 95,
the VirtualLock function is implemented as a stub that has no effect and
always returns TRUE.
See Also