3

我想尝试一些虚拟文件系统,例如拥有 1 个存储所有数据的文件(1 个文件 = 虚拟磁盘)。例如,我可以打开虚拟磁盘并将文件放入其中,将数据写入文件,从文件中读取数据,打开文件并使用 fseek 等。

有没有我可以使用的图书馆?许可证等并不重要。我只是想在我的机器上测试它,因为我很无聊,所以我想在 C++/C 中尝试一下。

提前致谢!:)

如果库只有windows,那也没关系,也许我会找到一个linux库,这样我就可以制作2个项目了?


编辑:感谢 BRPocock,我知道我的问题有点不清楚。我真正想要的是一个能够在库已经提供的 VFS 上存储文件、读取文件和执行文件操作的库。当然还有安装。所以,如果有一个库可以在 C++ 中给我这个函数,我会更喜欢:

OpenVirtualDrive(const name[]);//
CloseVirtualDrive(handle);//
fopen(const name[], mode);//open file, return handle
fclose(handle);//close handle
ftemp(); //open file as temporary file
fremove(const name[]);//delete file

fwrite(handle, array[]);//write array to file
fread(handle, array[], size = sizeof array, pack = false);//read from file
fputchar(handle, value, utf8 = true);//put char into file
fgetchar(handle, value, utf8 = true);//read char from file, move pointer
fblockwrite(handle, const buffer[], size = sizeof buffer);//write block
fblockread(handle, buffer[], size = sizeof buffer);//read block, move pointer

fseek(handle, position = 0, seek_whence: whence = seek_start);//move pointer
flength(handle);//size of file
fexist(const pattern[]);//check if file exists
fmatch(name[], const pattern[], index = 0, size = sizeof name);//search for file

这只是伪代码:P

4

2 回答 2

4

Linux(以及许多 BSD,我相信包括 MacOSX)使用 FUSE 系统 (http://fuse.sourceforge.net/) 来提供这些类型的服务。您应该能够在“网络”上找到许多示例。

我相信在 Windows 上执行相同操作的“公认”方式是将其编写为设备驱动程序可加载模块 ( .dll) ......在http://msdn.microsoft.com/en-us/windows/hardware /gg463062也许是起点。

于 2012-05-09T17:19:41.573 回答
2

我们的SolFS将完成这项工作。评估许可证对您来说没问题,我们也为非商业公共项目提供免费许可证。如果你想要一个从其他应用程序可见的文件系统,你需要 SolFS 的 OS 版本,如果你只想从你的应用程序调用它的函数,那么 SolFS 应用程序版本就足够了。

于 2012-05-09T18:50:43.043 回答