Microsoft DirectX 8.0

CMemAllocator クラス

CMemAllocator class hierarchy

IMemAllocator インターフェイスをサポートするアロケータを実装する。

宣言 : Amfilter.h

このクラスは CBaseAllocator から派生する。アロケータの詳細については、CBaseAllocator のドキュメントを参照すること。

Protected メンバ変数
m_pBufferバッファが入るメモリ ブロックへのポインタ。
Protected メソッド
Freeデコミット操作の間に呼び出される。
ReallyFreeバッファのメモリを解放する。
Allocバッファにメモリを割り当てる。
Public メソッド
CMemAllocatorコンストラクタ メソッド。
~CMemAllocatorデストラクタ メソッド。
CreateInstanceCMemAllocator クラスの新しいインスタンスを作成する。
IMemAllocator メソッド
SetProperties割り当てるべきバッファの数と各バッファのサイズを指定する。

CMemAllocator.m_pBuffer

CMemAllocator クラス

バッファが入るメモリ ブロックへのポインタ。

構文

LPBYTE m_pBuffer; 

注意

サンプル バッファはこのポインタからのオフセットとして計算される。

CMemAllocator::Alloc

CMemAllocator クラス

バッファにメモリを割り当てる。

構文

HRESULT Alloc(void); 

戻り値

以下の表に示される HRESULT 値の 1 つを返す。

S_OK成功。
E_OUTOFMEMORYメモリ不足。
VFW_E_SIZENOTSETバッファ要求がセットされなかった。

注意

このメソッドは CBaseAllocator::Commit メソッドから呼び出される。それは SetProperties メソッドで与えられたバッファ要求に十分な連続的なメモリ ブロックを割り当てる。

CMemAllocator::CMemAllocator

CMemAllocator クラス

コンストラクタ メソッド。

構文

CMemAllocator(
    TCHAR *pName,
    LPUNKNOWN pUnk,
    HRESULT *phr,
);

パラメータ

pName
アロケータの名前が入る文字列へのポインタ。
pUnk
このオブジェクトの所有者へのポインタ。オブジェクトが集成されているなら、集成しているオブジェクトの IUnknown インターフェイスへのポインタを渡す。そうでなければ、このパラメータには NULL を設定する。
phr
メソッドの成功・失敗を示す HRESULT 値を受け取る変数へのポインタ。

CMemAllocator::~CMemAllocator

CMemAllocator クラス

デストラクタ メソッド。

構文

~CMemAllocator(void);

構文

このメソッドは基底クラス デストラクタをオーバーライドし、DecommitReallyFree を呼び出す。

CMemAllocator::CreateInstance

CMemAllocator クラス

CMemAllocator クラスの新しいインスタンスを作成する。

構文

static CUnknown *CreateInstance(
    LPUNKNOWN pUnk,
    HRESULT *phr
);

パラメータ

pUnk
このオブジェクトの所有者へのポインタ。オブジェクトが集成されているなら、集成しているオブジェクトの IUnknown インターフェイスへのポインタを渡す。そうでなければ、このパラメータには NULL を設定する。
phr
メソッドの成功・失敗を示す HRESULT 値を受け取る変数へのポインタ。

戻り値

CUnknown オブジェクトとしてタイプされる 新しい CMemAllocator オブジェクトへのポインタを返す。

CMemAllocator::Free

CMemAllocator クラス

デコミット操作の間に呼び出す。

構文

void Free(void); 

注意

このメソッドはデコミット操作の間に呼び出される純粋仮想メソッド CBaseAllocator::Free をオーバーライドする。CMemAllocator クラスでは、このメソッドは何もしない。メモリはデストラクタ メソッドで ReallyFree メソッドを呼び出すことでフリーになる。

CMemAllocator::ReallyFree

CMemAllocator クラス

バッファのメモリを解放する

構文

void ReallyFree (void); 

注意

CMemAllocator クラスはこのオブジェクトが削除されるまでメモリを保持する。

CMemAllocator::SetProperties

CMemAllocator クラス

割り当てるべきバッファの数と各バッファのサイズを指定する。

構文

HRESULT SetProperties(
    ALLOCATOR_PROPERTIES *pRequest,
    ALLOCATOR_PROPERTIES *pActual
);

パラメータ

pRequest
バッファ要求を入れる ALLOCATOR_PROPERTIES 構造体へのポインタ。
pActual
実際のバッファ プロパティを受け取る ALLOCATOR_PROPERTIES 構造体へのポインタ。

戻り値

以下の表に示される HRESULT 値の 1 つを返す。

S_OK成功。
E_POINTERNULL ポインタ引数。
VFW_E_ALREADY_COMMITTEDフィルタがアクティブな間は割り当てられたメモリを変更することはできない。
VFW_E_BADALIGN不適切な引数が指定された。
VFW_E_BUFFERS_OUTSTANDING1 つあるいはそれ以上のバッファがまだアクティブ。

注意

このメソッドは CBaseAllocator::SetProperties メソッドをオーバーライドする。

ALLOCATOR_PROPERTIES 構造体の cbAlign メンバによって指定されるバッファのアラインメントは 2 の累乗でなければならない。