2012-05-09 11 views
3

すべてのデータが格納されている1つのファイル(1つのファイル=仮想ディスク)を持つような、いくつかの仮想ファイルシステムを試してみたい。たとえば、仮想ディスクを開いてファイルを書き込み、ファイルにデータを書き込み、ファイルからデータを読み込み、ファイルを開いてfseekなどを使用することができます。C++/C仮想/組み込み可能ファイルシステム[Cross Compatible(Library)]?

私はそれに使用できるライブラリはありますか?ライセンスなどは重要ではありません。私は借用しているので私のマシン上でテストしたいので、C++/Cで試してみたい。

ありがとうございます! :)

ライブラリがWindowsの場合はそれだけでもOKですが、多分私は2つのプロジェクトを作ることができるlinuxライブラリを見つけるでしょうか?


編集:私は私の質問は少し不明である知っているBRPocockへ 感謝。私が本当に欲しいのは、ライブラリがすでに提供しているVFS上で、ファイルの保存、ファイルの読み込み、およびファイル操作を実行できるライブラリです。そして、コースのマウント。私はC++でこの機能を提供するライブラリがあるのであれば、私は何をprefferだろうことは次のとおりです。

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

+0

これはOSレベルのもののように聞こえ、おそらくC/C++コードを書く必要はありません。 「ディスクイメージ」ファイルをどこかに作成し、そのイメージを読み取り/書き込みディスクとしてマウントすることができます。 Linuxは 'loop' FSと' mount'コマンドでこれを行います。 Mac OS Xは「ディスクユーティリティ」に画像を作成し、Finderは画像を直接マウントできます(ダブルクリックするだけ)。 DunnoはWindowsが何をしているのですが、VirtualCloneDriveのようなものはすべてあなたが必要とするものだと賭けています。これを行うと、言語の標準ファイル操作で画像にアクセスできます。 –

+0

同様の[質問](http://stackoverflow.com/questions/2336804/open-source-embedded-filesystem-or-single-file-virtual-filesystem-or-structure)いくつかのアイデアを提供するかもしれない... – Ioan

答えて

2

私たちのSolFSが仕事をします。評価ライセンスはあなたのために大丈夫ですし、私たちは非営利の公開プロジェクトにも無料のライセンスを提供します。ファイルシステムを他のアプリケーションから見えるようにするには、OSエディションのSolFSが必要です。アプリケーションからその関数だけを呼び出す場合は、SolFS Application Editionで十分です。

+0

本当に面白い音。公開プロジェクトを行う場合、この種のライセンスを取得するには、電子メールで会社に連絡する必要がありますか? –

+0

@GamErixはい、確かに、サイトで指定された通りに私達に連絡してください –

4

のLinux(と、私は信じて、MacOSXのを含む多くのBSD、 )は、FUSEシステム(http://fuse.sourceforge.net/)を使用して、これらの種類のサービスを提供しています。あなたは 'ネット上で多くの例を見つけることができるはずです。

Windowsで同じことをする「受け入れられた」方法は、デバイスドライバのロード可能なモジュール(.dll)として書き込むことだと考えています...おそらく開始点としてhttp://msdn.microsoft.com/en-us/windows/hardware/gg463062にグーグルポイントがあります。

+0

私は新しいファイルシステムを完全に作成したいとは思っていません。Dヒューズリンクはお役に立ちました。ありがとうございましたが、窓は あなた自身のFSも作る必要があります。私はまずLinux上でWindowsでそれを作るのが好きです:P –

+1

あなたの質問は、実際には新しいファイルシステムを作ることです。ただし、他のユーザーのファイルシステム(FATファイルシステムなど)を格納できる仮想*ブロックデバイス*を作成する場合は、ブロックデバイスのWindowsデバイスドライバを確認してください。 Linuxでは、 'loop'ファイルシステムデバイスを使用してファイルシステムにファイルシステムをループバックすることができます。 – BRFennPocock

+2

そして、私はhttp://code.google.com/p/whefs/を見つけました。それを使用する:$ –

関連する問題