小编Aly*_*sen的帖子

根据磁盘ID删除文件

如上所述这里,使用SetFileInformationByHandleFILE_DISPOSITION_INFO 允许一个设置文件有打开的句柄在被关闭所有句柄被删除.

不过,我想删除的检索基于其文件索引(磁盘ID)的文件FILE_DISPOSITION_INFO,并 OpenFileById以安全地删除其中的区别仅在情况下的目录文件/目录.这在我的用例中是安全的,因为在NTFS系统上,文件索引在删除之前持久的,否定ReplaceFile当前代码库处理的使用.

但是,在尝试删除句柄时,我收到错误87(ERROR_INVALID_PARAMETER).如果我使用创建的句柄删除CreateFileW,我遇到没有问题.但是,我无法做到这一点,因为Windows无法区分同一案例的两个文件/文件夹,即使NTFS可以.

我也知道打开硬链接文件存在歧义OpenFileById,因为硬链接文件共享相同的磁盘ID.可以认为硬链接文件的问题与此方案无关.我只会按ID删除目录,不能硬链接.

我的OpenFileById通话中是否有参数或设置?不知怎的,在我的SetFileInformationByHandle电话里?

我试过的其他方法:

  • 调用DuplicateHandleOpenFileById处理,提供DELETEdwDesiredAccess和使用.ERROR_INVALID_PARAMETER结果相同.
  • 使用ReOpenFileOpenFileById处理,提供DELETEdwDesiredAccess和使用.ERROR_INVALID_PARAMETER结果相同.
  • 使用ReOpenFileOpenFileById处理,提供DELETEdwDesiredAccess,并提供FILE_FLAG_DELETE_ON_CLOSE标志.没有给出错误,但在关闭所有句柄后文件仍然存在.

这是一个简单但完整的示例,它可以重现问题:

#include <stdio.h>
#include <sys/stat.h>
#include <Windows.h>

DWORD getFileID(LPCWSTR path, LARGE_INTEGER *id)
{
    HANDLE h …
Run Code Online (Sandbox Code Playgroud)

c winapi ntfs createfile

13
推荐指数
1
解决办法
652
查看次数

从python中的列表中删除重复(非精确)元组

考虑一个元组列表: [(14,1), (10,5), (8,7), (1,14)]

我需要消除(1,14)& 之一(14,1)。所以预期的结果应该是[(14,1),(10,5),(8,7)][(10,5),(8,7),(1,14)]

注意:顺序无关紧要。

我知道set()可以用来消除完全重复。组合也不会有太大帮助,因为所有这些加起来都是相同的总数。

python tuples set duplicates

1
推荐指数
1
解决办法
1450
查看次数

标签 统计

c ×1

createfile ×1

duplicates ×1

ntfs ×1

python ×1

set ×1

tuples ×1

winapi ×1