次の方法で共有


IAMDevMemoryAllocator::GetDevMemoryObject メソッド (strmif.h)

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

メモIAMDevMemoryAllocator インターフェイスは非推奨です。
 
カスタム アロケーターを使用して集計できるデバイス メモリ制御オブジェクトへの IUnknown インターフェイス ポインターを取得します。

構文

HRESULT GetDevMemoryObject(
  [out] IUnknown **ppUnkInnner,
  [in]  IUnknown *pUnkOuter
);

パラメーター

[out] ppUnkInnner

新しく作成されたコントロール オブジェクトの独自の IUnknown へのポインターのアドレス。 外部オブジェクトが破棄されるときに、この内部 IUnknown インターフェイスを解放する必要があります。 カスタム アロケーターは、このポインターで QueryInterface メソッドを呼び出して 、IAMDevMemoryControl インターフェイスを取得する必要があります。

[in] pUnkOuter

カスタム アロケーター独自の IUnknown インターフェイスへのポインター。 このインターフェイスは、カスタム アロケーター内のデバイス メモリ制御オブジェクトを集計します。

戻り値

HRESULT 値を返します。

解説

オンボード メモリを使用する必要があるレンダラーは、新しいアロケーターを受信したときに IAMDevMemoryControl に対してクエリを実行して、メモリが同じデバイスからのメモリであることを確認するため、デバイス メモリ制御オブジェクトはカスタム アロケーターを使用して集計する必要があります。 これは、ハードウェア フィルターが IMemAllocator オブジェクトを受け取るため、オンボード メモリを使用する場合と使用しない場合があるために発生します。 互換性のあるアロケーターであるかどうかを判断するために、オブジェクトは IAMDevMemoryControl インターフェイスに対してクエリを実行して特定のメソッドにアクセスします。 IAMDevMemoryControl は、IAMDevMemoryControl のメソッドを実装する集計オブジェクトを作成します (これらは多くの場合、ハードウェア固有です)。

外部オブジェクトが集計を実装する方法に関する規則については、COM ドキュメントを参照してください。

要件

   
対象プラットフォーム Windows
ヘッダー strmif.h (Dshow.h を含む)

関連項目

エラーコードと成功コード

IAMDevMemoryAllocator インターフェイス