VirtualLock

【勇芳软件工作室】汉化HomePreviousNext

VirtualLock功能将进程的虚拟地址空间的指定区域锁定到内存中,确保对该区域的后续访问不会导致页面错误。

BOOL VirtualLock(

LPVOID 【lpAddress】,//要锁定的范围的第一个字节的地址
DWORD 【的dwSize】//要锁定的范围中的字节数
); 

参数

【lpAddress】

指向要锁定的页面的基地址。

【的dwSize】

指定要锁定的区域的大小(以字节为单位)。受影响页面的所有页面包含从【lpAddress】参数到(【lpAddress】 + 【的dwSize】)范围内的一个或多个字节的所有页面。这意味着跨越页面边界的2字节范围会导致两个页面被锁定。

返回值

如果函数成功,返回值不为零。

如果函数失败,返回值为零。要获取扩展错误信息,请调用GetLastError.

备注

必须提交指定区域中的所有页面。使用PAGE_NOACCESS标志保护的内存无法锁定。

将页面锁定到内存中可能会降低系统的性能,减少可用RAM并强制系统将其他关键页面交换到页面文件。默认情况下,进程最多可以锁定30页。默认限制是有意的,以避免严重的性能下降。需要锁定较大页面的应用程序必须首先调用SetProcessWorkingSetSize功能来增加其最小和最大工作集大小。进程可以锁定的最大页数等于其最小工作集中的页数减去较小的开销。

进程锁定的页面仍然驻留,即使进程长时间闲置。

要解锁锁定页面的区域,请使用VirtualUnlock功能。当进程终止时,锁定的页面将自动解锁。

该函数不像GlobalLockLocalLock功能,因为它不会增加锁定计数并将句柄转换为指针。对于虚拟页面没有锁定计数,因此不需要多次调用VirtualUnlock功能来解锁页面的某个区域。

Windows 95:

在Windows 95上,VirtualLock功能实现为不起作用且始终返回TRUE的存根。

也可以看看

GlobalLock, LocalLock, SetProcessWorkingSetSize, VirtualUnlock