问题描述
|
我当然不是Win32 API编程方面的专家,但是我刚学到的是,使用
CreateFile
函数,可以使用FILE_FLAG_DELETE_ON_CLOSE
值释放它的句柄,将其标记为由操作系统删除。我似乎找不到使用CreateDirectory
进行相同操作的方法,还是错过了某些东西?
(可选)我可以订阅该特定文件夹中的更改(例如创建的新文件),然后以某种方式用此标记标记该文件夹中的所有文件吗?
解决方法
您可以使用FILE_FLAG_BACKUP_SEMANTICS标志打开目录的句柄:
#include <windows.h>
#include <stdio.h>
void main()
{
CreateDirectory(\".\\\\testdir\",NULL);
system(\"pause\");
HANDLE hDir = CreateFile(\".\\\\testdir\",FILE_SHARE_READ|FILE_SHARE_WRITE|FILE_SHARE_DELETE,OPEN_EXISTING,FILE_FLAG_BACKUP_SEMANTICS|FILE_FLAG_DELETE_ON_CLOSE,NULL);
CloseHandle(hDir);
}
这确实可以在我测试过的机器上运行(如果目录为空),但是我不确定它是否被记录为有效的操作。