为Windows编写用户模式文件系统?

时间:2009-09-11 19:09:30

标签: c# filesystems

是否可以在纯用户模式下为Windows编写文件系统,或者更具体地说是在托管代码中?我在考虑与GMAILFS非常相似的东西。排除它在幕后做的事情(GMAIL,亚马逊等),主要目标是提供驱动器号并支持所有基本文件操作,甚至可能添加我自己的结构来存储元数据等。

5 个答案:

答案 0 :(得分:9)

Windows 提供了多种方法来构建用于不同目的的用户模式文件系统,具体取决于您的存储位置和您需要支持的功能。其中两个,Projected File System API 和 Cloud Files API 最近作为 Windows 10 更新的一部分提供。

Windows 投影文件系统 API

Projected File System API 旨在以文件系统的形式表示一些分层数据,例如 Windows 注册表。 与 Cloud Files(见下文)不同,它不提供有关文件状态的任何信息,并隐藏了这不是“真实”文件系统的事实。 Example

Windows 云同步引擎 API

Cloud Sync Engine API(云文件 API、云过滤 API)在 Windows 10 上的 OneDrive 中使用。它在第一次请求期间提供文件夹内容加载、多种不同模式下的按需文件内容加载以及脱机文件支持。它直接集成到 Windows 文件管理器和 Windows 通知中心,并提供文件状态(脱机、同步、冲突、固定)和文件内容传输进度。 Cloud Files API 在常规用户权限下运行,不需要管理员权限来安装文件系统或任何 API 调用。 Example

Windows Shell 命名空间扩展 API

虽然 Shell Namespace Extension 不是真正的文件系统,但在许多情况下,您将使用它来扩展 Projected File System 和 Cloud Files API 的功能。例如,您可以将自定义命令添加到 Windows 文件管理器的上下文菜单中,以及您可以创建看起来和行为类似于真实文件系统的节点(同样,应用程序将无法读取或写入此类节点,这只是一个用户界面)。 Cloud Files API 使用命名空间扩展在 Windows 文件管理器的顶层显示您的同步根目录。

答案 1 :(得分:6)

这很难。我会看一些为你做过一些艰苦工作的项目,例如: Dokan

答案 2 :(得分:1)

是。这是可能的,并且一直是successfully done for the ext2 filesystem

请注意,您需要编写自己的驱动程序,这需要在某些操作系统上运行Microsoft签名。

答案 3 :(得分:0)

当然,您可以抽象常规文件操作并让它们在云中运行(请参阅Google Apps,Amazon S3,Microsoft Azure等)。但是,如果您想与本地设备(包括本地高清)进行通信,则必须使用系统API,并使用驱动程序(系统/内核模式)。

只要你想要的只是一个存储服务 - 没问题。如果你想要一个真正的操作系统,你需要与真正的硬件对话,这意味着驱动程序。

答案 4 :(得分:0)

仅作为参考 - 我们的Callback File System是用于在用户模式下创建文件系统的维护和支持的解决方案。