Удалить файл, открытый для монопольного доступа в том же процессе.

Моя программа Windows получает информацию от другой программы через интерфейс каталогов / файлов. То есть другая программа помещает файлы в специальный каталог. Моя программа периодически сканирует каталог, находит файлы, обрабатывает и затем удаляет их.

Я использую функцию CreateFile (), чтобы открывать такие файлы. Чтобы убедиться, что другая программа завершила запись в файл и закрыла его, я устанавливаю параметр dwShareMode равным 0. Если CreateFile завершается неудачно с ошибкой совместного использования, я просто пропускаю файл до следующей итерации.

Проблема в том, что DeleteFile () завершается с ошибкой ERROR_SHARING_VIOLATION, когда файл открывается моей программой.

Я мог бы закрыть файл перед его удалением, но я бы хотел избежать возможности открытия файла какой-либо другой программой непосредственно перед удалением файла.

Я использую этот код для открытия файлов

CreateFile(filePath,DELETE|FILE_READ_DATA,0,NULL,OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL,NULL)

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

8
задан Puppy 2 August 2011 в 11:59
поделиться