2012-04-26 19 views
-1

このファイルへのすべてのアクセスを処理できるファイルを作成する方法。私のプログラムは、このファイルから読み込んだすべてのプログラムに要求されたデータを送り、このファイルへのすべての書き込みを受け取ることができます。仮想チェンジ・ファイルの作成方法は?

+0

のですか? –

+0

"仮想ファイル"は、ディスクまたはラム上に実際に存在しないファイルです。これをソフトウェアでシミュレートします。 – MohsenB

+7

ディスク上に存在せず、RAMに存在しない場合はどこですか? –

答えて

0

NTFSストリーム:

NTFS Stream代替選択肢かもしれません。 Windows Sysinternalsから


引用:

NTFSファイルシステムは、アプリケーションに情報の 代替データストリームを作成する能力を提供します。デフォルトでは、すべてのデータが、しかし 「ファイル:ストリームを」構文を使用して、ファイルのメイン無名のデータ・ストリームに を格納している...、あなたが読んで交互に書き込みすることができます


ストリーム上の

その他の関連資料:

+0

これはディスク上に保持されており、次の世代のWin8ファイルシステムでは消えてしまいます。 –

3

CreateFileMapping/MapViewOfFileを使用して共有メモリ領域を作成する必要があるように私には聞こえます。ウェブと書籍で多くの例が見つかります。

+1

例:http://voiceofgeek.blogspot.com/2009/02/memory-mapped-file-in-delphi.html – Pateman

2

質問はかなり曖昧です。

他のアプリケーションを使用する場合は、ファイルを使用するのではなく、他のプロセス間通信(IPC)メカニズムを選択できます。または、一時ファイル(特別なTEMPORARY属性で作成されたファイル)を使用することもできます。

他のアプリケーションがあなたのものではなく、ファイルがディスク上に存在することが予想される場合は、このファイルを作成するか、既存のファイルシステム上に仮想ファイルシステムとディスクまたは仮想ファイルを作成する必要があります。仮想ファイルシステムを作成するには、カーネルモードのドライバ(ファイルシステムドライバ)が必要です。既存のディスクに仮想ファイルを作成するには、カーネルモードのファイルシステムフィルタドライバが必要です。

カーネルモードのドライバは、Windows内部の知識を作成し、必要とするのに手間と時間がかかります。オプションの1つとして、CBFS(Callback File System)製品を使用できます。この製品を使用すると、ユーザーモードで仮想ファイルシステムを作成できます(ドライバを提供します)。しかし、CBFSはあなたの仕事にとって過度のものになる可能性があります。

あなたのより良い選択肢は、タスクと要件を確認し、他のアプリケーションにデータを提供する別の方法を見つけることです。

+0

たとえば、他のプログラムのアクセスごとにデータを変更する仮想ファイルを作成する必要があります。このファイルはRAMまたはディスクには存在しません。なぜなら、ファイルアクセスデータのすべてのバイトが変更され、この変更が自分のプログラムの処理であるからです。 – MohsenB

+0

@MohsenBこのアプローチには問題があります。OSはファイルデータが読み込まれるとそのデータをキャッシュし、読み込みごとに新しいデータを置き換えることはできません。また、データはすべてのプログラムで同じでなければなりません(同じ理由で - キャッシュ)。これらは、Windowsファイルシステムアーキテクチャの制限事項です。Unixライクなシステムとは異なり、データストリームとしてではなく、ファイルを名前付きデータとして扱います。 –

+0

ありがとう、私の最終目標は、暗号化された他のファイルをシミュレートする仮想ファイルを作成するため、この暗号化されたファイルは非常に大きいです。 – MohsenB

0

はあなたが必要なもののような音の仮想ファイルは何という名前のパイプ http://msdn.microsoft.com/en-us/library/windows/desktop/aa365150(v=vs.85).aspx

+0

サンプルを書くことができますか? – MohsenB

+0

例を示します。xxmCGI.exeは、WebサービスからCGI呼び出しをネームド・パイプをホストするxxmHost.exeプロセスにルーティングします。http://xxm.svn.sourceforge.net/viewvc/xxm/trunk/Delphi/cgi/ xxmCGI.dpr?view =マークアップhttp://xxm.svn.sourceforge.net/viewvc/xxm/trunk/Delphi/cgi/xxmHostRun.pas?view=markup –

関連する問題