【问题标题】:What APIs do I need to look at to code my own windows drive letter我需要查看哪些 API 来编写自己的 Windows 驱动器号
【发布时间】:2011-01-17 08:26:04
【问题描述】:

我正在考虑将自己的文件系统代码弄乱,作为一种学习练习。首先可以是 RAM 驱动器,或者只是安装在另一个驱动器上的文件中。问题:

  1. 我需要编写哪些 Windows API 来实现我自己的驱动器号(例如 M:我的系统)
  2. 这些 API 的文档在哪里?
  3. 你能用 C# 实现它们吗?

注意:

  • 我知道还有其他的 Ram 驱动器实现 - 我不需要它们的列表。
  • 我尝试了谷歌搜索,但发现很难找到正确的搜索字词。
  • 我现在不关心哪个版本的 windows,任何版本都可以,因为我正在使用 Windows 7 进行开发,但我希望早期 Windows 的版本仍然可以工作

【问题讨论】:

  • 你总是可以使用好的 ol' subst 命令:)
  • 定义DosDevice()。您必须首先设备,这就是 C# 降压停止的地方。阅读 Walter Oney 的书籍。

标签: c# windows winapi


【解决方案1】:

看看IFS (Installable Filesystem) Kit

您正在谈论编写文件系统驱动程序。基本模型是您的代码被加载到 NT 内核并处理 IRPs

不,你不能在 C# 中做到这一点。

【讨论】:

    【解决方案2】:

    您需要查看 Windows DDK - 现在显然称为“WDK”。 WDK 包括可安装文件系统 (IFS) 套件。看这里: Installable File Systems (IFS) kit

    Windows 上的设备驱动程序是用 C/C++ 编写的。据我所知,没有办法在 .NET 中实现文件系统驱动程序。内核空间中没有 CLR。​​

    编辑:asveikau 打败了我...

    【讨论】:

      【解决方案3】:

      从这个回答类似的问题:how to map a software as a Drive?

      看看Dokan。它看起来像是低级文件系统驱动程序的一个很好的可编写脚本的包装器。就像 Linux 上的 FUSE。

      docs page 提到您可以使用它在 C#、VB、C++ 甚至 Ruby 中编写文件系统代码!由于它以 .Net 库的形式公开,我猜您可以使用任何在 CLR 上运行的语言(例如 IronPython 或 F#)来完成它。

      【讨论】:

        【解决方案4】:

        根据您的需要(实施文件系统或仅使用现有文件系统的虚拟磁盘),您可以使用我们的虚拟存储产品之一:分别为Callback File SystemCallbackDisk

        不同之处在于 CallbackDisk 模拟磁盘设备(因此您可以在其中挂载,例如 ISO 映像),而 Callback File System 让您可以构建自己的文件系统(例如分布式或只是远程存储)

        .NET API 在这两种产品中都可用。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2010-10-10
          • 1970-01-01
          • 2020-12-22
          • 1970-01-01
          • 2010-11-13
          • 2011-03-30
          • 2011-01-17
          相关资源
          最近更新 更多