【问题标题】:Windows File Systems?Windows 文件系统?
【发布时间】:2011-07-22 11:35:54
【问题描述】:

我已经完成了在托管 C# 中开发的存档格式,它过于灵活,不能仅作为存档。我希望将其用作文件系统。

它组织良好,速度非常快,同时具有低级和高级 API 功能。它支持动态加密和压缩、密码保护、Windows Explorer 特定的文件元数据(例如创建/修改/访问时间和属性)、2^63 - 1 大小的 HDD 等。

如果可以让 Windows 识别并使用我的文件系统,我会为了实现它而学习 Visual C++。 Windows 甚至支持自定义文件系统吗? (7 是必须的,其他是可选的。)如果是,我如何制作/实施它们?

如果我必须使用一些 3rd 方库,它必须是免费的。我不想使用 CallbackFileSystem,因为它不是免费的。


也许有些读者很好奇我为什么选择不自己制作驱动程序。 原因是签名。必须对驱动程序进行签名才能在 64 位系统(至少我的 Windows 7)上正常运行。
现在,我没有钱从受信任的来源购买数字证书...所以没有适合我的驱动程序...我在大多数机器上使用 x64 Windows 7,因此为 x86 编写驱动程序将是巨大的浪费...

【问题讨论】:

标签: c# c++ windows filesystems


【解决方案1】:

嗯,有可能,一旦我尝试过这种方法。我基于这些样本:http://www.acc.umu.se/~bosse/

附言另外你不需要文件系统,你需要一个驱动程序

【讨论】:

  • 我的任何问题的最佳答案!我只是喜欢从代码中学习!我需要一段时间才能查看所有样本。 xD
  • acc.umu.se/~bosse/ntifs.html我明白开发驱动比开发FS要花更长的时间...
  • @Vercas - “千里之行始于一步。”看起来并不难,很多代码都可以复用
  • 老实说,当我看到那段代码时,我觉得自己太笨了,活不下去了...... >.> 太丑了,我觉得有必要呕吐。我从来没有真正喜欢过 C++...这就是我主要选择 C# 的原因 - 它更有条理和可读性(嗯,这也取决于开发人员)。
  • @Vercas:别担心,大多数人一开始都有呕吐的感觉。如果你关心这个项目,你可能会首先用 C++ 重新实现你的 achive 格式。请注意:如果您从未使用 C++ 进行过开发,那么正确地完成它需要几周甚至几个月的时间。
【解决方案2】:

是的,这是可能的,但您确实需要 Visual C++。文件系统是驱动程序,它们是本地运行的(在内核中)。您需要的相关部分是可安装文件系统 (IFS) SDK。这在 XP、Vista 和 7 上受支持。

驱动程序编程比普通编程要困难得多。您必须更加小心指针,因为它们有不同的种类(分页/非分页、用户/内核等)。

【讨论】:

  • 好吧,我和指针之间的最后一战必须在某一天发生......也许今天。
  • C++ 无济于事。驱动程序使用纯 C 语言编写,并使用 Windows 开发工具包(以前的 DDK)附带的 C 编译器编译。
  • 嗯,该产品名为“Microsoft Visual C++”,如果您知道自己在做什么,当然可以使用较新的编译器以及 C++ 功能。详情请见msdn.microsoft.com/en-us/windows/hardware/gg487420
  • @MSalters 我猜你读过msdn.microsoft.com/en-us/windows/hardware/gg487420#EFE,不是吗?这就是使用 C 而不是 C++ 的原因。
  • 我什至阅读了整篇文章,包括以下摘要:“使用 C++ 编译器作为“超级 C”通常可以工作”
【解决方案3】:

如果您设法创建了一个完整的文件系统,那么学习驱动程序开发是一个好主意。你需要 Windows Driver Kit 。 OSR 产品比 Callback File System 贵得多,而且它们需要内核模式开发,因此不适合您。

请注意,经验丰富的 Windows 开发人员需要 6 到 12 个月的时间来创建和调试复杂的内核模式驱动程序(例如文件系统驱动程序或过滤器驱动程序或类似驱动程序)。所以准备好长时间的开发。

此外,您还必须用 C 重写现有的文件系统代码,这会增加您开发解决方案的时间。另一种方法是重新实现回调文件系统所做的事情,即为所有业务逻辑调用用户模式代码,但这个任务(在术语上)与用 C 重写你的代码相当。

关于http://www.acc.umu.se/~bosse/ 的注释——那里提供的驱动程序几乎需要完全重写。我们曾经在创建 SolFS OS 版本产品的第一个版本时将它们用作指南。但是我们最终完全重写了驱动程序(并且在初始实现上浪费了时间)。也有关于该代码的 IP 问题的传言,但我只在 OSR 邮件列表中阅读它们,因此我不能对此发表太多评论(如果您对细节感兴趣,OSR 有邮件列表存档)。

【讨论】:

  • 是的,我已经看到了这些驱动程序的复杂性。我可以说我不可能编写自己的驱动程序。我会按照懒人的方式去做。多坎;自动启动和自动挂载;隐藏文件...和UAC绕过。
  • 请不要介意...但我想知道 - 有没有人真正购买甚至尝试过您的回调文件系统?我想终于试一试,但我只有一个“免费”的电子邮件地址...
  • @Vercas 给我发一封电子邮件到 cto@eldos.com,我会给你一个许可证密钥。至于“谁试过”——我们有大约一百个客户,包括几家非常大和非常知名的公司。还有一些 Dokan 用户迁移或已经迁移到 CBFS。
  • 我知道自己是一个迁移用户 - La Cie。Wuala 也是商业用户。 <_>
猜你喜欢
  • 2010-10-28
  • 2012-11-20
  • 2014-09-02
  • 1970-01-01
  • 2014-09-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-10-01
相关资源
最近更新 更多