次の方法で共有


CBaseAllocator.Alloc メソッド

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]

メソッドは Alloc 、バッファーにメモリを割り当てます。

構文

virtual HRESULT Alloc();

パラメーター

このメソッドにはパラメーターはありません。

戻り値

次のいずれかの HRESULT 値を 返します。

リターン コード 説明
S_FALSE
バッファーの要件は変更されていません。
S_OK
バッファーの要件が変更されました。
VFW_E_SIZENOTSET
バッファー要件が設定されていません。

解説

このメソッドは、 CBaseAllocator::Commit メソッドによって呼び出されます。

基底クラスでは、このメソッドはメモリを割り当てません。 バッファー要件が設定されていない場合はエラーを返し、要件が変更されていない場合はS_FALSE、要件が変更された場合はS_OK。

派生クラスは、実際のメモリ割り当てを実行するには、このメソッドをオーバーライドする必要があります。 通常、派生クラスは次の手順を実行します。

  1. 基底クラスの実装を呼び出して、メモリに本当に割り当てる必要があるかどうかを判断します。
  2. メモリを割り当てます。
  3. 手順 2 のメモリのチャンクを含む CMediaSample オブジェクトを作成します。
  4. CMediaSample オブジェクトを無料のサンプルの一覧に追加します (CBaseAllocator::m_lFree)。

例については、「 CMemAllocator::Alloc」を参照してください。

要件

要件
ヘッダー
Amfilter.h (Stream.h を含む)
ライブラリ
Strmbase.lib (小売ビルド);
Strmbasd.lib (デバッグ ビルド)

関連項目

CBaseAllocator クラス