限制 Dokan 文件系统上的文件大小

Limit file size on Dokan FileSystem

我正在尝试使用 Dokan 的 C# 版本制作虚拟文件系统。
我现在想做的是为我的文件系统设置文件的最大限制,例如,文件系统不能有超过 2GB 的文件。

目前我正在操作 SetEndOfFile 上执行此操作,但我只能给出 DiskFull 错误,我想 return 类似 NTStatus.FileTooLarge 的东西,但是当我这样做时,文件系统会忽略它return.

是否有任何选项可以满足我的需求?

您可以检查 WriteFile 函数的偏移量,如果偏移量大于 2GB - 您 return NtStatus.FileTooLarge

此外,您还应该检查 buffer.Length,以防您在磁盘上编辑文件时 - 它不会将其切成较小的缓冲块,而是将整个文件放入一个缓冲区.在这种情况下,您应该找到一种不破坏文件的方法,因为 CleanUp 将在 return 从 WriteFile 方法 NtStatus.FileTooLarge 之后立即调用 info.DeleteOnClose 设置为真。