私はしばらくの間、WinAPIのドキュメントを読んできましたが、私は答えを見つけることができないようです。私が達成しようとしているのは、プログラムを開くことができ、ディスク上の通常のファイルのように動作するファイル名をプログラムに与えることです。しかし、私はこのオブジェクトを記憶に残しておきたい。名前付きパイプ(または何か他のもの)をメモリ内のファイルとして使用する
名前付きパイプを使用しようとしましたが、いくつかの状況で動作しますが、必ずしもそうではありません。名前付きパイプを作成し、それを子プロセスに通常のファイルとして渡します。プロセスが存在するとき、私はパイプからデータを収集します。
program.exe \\.\pipe\input_pipe
しかし、いくつかの制約に直面しています。そのうちの1つは、彼らが求めることができないということです。 2つ目の制限は、適切なアクセス権でそれらを開く必要があることです。そして私が見つけた3つ目は、もう一方の端が開いている前に、デュプレックスパイプにデータをあらかじめ置くことができないことです。名前付きパイプの制限を克服する方法はありますか?
CreateFile
で開き、次にReadFile
とWriteFile
でアクセスできるオブジェクトがあります。これまで私が見る唯一の解決策は、ファイルシステムドライバを作成し、すべての機能を自分で実装することです。
ちょうど私が私が実行している子プログラムを変更することはできませんことを指摘したかったことを明確にします。主なアイデアは、そのプログラムに普通のファイルだと思うものを与えることです。
更新:外部ソフトウェアのインストールが必要なソリューションは探していません。
なぜあなたはそれを記憶に入れたいですか? –
@ Len:2つの理由があります。私は誰もこのファイルを見ることができないようにしたい。 – detunized
perfの理由は偽です。 Windowsでは、メモリを割り当てるとディスクを割り当てます。ページングファイル。ディスクに書き込むことは決してありません。あなたはRAMに書き込みます。そしてそれが十分に速く読まれれば、RAMからも読み込まれます。ファイルシステムキャッシュ。ほとんどの32ビットマシンでは約1ギガバイト、64ビットマシンではさらに多くのものがあります。 –