Моя программа Windows получает информацию от другой программы через интерфейс каталога / файла.
То есть другая программа сбрасывает файлы в специальный каталог. Моя программа периодически сканирует каталог, находит файлы, обрабатывает и затем удаляет их.
Я использую функцию CreateFile () для открытия таких файлов. Чтобы гарантировать, что другая программа закончила запись в файл и закрыла его, я установил для параметра dwShareMode значение 0. Если CreateFile завершился неудачно с ошибкой общего доступа, я просто пропускаю файл до следующего изменения.
Проблема в том, что DeleteFile () завершается с ошибкой ERROR_SHARING_VIOLATION, когда файл открывается моей программой.
Я мог бы закрыть файл перед его удалением, но я бы хотел избежать возможности какой-либо другой программы открыть файл непосредственно перед его удалением.
Я использую этот код для открытия файлов
CreateFile(filePath,DELETE|FILE_READ_DATA,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)
Можно ли добиться того, чего я хочу: открыть файл исключительно и затем удалить его, чтобы никакая другая программа не могла вмешиваться между открытием и удалением файла.