На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

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 function to increase their minimum and maximum working set sizes. The maximum number of pages that a process can lock is equal to the number of pages in its minimum working set minus a small overhead.

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

GlobalLock, LocalLock, SetProcessWorkingSetSize, VirtualUnlock


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

VirtualLock



Функция VirtualLock запирает определенный регион пространства виртуального адреса процесса в память, гарантируя этот последующий доступ к региону не понесет страничный дефект.

BOOL VirtualLock(

LPVOID lpAddress, // АДРЕС первого байта дипазона, чтобы запирать количество DWORD dwSize // байтов в дипазоне, чтобы запираться
);


Параметры

lpAddress

Точки на базовый адрес региона страниц, которые нужно запираться.

dwSize

Определяет размер, в байтах, региона, который нужно запираться. Регион неестественных страниц включает все страницы, которые содержат один или более байтов в дипазоне из параметра lpAddress, чтобы (lpAddress+dwSize). Это означает, что 2- байтовый дипазон, перекрывающий страничную границу вызывает обе страницы, которые нужно запираться.



Обратные Величины

Если функция добивается успеха, обратная величина ненулевая.
Если функция терпит неудачу, обратная величина нулевая. Для того, чтобы расширять информацию ошибки, назовите GetLastError.

Замечания

Все страницы в определенной области должны быть совершены. Память защищенная флагом PAGE_NOACCESS не может быть заперта.

Блокировка страниц в память может деградировать исполнение системы уменьшая доступное РАМ и заставляя систему, чтобы откачивать другие критические страницы в файл подкачки. По умолчанию, процесс может запереть максимум 30 страниц. По умолчанию предел преднамеренно небольшой, чтобы избегать серьезного разложения исполнения. Приложения, что нужно запирать большие количества страниц должно сначала назвать функцию SetProcessWorkingSetSize, чтобы увеличивать их минимум и максимум, прокладывающие установившее размеры. Максимальное количество страниц, что процесс может запереть равняется количеству страниц на своем минимуме, прокладывающем установленное минус небольшой подвесной.

Страницы, что процесс запер остаются резидентом даже когда процесс является ожиданием на расширенные периоды.
Для того, чтобы деблокировать область закрытых страниц, используйте функцию VirtualUnlock. Закрытые страницы автоматически деблокированы когда процесс завершается.
Эта функция - не любить GlobalLock или функцию LocalLock в том, что это не увеличивать счет блокировки и переводиться ручку на указатель. Нет блокировки иметь значение виртуальные страницы, так что кратное называется в функцию VirtualUnlock никогда требуется деблокировать область страниц.

Windows 95:

На Windows 95, функция VirtualLock осуществлена как заглушка, которая не имеет ИСТИНУ эффекта и всегда возврата.



Смотри Также

GlobalLock, LocalLock, SetProcessWorkingSetSize, VirtualUnlock


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz