Microsoft DirectX 8.0

IAMDevMemoryControl インターフェイス

  このインターフェイスは古くなっている。それは AVI ファイルのハードウェア メモリへの直接読み込を要求するある古いハードウェア デコーダをサポートするために定義された。このインターフェイスによって PVI パーサーはダウンストリーム フィルタからメモリを割り当てることができるが、それ自身のアロケータを依然として提供する。新しいデバイスがこのインターフェイスをサポートする必要はない。

デバイス メモリ制御オブジェクトは IAMDevMemoryControl をサポートする。このオブジェクトは接続に使われる IMemAllocator オブジェクトで集成されている。通常、フィルタは IAMDevMemoryAllocator::GetDevMemoryObject メソッドを呼び出して、このインターフェイスへのポインタを取得する。

ピンにおいてメモリの割り当てを詳細に制御する必要がある場合は、IAMDevMemoryAllocator インターフェイスと共にこのインターフェイスを実装する。

このインターフェイスを使用すると、メモリ アロケータへのデータの書き込み終了の同期をとり、オンボード メモリ アロケータのデバイス ID を取得できる。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IAMDevMemoryControl メソッド説明
QueryWriteSync アロケータがサポートしているメモリが、WriteSync メソッドの使用を必要とするかどうかを確認する。
WriteSync 指定のアロケータ リージョンに書き込まれているデータがメモリに完全に書き込まれたら返ることによって、書き込み処理の終了の同期をとる。
GetDevId オンボード メモリ アロケータのデバイス ID を取得する。

IAMDevMemoryControl::GetDevId

IAMDevMemoryControl インターフェイス

オンボード メモリ アロケータのデバイス ID を取得する。

構文

HRESULT GetDevId(
  DWORD *pdwDevId
  );

パラメータ

pdwDevId
[out] デバイス ID へのポインタ。

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。

注意

このメソッドは、一意な ID を取得する。ハードウェア フィルタはこの ID を使用して、渡された指定のアロケータが自身のオンボード メモリを使用していることを確認できる。このような確認が行われるのは、複数のオンボード メモリが存在するからである。ID は、CoCreateInstance を使用してアロケータ オブジェクトを作成するときに使用された ID と同じものである。ほかのフィルタがオンボード メモリを使用するには、オンボード メモリ アロケータと同じデバイス ID を持つ必要がある。

IAMDevMemoryControl::QueryWriteSync

IAMDevMemoryControl インターフェイス

アロケータがサポートしているメモリが、IAMDevMemoryControl::WriteSync メソッドの使用を必要とするかどうかを調べる。

構文

HRESULT QueryWriteSync(void);

戻り値

メソッドが必要な場合は S_OK を返す。それ以外の場合は S_FALSE を返す。

注意

WriteSync を呼び出して書き込み終了の同期をとる必要がないオンボード メモリもある。このメソッドは、その呼び出しが必要かどうかを調べるために使用する。

IAMDevMemoryControl::WriteSync

IAMDevMemoryControl インターフェイス

書き込み終了の同期をとるために使用する。このメソッドは、特定のアロケータ リージョンに書き込まれているデータが、メモリに完全に書き込まれると返される。

構文

HRESULT WriteSync(void);

戻り値

インターフェイスの実装に応じた HRESULT 値を返す。一般的な戻り値は次のとおりである。
E_FAILデータが書き込まれたことをこのメソッドが確認する前にタイムアウトが発生した。
S_OK データがメモリに書き込まれた。
VFW_E_NOT_COMMITTED アロケータが IMemAllocator::Commit メソッドを呼び出していない。

注意

このメソッドでは、割り当て済みのメモリへのこれまでのすべての書き込み処理が、正常に終了していることが前提である。以降のメモリ書き込み処理では、WriteSync を新たに呼び出す必要がある。

このメソッドは実装によってそれぞれ異なり、メモリへの書き込み処理の同期をとるために、必要に応じて使用される。オンボード メモリのドライバが実装を提供する。

IAMDevMemoryControl インターフェイスは、通常、PCI (Peripheral Component Interconnect) ブリッジを介してアクセスされるメモリ上にある。PCI はパーソナル コンピュータ用のローカル バスで、プロセッサと周辺機器との間の高速なデータ パスを提供する。PCI ブリッジに接続しているメモリは、やはり PCI ブリッジに接続している別のデバイスがメモリにアクセスしてくる場合、メモリ書き込み処理の終了後に同期をとる必要がある。これは、メモリにアクセスするホストは PCI ブリッジの FIFO (先入れ先出し) フォーマットでバッファリングされ、書き込みが完了してからブリッジが実際にデータを書き込むことを前提にしているためである。IAMDevMemoryControl::WriteSync メソッドが呼び出されない場合は、SCSI コントローラなど、ブリッジに接続しているデバイスが、書き込みが完了する前にメモリを読み取ることがある。