| Предыдущий | Следующий |
| STATUS_CONFLICTING_ADDRESSES | STATUS_UNABLE_TO_FREE_VM |
STATUS_NOT_MAPPED_VIEW
Адрес не обозначает существующее сопоставленное представление
UnmapViewOfFile работает с базовым адресом, возвращённым при создании представления. Указатель в середину представления, частная область VirtualAlloc, уже отсоединённый адрес или адрес из другого процесса не идентифицируют это сопоставление. Объект секции может оставаться действительным после удаления одного представления.
Храните исходный базовый адрес представления отдельно от указателей приложения внутрь сопоставленных данных. Не передавайте округлённый указатель на данные, если он не совпадает точно с возвращённой базой. При параллельном демонтаже передавайте владение атомарно, чтобы два потока не могли отсоединить одно представление.
Что проверить
- Сравните адрес с точным значением, возвращённым MapViewOfFile или нативным вызовом сопоставления.
- Перед очисткой используйте VirtualQuery, чтобы подтвердить тип области и базу выделения.
- Проверьте пути повторного закрытия и выхода по ошибке на наличие второго отсоединения представления.
Ссылки
- Microsoft: MapViewOfFile
- Microsoft: UnmapViewOfFile
- Microsoft: VirtualQuery
- Открытые спецификации Microsoft: значения NTSTATUS
Нужно найти другой код? Найти другой код состояния или ошибки.