我需要使用哪些API来编写自己的Windows驱动器盘符

时间:2011-01-17 08:26:05

标签: c# windows winapi

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

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

    • 我知道还有其他Ram驱动器实现 - 我不需要它们的列表。
    • 我尝试使用谷歌搜索,但发现很难找到合适的搜索字词。
    • 我现在不讨厌哪个版本的Windows,任何版本都没问题,因为我正在使用Windows 7进行开发,但我希望早期Windows的版本仍然有用

4 个答案:

答案 0 :(得分:3)

查看IFS (Installable Filesystem) Kit

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

不,你不能用C#来做。

答案 1 :(得分:3)

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

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

编辑:asveikau打败了我......

答案 2 :(得分:1)

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

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

docs page提到您可以使用它来编写C#,VB,C ++甚至Ruby中的文件系统代码!由于它将自己暴露为.Net库,我猜你可以用在CLR上运行的任何语言来实现它,例如IronPython或F#。

答案 3 :(得分:0)

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

不同之处在于CallbackDisk模拟磁盘设备(因此您可以在那里安装ISO映像),而Callback File System允许您构建自己的文件系统(例如,分布式或仅远程存储)

两种产品都提供.NET API。