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