C++/Win32: How to wait for a pending delete to complete

There are other processes in Windows that want a piece of that file. The search indexer is an obvious candidate. Or a virus scanner. They’ll open the file for full sharing, including FILE_SHARE_DELETE, so that other processes aren’t heavily affected by them opening the file.

That usually works out well, unless you create/write/delete at a high rate. The delete will succeed but the file cannot disappear from the file system until the last handle to it got closed. The handle held by, say, the search indexer. Any program that tries to open that pending-delete file will be slapped by error 5.

This is otherwise a generic problem on a multitasking operating system, you cannot know what other process might want to mess with your files. Your usage pattern seems unusual, review that first. A workaround would be to catch the error, sleep and try again. Or moving the file into the recycle bin with SHFileOperation().

Leave a Comment