次の方法で共有


CMemFile::Attach

更新 : 2007 年 11 月

CMemFile にメモリ ブロックを結び付けます。

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

パラメータ

  • lpBuffer
    CMemFile に結び付けるバッファへのポインタ。

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

  • nGrowBytes
    メモリ割り付けの増加分を指定するバイト数。

解説

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

nGrowBytes が 0 のときは、CMemFile のファイル長を nBufferSize に設定します。つまり、CMemFile を結び付ける前にメモリ ブロックにあったデータをファイルとして使います。この方法で作成されたメモリ ファイルは拡張できません。

ファイルが拡張できないので、CMemFile がファイルを拡張する操作をしないように注意してください。たとえば、CFile:WriteCMemFile でオーバーライドして呼び出しファイルの終端を越えて書き込んだり、CFile:SetLength を呼び出さずに nBufferSize よりも長いサイズを設定しないでください。

nGrowBytes が 1 以上の場合は、CMemFile は結び付けられたメモリの内容を無視します。CMemFile でオーバーライドした CFile::Write を使って、新規にメモリ ファイルの内容を書き込む必要があります。ファイルの終端を越えて書き込んだり、CMemFile でオーバーライドした CFile::SetLength を呼び出してファイルを拡張しようとすると、CMemFile は nGrowBytes で指定された単位でメモリを割り当て、拡張します。Attach に渡したメモリ ブロックが Alloc と互換性のある手法で割り当てられないと、メモリ割り当てによる拡張は失敗します。Alloc の既定の実装と互換性をとるには、ランタイム ライブラリ関数の malloc または calloc でメモリを割り当てます。

必要条件

ヘッダー : afx.h

参照

参照

CMemFile クラス

階層図

CMemFile::CMemFile

CMemFile::Detach

CMemFile::Alloc

CFile::Write

CFile::SetLength

その他の技術情報

CMemFile のメンバ