| Предыдущий | Следующий |
| STATUS_SERVICE_NOTIFICATION | STATUS_LOG_HARD_ERROR |
STATUS_WAS_LOCKED
Запрос блокировки пересёкся с уже заблокированной страницей
VirtualLock работает со страницами, тогда как вызывающий код часто отслеживает байтовые диапазоны. Поэтому перекрывающиеся запросы могут затрагивать уже заблокированные страницы. Это предупреждение сообщает о перекрытии, чтобы вызывающий код не считал, будто все страницы перешли из разблокированного состояния в заблокированное именно этим вызовом.
Блокировка ограничена политикой рабочего набора процесса и должна применяться только к данным, для которых задержка подкачки недопустима. Повторная блокировка перекрывающихся буферов без владения с подсчётом ссылок делает очистку неоднозначной: один компонент может разблокировать страницы, которые всё ещё нужны другому.
Что проверить
- При отслеживании владения блокировкой округляйте запрошенные байтовые диапазоны до границ страниц.
- Проверяйте перекрывающиеся буферы и поддерживайте явный счётчик ссылок или единственного владельца.
- Измерьте общий объём заблокированных страниц и квоту рабочего набора вместо повтора того же запроса.
Ссылки
- Microsoft: VirtualLock
- Microsoft: VirtualUnlock
- Microsoft: рабочие наборы процессов
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.