次の方法で共有


CMemFile::Attach

CMemFileにメモリ ブロックをアタッチするには、この関数を呼び出します。

void Attach(
   BYTE* lpBuffer,
   UINT nBufferSize,
   UINT nGrowBytes = 0 
);

パラメーター

  • lpBuffer
    CMemFileにアタッチするバッファーへのポインター。

  • nBufferSize
    バイトのバッファーのサイズを指定する整数。

  • nGrowBytes
    バイトのメモリ割り当てのインクリメント。

解説

これにより CMemFile は、メモリ ファイルとしてメモリ ブロックを使用します。

nGrowBytes が 0 の場合、CMemFile は nBufferSizeにファイルの長さを設定します。これは CMemFile にアタッチされる前にメモリ ブロックのデータがファイルとして使用されることを意味します。作成されたメモリのファイルは、この方法がないことはできません。

ファイルがないことができないため、を CMemFile ファイルがないようにするためにないように注意してください。たとえば、末尾を超えて書き込みに : CFile[書き込み]CMemFile のオーバーライドを呼び出してしたり nBufferSize長い : CFileSetLength の長さを呼び出さないでください。

nGrowBytes が 0 より大きい場合、CMemFile は、アタッチしたメモリ ブロックのコンテンツを無視します。CFile::WriteCMemFile のオーバーライドを使用して、メモリ ファイルの内容を最初から記述する必要があります。ファイルの末尾を超えて書き込み、CFile::SetLengthCMemFile のオーバーライドを呼び出してファイルにないようにする CMemFile は nGrowBytesずつメモリ割り当てを呼び出します。メモリ割り当てが表示され、は、[アタッチ] に渡されるメモリ ブロックが Allocと互換性のあるメソッドで割り当てられていない場合は失敗します。Allocの既定の実装と互換性のあるため、ランタイム ライブラリ関数 malloccallocのメモリを割り当てる必要があります。

必要条件

ヘッダー : afx.h

参照

関連項目

CMemFile クラス

階層図

CMemFile::CMemFile

CMemFile::Detach

CMemFile::Alloc

CFile::Write

CFile::SetLength