Winapi Win32 API CreateDirectory在关闭时带有标记“删除”。可能的
我当然不是Win32 API编程方面的专家,但我刚刚学到的是,使用函数,我可以使用Winapi Win32 API CreateDirectory在关闭时带有标记“删除”。可能的,winapi,create-directory,Winapi,Create Directory,我当然不是Win32 API编程方面的专家,但我刚刚学到的是,使用函数,我可以使用FILE\u FLAG\u DELETE\u on\u CLOSE值,在释放其句柄后,将其标记为被操作系统删除。我似乎找不到同样的方法来使用,或者我错过了什么 或者,我是否可以订阅此特定文件夹中的更改(例如创建的新文件),然后以某种方式使用此标志标记文件夹中的所有文件 您可以使用FILE\u FLAG\u BACKUP\u语义标志打开目录句柄: #include <windows.h> #include
FILE\u FLAG\u DELETE\u on\u CLOSE
值,在释放其句柄后,将其标记为被操作系统删除。我似乎找不到同样的方法来使用,或者我错过了什么
或者,我是否可以订阅此特定文件夹中的更改(例如创建的新文件),然后以某种方式使用此标志标记文件夹中的所有文件 您可以使用FILE\u FLAG\u BACKUP\u语义标志打开目录句柄:
#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);
}
#包括
#包括
void main()
{
CreateDirectory(“.\\testdir”,NULL);
系统(“暂停”);
HANDLE hDir=CreateFile(“.\\testdir”,0,文件共享读取,文件共享写入,文件共享删除,0,打开现有,文件标志备份语义,文件标志删除打开,空);
闭合手柄(hDir);
}
这在我测试的机器上确实有效(如果目录为空),但我不确定它是否被记录为有效操作。如果没有尝试过,我怀疑Windows是否会在目录上使用该标志。原因是如果目录为非空,则无法删除该目录。如果操作系统不知道是否能够删除某个目录,它怎么能给你一个删除某个目录的承诺。如果你希望该目录为非空,你必须将其中的所有文件标记为删除,无论发生什么情况(即使你在该目录上使用了删除标志),因此FS通知是你唯一的选择。还应注意的是,并非所有应用程序在打开文件时都使用FILE_SHARE_DELETE,因此如果第三方应用程序写入此目录,您可能无法设置DELETE on close标志。
CreateFile
不是一个方法,而是一个(非成员)函数。CreateDictionary
与删除文件有什么关系?