限制 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
设置为真。
我正在尝试使用 Dokan 的 C# 版本制作虚拟文件系统。
我现在想做的是为我的文件系统设置文件的最大限制,例如,文件系统不能有超过 2GB 的文件。
目前我正在操作 SetEndOfFile 上执行此操作,但我只能给出 DiskFull 错误,我想 return 类似 NTStatus.FileTooLarge 的东西,但是当我这样做时,文件系统会忽略它return.
是否有任何选项可以满足我的需求?
您可以检查 WriteFile
函数的偏移量,如果偏移量大于 2GB - 您 return NtStatus.FileTooLarge
。
此外,您还应该检查 buffer.Length
,以防您在磁盘上编辑文件时 - 它不会将其切成较小的缓冲块,而是将整个文件放入一个缓冲区.在这种情况下,您应该找到一种不破坏文件的方法,因为 CleanUp
将在 return 从 WriteFile
方法 NtStatus.FileTooLarge
之后立即调用 info.DeleteOnClose
设置为真。