创建文件系统“驱动程序”

时间:2011-09-14 22:22:29

标签: c++ windows filesystems

我想在Windows的物理磁盘上创建一个“驱动程序”用于自定义文件系统。我并不完全知道解释它的最佳方法,但设备已经有适当的驱动程序和Windows之类的一切与之通信,但我想要发生的是用户能够将设备插入他们的电脑,让它显示在我的电脑中,并给予他们完全支持浏览设备。

我意识到这可能是一个有点可怕的想法,有些人不知道做这样的事情的基本知识,甚至提出问题,但我已经有了课程和所有构建的内容,以便在我自己的应用程序中阅读...我只是希望一切都更加集中,而不需要最终用户的更多工作。有没有人有一个很好的指南来创建这样的项目?

4 个答案:

答案 0 :(得分:4)

我所了解的最接近我的描述的是一个可安装的文件系统,例如允许Windows计算机使用的Ext2 installable file system Linux发起ext2(以及某种程度上的ext3)文件系统。

也许这可以作为你调查的起点。

作为替代方法,Shell extension比IFS复杂得多。现已解散的GMail shell extension使用了这种方法,即使由于GMail的变化而变得无法运作,它仍然可以作为灵感。

答案 1 :(得分:1)

您的选择是:

  1. 创建内核模式文件系统驱动程序。为有经验的开发人员提供9-12个月的工作。
  2. 使用框架并在用户模式下执行所有操作。几个星期的工作让原型工作。这种方法的唯一缺点是它比内核模式驱动程序慢。您可以使用上面提到的Dokan,或者您可以使用我们的Callback File System进行商业级开发。

答案 2 :(得分:0)

我认为您需要查看Windows Driver Kit文档(以及相关主题),以确切了解您要创建的内容。

答案 3 :(得分:0)

如果您打算依赖已经存在的驱动程序,即您不需要在内核中实际执行代码与之通信,我建议您查看FUSE for windows {{3 }}

如果确实需要在内核空间中运行,并直接与硬件通信,则可能需要下载Windows DDK(驱动程序开发工具包)。请记住,与块设备和文件系统通信的驱动程序是分开的,听起来就像是在谈论文件系统本身。我相信你在内核空间中运行的任何东西都无法访问c ++运行时,这意味着你只能使用c ++的一个子集来运行内核驱动程序。