1

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

目前我正在操作 SetEndOfFile 上执行此操作,但我只能给出 DiskFull 错误,并且我想返回类似 NTStatus.FileTooLarge 的内容,但是当我这样做时,文件系统会忽略该返回。

有什么选择可以做我想做的事吗?

4

1 回答 1

1

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

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

于 2018-04-29T17:43:06.617 回答