2 つの Windows スタンドアロン GUI アプリケーションがあるとします。最初の GUI でコマンド ボタンを押すたびに、他の GUI がボタンのステータスを取得し、その中のテキスト ボックスに ON または OFF を表示する必要があります。共有メモリを使用してこれを行うにはどうすればよいですか。
PS: VC++ 2008 を使用しています。
2 つの Windows スタンドアロン GUI アプリケーションがあるとします。最初の GUI でコマンド ボタンを押すたびに、他の GUI がボタンのステータスを取得し、その中のテキスト ボックスに ON または OFF を表示する必要があります。共有メモリを使用してこれを行うにはどうすればよいですか。
PS: VC++ 2008 を使用しています。
見てみましょう: http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551%28v=vs.85%29.aspx
プロセス 1 で:
CreateFileMapping()
: 共有メモリ ブロックがまだ存在しない場合は、最後のパラメーターで指定された名前で共有メモリ ブロックを作成し、成功した場合はハンドル (ポインターと呼ぶこともできます) を返します。
MapViewOfFile()
: この共有ブロックをプロセス アドレス空間にマップ (インクルード) し、ハンドルを返します (ここでもポインタと言えます)。
MapViewOfFile() によって返されるこのポインターを使用すると、その共有ブロックにアクセスできます。
プロセス 2 で:
OpenFileMapping()
: CreateFileMapping() によって共有メモリ ブロックが正常に作成された場合は、同じ名前 (共有メモリ ブロックの作成に使用された名前) で使用できます。
UnmapViewOfFile()
: マップを解除します (そのプロセス アドレス空間から共有メモリ ブロックを削除できます)。共有メモリの使用 (アクセス、変更など) が終了したら、この関数を呼び出します。
Closehandle()
: 最後にプロセスから共有メモリ ブロックをデタッチするには、引数、OpenFileMapping() または CreateFileMapping() によって返されるハンドルを指定してこれを呼び出します。