Что означает код NTSTATUS 0xC0000021 (STATUS_ALREADY_COMMITTED)?

 
Предыдущий Следующий
STATUS_INVALID_FILE_FOR_SECTION STATUS_ACCESS_DENIED

STATUS_ALREADY_COMMITTED

Целевые страницы уже имеют зафиксированное обеспечение

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

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

Что следует проверить

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

Ссылки


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