| Предыдущий | Следующий |
| ERROR_GEN_FAILURE | ERROR_LOCK_VIOLATION |
ERROR_SHARING_VIOLATION
ERROR_SHARING_VIOLATION означает, что запрошенные доступ и режим совместного использования конфликтуют с уже открытым дескриптором того же файла или устройства. Сам по себе этот код не доказывает отсутствие разрешений у вызывающей стороны.
Почему это происходит
Каждый вызов CreateFile объявляет как требуемый ему доступ, так и доступ, который разрешается запрашивать последующим вызывающим сторонам. Новое открытие завершается ошибкой, если запрошенный доступ конфликтует с флагами совместного использования существующего дескриптора. Эта политика действует до закрытия существующего дескриптора.
Распространённые случаи
- Приложение открывает файл со значением
dwShareMode, равным нулю, а затем пытается открыть его ещё раз. - Читающий или записывающий код не указал
FILE_SHARE_READилиFILE_SHARE_WRITE, хотя предполагается одновременный доступ. - Отсутствие
FILE_SHARE_DELETEне позволяет другому процессу переименовать или удалить файл. - Отображение файла с правом записи или другой процесс удерживает несовместимый дескриптор дольше ожидаемого.
Как диагностировать
Сначала проверьте требуемый доступ и режим совместного использования дескрипторов, открытых самим приложением. Если конфликтующий дескриптор принадлежит другому процессу, выясните, почему он продолжает удерживать файл. Повторная попытка уместна при кратковременной блокировке, но цикл повторов не устранит намеренно несовместимую политику совместного использования.
См. документацию Microsoft по CreateFile.
Нужно найти другой код? Найти другой код состояния или ошибки.