2

いくつかのルールに基づいて、複数の NTFS フォルダーのコンテンツを 1 つにマージする必要があります。これらのルールにより、競合する名前がないことが保証されます。目標は、そのすべてをプログラム (c# および/または c++) で行うことです。

私が持っていた最も簡単な解決策は、ソース フォルダー内の各ファイルを指すターゲット フォルダーに NTFS リンク (またはジャンクション) を作成することです。

ここまではうまくいくのですが、問題は追加ファイルが発生せず、削除されたファイルが消えないことです。

もちろん、バックグラウンド プロセス (サービス) を実行して、ファイル システムのソース フォルダーをリッスンし、その場で NTFS リンクの適切な変更を実行することはできますが、これでよいでしょうか?

最初の質問は: 1. それを行う最もエレガントな方法は何ですか? 2. たとえば、ZIP または ISO ファイルのコンテンツを NTFS フォルダにマウントできる複数のプログラムを見てきました。それらはどのように機能しますか?

4

2 に答える 2

3

Window でユーザーモード ファイル システムを作成できるようにする 1 つのプロジェクトを次に示します。Dokan :

Windows で新しいファイル システムを作成する場合、たとえば FAT や NTFS を改善するために、ファイル システム ドライバーを開発する必要があります。Windows でカーネル モードで動作するデバイス ドライバーを開発することは非常に困難です。Dokan ライブラリを使用すると、デバイス ドライバを作成することなく、非常に簡単に独自のファイル システムを作成できます。

于 2012-05-23T06:52:03.470 に答える
2

何かを既存のフォルダーにマッピングするには、次の 2 つの方法があります。

  1. ファイルシステム フィルター ドライバーは、既存のフォルダーへの FS 要求をフィルター処理し、フォルダーの変更されたコンテンツを表示します。
  2. ファイルシステム ドライバーは、仮想ファイル システムを作成し、NTFS ドライブのジャンクション ポイントとしてマウントします。

どちらの方法でも、対応するカーネル モード ドライバーが必要です。

ZIP (または他の同様のファイル) を公開するアプリケーションは、上記の方法のいずれかを使用します。ディスクのイメージである ISO ファイルは、仮想ディスクとして直接公開することも、NTFS フォルダーにマウントすることもできます。後者の場合、カーネル モードのディスク ドライバーが必要です。

特定のタスクは、コールバック ファイル システム(CBFS) 製品を使用して実行できます。CBFS は、事前に作成されたカーネル モード ドライバーを提供し、ファイル システム関連のコードをユーザー モードで記述できるようにします。CBFS には、探しているほとんどの機能を実行する Mapper サンプルが含まれています。これは、既存のフォルダーの内容を、NTFS フォルダーにマウントできる新しい仮想ファイルシステムとして表示します (CBFS はこれをサポートしています)。非商用ライセンスは、公共の非商用プロジェクトで利用できます。.NET、C++、Java、および Delphi 用の API が提供されています。

于 2012-05-23T06:56:50.837 に答える