次の方法で共有


CSharedFile クラス

共有メモリ ファイルをサポートする CMemFile 派生クラス。

構文

class CSharedFile : public CMemFile

メンバー

パブリック コンストラクター

名前 説明
CSharedFile::CSharedFile CSharedFile オブジェクトを構築します。

パブリック メソッド

名前 説明
CSharedFile::D etach 共有メモリ ファイルを閉じ、そのメモリ ブロックのハンドルを返します。
CSharedFile::SetHandle 共有メモリ ファイルをメモリ ブロックにアタッチします。

解説

メモリ ファイルはディスク ファイルと同様に動作します。 違いは、メモリ ファイルがディスクではなく RAM に格納されていることです。 メモリ ファイルは、高速一時ストレージ、または独立したプロセス間で生バイトまたはシリアル化されたオブジェクトを転送する場合に便利です。

共有メモリ ファイルは、そのメモリ内の他のメモリ ファイルとは異なり、 GlobalAlloc Windows 関数を使用して割り当てられます。 CSharedFile クラスは、グローバルに割り当てられたメモリ ブロック (GlobalAlloc を使用して作成) にデータを格納します。このメモリ ブロックは、DDE、クリップボード、またはその他の OLE/COM の均一なデータ転送操作 (たとえば、IDataObject を使用) を使用して共有できます。

GlobalAlloc は、メモリへのポインターではなく HGLOBAL ハンドルを返します ( malloc によって返されるポインターなど)。 HGLOBAL ハンドルは、特定のアプリケーションで必要です。 たとえば、クリップボードにデータを配置するには、HGLOBAL ハンドルが必要です。

CSharedFile ではメモリ マップファイルは使用されません。また、プロセス間でデータを直接共有することはできません。

CSharedFile オブジェクトは、独自のメモリを自動的に割り当てることができます。 または、 CSharedFile オブジェクトに独自のメモリ ブロックをアタッチするには、 CSharedFile::SetHandle を呼び出します。 どちらの場合も、メモリ ファイルを自動的に拡張するためのメモリは、nGrowBytesが 0 でない場合は、nGrowBytes サイズの増分で割り当てられます。

詳細については、「Run-Time ライブラリ リファレンスの「MFC および File Handling のFiles」を参照してください。

継承階層

CObject

CFile

CMemFile

CSharedFile

要件

Header: afxadv.h

CSharedFile::CSharedFile

CSharedFile オブジェクトを構築し、そのオブジェクトにメモリを割り当てます。

CSharedFile(
    UINT nAllocFlags = GMEM_DDESHARE | GMEM_MOVEABLE,
    UINT nGrowBytes = 4096);

パラメーター

nAllocFlags
メモリの割り当て方法を示すフラグ。 有効なフラグ値の一覧については、 GlobalAlloc を参照してください。

nGrowBytes
メモリ割り当ての増分 (バイト単位)。

CSharedFile::D etach

この関数を呼び出してメモリ ファイルを閉じ、メモリ ブロックからデタッチします。

HGLOBAL Detach();

戻り値

メモリ ファイルの内容を格納しているメモリ ブロックのハンドル。

解説

SetHandleを呼び出して、Detachによって返されるハンドルを使用して、再度開くことができます。

CSharedFile::SetHandle

グローバル メモリのブロックを CSharedFile オブジェクトにアタッチするには、この関数を呼び出します。

void SetHandle(
    HGLOBAL hGlobalMemory,
    BOOL bAllowGrow = TRUE);

パラメーター

hGlobalMemory
CSharedFileにアタッチするグローバル メモリへのハンドル。

bAllowGrow
メモリ ブロックの拡張を許可するかどうかを指定します。

解説

bAllowGrow が 0 以外の場合、メモリ ブロックのサイズは必要に応じて大きくなります。たとえば、メモリ ブロックのサイズよりも多くのバイトをファイルに書き込もうとするとします。

関連項目

CMemFile クラス
階層図
CMemFile クラス