Невозможно удалить каталог - PullRequest
1 голос
/ 11 мая 2010

Очевидно, мне никогда не приходилось удалять каталог с помощью win32 sdk, потому что это, очевидно, невыполнимая задача. Я пробовал все и вся - RemoveDirectory, SHFileOperation с FO_DELETE и т. Д.

В настоящее время я вызываю CreateDirectory в одном потоке, запускаю другой поток, копирую некоторые файлы в этот каталог в новом потоке, затем удаляю все файлы в каталоге в новом потоке, а затем возвращаюсь в исходный поток, создавший каталог попробуйте удалить теперь пустой каталог, и это не удается. Директория действительно пуста, когда я пытаюсь ее удалить, но это не имеет значения. Я думаю, что весь аспект потока не имеет значения, потому что в какой-то момент все было в одном потоке, и это не сработало. В настоящее время я устанавливаю структуру SecurityAttributes в CreateDirectory для предоставления доступа всем, но это не имеет значения. RemoveDirectory в прошлом возвратил '32' на GetLastError, что я считаю нарушением общего доступа.

Но даже если я просто пытаюсь удалить пустой каталог из командной строки, он отказывается сказать: «Процесс не может получить доступ к файлу, потому что он используется другим процессом». пока я не закрою все приложение, которое создало каталог. (Примечание: каталог создается в GetTempPath.)

1 Ответ

4 голосов
/ 11 мая 2010

Ошибка 32 действительно «процесс не может получить доступ к файлу, потому что он используется другим процессом».

Возможно, вы используете FindFirstFile() для создания своего списка копий? - это заблокирует каталог до FindClose().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...