| Предыдущий | Следующий |
| ERROR_SERVICE_NOTIFICATION | ERROR_LOG_HARD_ERROR |
ERROR_WAS_LOCKED
Что означает ERROR_WAS_LOCKED
ERROR_WAS_LOCKED означает, что при попытке заблокировать диапазон памяти одна или несколько его страниц уже находились в заблокированном состоянии.
Что проверить
- Адрес и длину каждого
VirtualLock, приведённые к границам страниц. - Какие подсистемы считают себя владельцами перекрывающихся страниц.
- Есть ли собственный подсчёт ссылок, если перекрытие блокировок допустимо по архитектуре приложения.
- Все ветви cleanup/error, вызывающие
VirtualUnlock.
Почему это важно
Уже заблокированная страница сама по себе не обязательно означает ошибку. Проблема возникает, когда независимые владельцы выполняют lock/unlock несогласованно: одна подсистема может снять блокировку, пока память ещё нужна другой. Для общего буфера управляйте владением на уровне приложения и выполняйте unlock только после освобождения последней ссылки. В real-time и multimedia-коде логируйте диапазоны после выравнивания по страницам — именно так обычно обнаруживаются неожиданные перекрытия.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
