| Предыдущий | Следующий |
| STATUS_UNABLE_TO_DECOMMIT_VM | STATUS_INVALID_PORT_ATTRIBUTES |
STATUS_NOT_COMMITTED
Целевая память не имеет зафиксированной подложки
Зарезервированное адресное пространство нельзя использовать или защищать как зафиксированную память до commit. Операции изменения защиты, блокировки страниц или использования диапазона как буфера могут завершиться ошибкой, если пересекают незафиксированный участок. Крупное резервирование может намеренно содержать смесь состояний.
Фиксируйте только страницы, которыми владеет и которые требует архитектура. Автоматическая фиксация любого сбойного диапазона может скрыть выход указателя за границы или дефект метаданных распределителя. Используйте VirtualQuery для разделения диапазона по границам состояний и выясните, почему вызывающая сторона ожидала commit.
Что исследовать
- Проверьте состояние, защиту и базу выделения для каждой страницы диапазона.
- Убедитесь, что указатель и длина остаются внутри зафиксированного экстента, принадлежащего распределителю.
- Проверьте гонки, при которых другой поток снимает commit, пока асинхронная работа всё ещё ссылается на память.
Ссылки
- Microsoft: VirtualQuery
- Microsoft: VirtualAlloc
- Microsoft: VirtualProtect
- Microsoft: VirtualLock
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.