CBaseAllocator::SetProperties
SetProperties メソッドは、割り当てるバッファの数と各バッファのサイズを指定する。このメソッドは IMemAllocator::SetProperties メソッドを実装する。
構文
HRESULT SetProperties(
ALLOCATOR_PROPERTIES *pRequest,
ALLOCATOR_PROPERTIES *pActual
);
パラメータ
pRequest
バッファ要求を含む ALLOCATOR_PROPERTIES 構造体へのポインタ。
pActual
実際のバッファ プロパティを受け取る ALLOCATOR_PROPERTIES 構造体へのポインタ。
戻り値
次のいずれかの HRESULT 値を返す。
値 | 説明 |
S_OK | 成功。 |
E_POINTER | NULL ポインタ引数。 |
VFW_E_ALREADY_COMMITTED | フィルタがアクティブな間は、割り当てたメモリは変更できない。 |
VFW_E_BADALIGN | 無効なアラインメントが指定された。 |
VFW_E_BUFFERS_OUTSTANDING | 1 つまたは複数のバッファがアクティブである。 |
注意
このメソッドはバッファ要求を指定するが、バッファを割り当てるわけではない。CBaseAllocator::Commit メソッドを呼び出してバッファを割り当てること。
呼び出し元は 2 つの ALLOCATOR_PROPERTIES 構造体を割り当てる。pRequest パラメータには、バッファの数と各バッファのサイズを含む呼び出し元のバッファ要求を指定する。メソッドが戻ったとき、pActual パラメータにはアロケータが設定した実際のバッファ プロパティが格納される。基底クラスでは、メソッドが成功すると仮定した場合、実際のプロパティは必ず要求されたプロパティと一致する。派生クラスではこの動作をオーバーライドする場合もある。
アロケータはコミットしてはならず、未処理のバッファを持つこともできない。基底クラスの場合、アラインメントは 1 でなければならない。CMemAllocator クラスはこの要件をオーバーライドする。
参照