次の方法で共有


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 クラスはこの要件をオーバーライドする。

参照