Что означает код NTSTATUS 0x40000019 (STATUS_WAS_LOCKED)?

 
Предыдущий Следующий
STATUS_SERVICE_NOTIFICATION STATUS_LOG_HARD_ERROR

STATUS_WAS_LOCKED

Запрос блокировки пересёкся с уже заблокированной страницей

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

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

Что проверить

  • При отслеживании владения блокировкой округляйте запрошенные байтовые диапазоны до границ страниц.
  • Проверяйте перекрывающиеся буферы и поддерживайте явный счётчик ссылок или единственного владельца.
  • Измерьте общий объём заблокированных страниц и квоту рабочего набора вместо повтора того же запроса.

Ссылки


Нужно найти другой код? Найти другой код состояния или ошибки.