带有 FLAG_DELETE_ON_CLOSE 的 Win32 API CreateDirectory。可能的?

aau*_*aau 2 winapi create-directory

我当然不是 Win32 API 编程方面的专家,但我刚刚了解到的是,CreateFile一旦使用该FILE_FLAG_DELETE_ON_CLOSE值释放其句柄,我就可以使用该函数将其标记为由操作系统删除。我似乎无法找到一种方法来使用CreateDirectory,或者我错过了什么?

或者,我是否可以订阅此特定文件夹中的更改(例如创建的新文件),然后以某种方式使用此标志标记文件夹中的所有文件?

And*_*ers 5

您可以使用 FILE_FLAG_BACKUP_SEMANTICS 标志打开目录的句柄:

#include <windows.h>
#include <stdio.h>
void main()
{
    CreateDirectory(".\\testdir",NULL);
    system("pause");
    HANDLE hDir = CreateFile(".\\testdir",0,FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,0,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_DELETE_ON_CLOSE,NULL);
    CloseHandle(hDir);
}
Run Code Online (Sandbox Code Playgroud)

这确实在我测试的机器上工作(如果目录为空),但我不确定它是否被记录为有效的事情。