| Предыдущий | Следующий |
| ERROR_SIGNAL_REFUSED | ERROR_NOT_LOCKED |
ERROR_DISCARDED
Что означает ERROR_DISCARDED
ERROR_DISCARDED относится к старой модели movable/discardable memory и означает, что содержимое сегмента уже было discarded. Это отличается от обычного page-out современной виртуальной памяти: логическое содержимое такого legacy-сегмента больше не следует считать доступным через старое состояние.
Что проверить
- Проследите полный жизненный цикл segment handle: allocation, lock, unlock, discard и следующий доступ.
- Проверьте, не выполняется ли повторный lock после пути, который уже допустил discard или освободил владение сегментом.
- Не переносите на этот код диагностику pagefile/working set: здесь проблема в контракте legacy memory API и времени жизни объекта.
- Если данные нужны после discard, приложение должно восстановить или заново создать их по правилам конкретного API, а не считать старый handle валидным.
Как подтвердить исправление
Исправление подтверждается тестом с принудительным discard/recreation, где код никогда не обращается к старому сегменту после потери его содержимого.
Технические ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
