2011-10-31 6 views
0

デザインごとに複数のプロセス間でメモリデータを共有しています。api "CreateFileMapping"を使用して作成した後、共有メモリサイズを増やすことはできますか?

アプリケーションごとに、複数のメモリファイルが必要です。各プロセスには1つのメモリマップファイルが必要です。しかし、いくつかのプロセスでは、10KB以下になるようなメモリマップファイルは必要ありません。いくつかのプロセスでは1MB以上のメモリファイルが必要でした。一度プロセスのタスクが終了すると、私は同じメモリマップファイルを他のプロセスに使用します。

このシナリオでは、プロセスリクエストに基づいてメモリマップファイルサイズを増やす方法を説明します。一度私はCreateFileMappingを使用してメモリマップされたファイルを作成します。どのように私はメモリのサイズを増やすことができますか、またはサイズを減らす。

また、このメモリマップファイルを閉じることなくこのデータを消去する方法については、別のサブ質問があります。誰でも知っている場合は、 を共有してください。

ありがとうございます。 hara

答えて

0

いいえ - 作成後にマッピングを増やすことはできません(http://msdn.microsoft.com/en-us/library/windows/desktop/aa366537%28v=vs.85%29.aspxを参照)。

あなたが記述するサイズは問題ないとは言えないので、私はちょうど1つの "十分な大きさ"と一緒に行きます。 (memsetにちょうどWindowsのAPIマクロのマッピングである)あなたが例memset()に使用できるデータ(http://msdn.microsoft.com/en-us/library/1fdeehz6.aspxまたはhttp://www.cplusplus.com/reference/clibrary/cstring/memset/を参照)またはZeroMemory()をきれいにする

+0

多くのおかげで私の問題を探して、答えを共有しました。サイズは今のところ問題ではないと言ったように。しかし、ユーザーが100プロセスを実行したい場合、各プロセスは約10MBを必要とする場合、私は困っているでしょう。それが私がダイナミックなソリューションを探している理由です。 zeromemoryを提案してくれてありがとう、私はそれを試みます。 – Haranadh

0

これは可能です。 NtExtendSectionを参照してください。

+0

文書化されていないため、使用することは推奨できません。 –

+0

@Roman R .:良い点。また、ページファイルでバックアップされたセクションでは機能しないことに注意してください。 – wj32

+0

お互いに感謝します。 :) – Haranadh

関連する問題