Microsoft DirectX 8.0

IDistributorNotify インターフェイス

IDistributorNotify インターフェイスは、PID にフィルタ グラフの状態の変化を通知するために使用するオプションのインターフェイスである。アプリケーションがこのインターフェイスを使用することはない。

フィルタ グラフの制御と構成の変更を PID に通知したい場合は、フィルタ グラフ マネージャに集成される PID を作成するときに、このインターフェイスを実装する。

PID がフィルタ グラフ マネージャ上でメソッドを使用することはよくある。IDistributorNotify メソッドが呼び出されている間は、フィルタ グラフ マネージャを呼び出す別のコード パスが保持している可能性のあるロックを取得してはならない。これを行うと、デッドロックが発生することがある。

フィルタ グラフ マネージャは、フィルタ グラフ マネージャに集成されるすべての PID に対してこのインターフェイスを問い合わせる。インターフェイスが見つかった場合、フィルタ グラフ マネージャは、各フィルタの IBaseFilter インターフェイス上で PID を呼び出す前に、適切な Run メソッド、Pauseメソッド、または SetSyncSource メソッドを呼び出す。フィルタが追加または削除された場合、あるいは接続が変更された場合、フィルタ グラフ マネージャは必ず NotifyGraphChange メソッドを呼び出す。

vtable 順のメソッド

IUnknown メソッド説明
QueryInterface サポートされているインターフェイスへのポインタを取得する。
AddRef 参照カウントをインクリメントする。
Release 参照カウントをデクリメントする。
IDistributorNotify methods説明
Stop フィルタ グラフが停止状態に移行するときに呼び出される。
Pause フィルタ グラフがポーズ状態に移行するときに呼び出される。
Run フィルタ グラフが実行状態に移行するときに呼び出される。
SetSyncSource 新しいクロックが登録されるときに呼び出される。
NotifyGraphChange フィルタ グラフ内のフィルタのセットまたはその接続が変更されるときに呼び出される。

IDistributorNotify::NotifyGraphChange

IDistributorNotify インターフェイス

フィルタ グラフ内のフィルタのセットまたはその接続が変更されるときに呼び出される。

構文

HRESULT NotifyGraphChange(void);

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
E_NOTIMPLメソッドがサポートされていない。
S_OK または NOERROR成功。

注意

このメソッドは、IFilterGraph::AddFilter メソッド、IFilterGraph::RemoveFilter メソッド、または IFilterGraph::ConnectDirect メソッドが呼び出されたとき、または、たとえば IGraphBuilder::RenderFile など、これらのメソッドの呼び出しにつながるメソッドが呼び出されたときに、必ず呼び出される。

既に削除されているフィルタで、保持されているものがあれば、この時点で必ずそのフィルタに対して Release を使用すること。複数の別々の通知が送信されることがあるため、PID は、パフォーマンス上の理由から、PID が実際にインターフェイスを必要とするまでフィルタを再スキャンしないことがある。ただし、キャッシュされたインターフェイスは、直ちに解放することが重要である。

IDistributorNotify::Pause

IDistributorNotify インターフェイス

フィルタ グラフがポーズ状態に移行するときに呼び出される。

構文

HRESULT Pause(void);

戻り値

移行が完了した場合は、S_OK を返す。それ以外の場合は、次のいずれかの値を返す。
Error移行が失敗した。
S_FALSE移行は完了していないが、エラーは発生しなかった。

注意

このメソッドは、フィルタに通知が行われる前に呼び出される。

IDistributorNotify::Run

IDistributorNotify インターフェイス

フィルタ グラフが実行状態に移行するときに呼び出される。

構文

HRESULT Run(
  REFERENCE_TIME tStart
  );

パラメータ

tStart
すべてのフィルタの IMediaFilter::Run メソッドに渡されるストリームタイム オフセット。

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
E_NOTIMPLメソッドがサポートされていない。
S_OK または NOERROR成功。

注意

このメソッドは、フィルタに通知が行われる前に呼び出される。

IDistributorNotify::SetSyncSource

IDistributorNotify インターフェイス

新しいクロックが登録されるときに呼び出される。

構文

HRESULT SetSyncSource(

  IReferenceClock *pClock
  );

パラメータ

pClock
[in] IReferenceClock インターフェイスへのポインタ。

戻り値

実装に応じた HRESULT 値を返す。HRESULT は、次の標準的な定数の 1 つか、または一覧に示されていないその他の値となる。
E_FAIL失敗。
E_POINTERNull ポインタ引数。
E_INVALIDARG無効な引数。
E_NOTIMPLメソッドがサポートされていない。
S_OK または NOERROR成功。

注意

このメソッドは、フィルタに通知が行われる前に呼び出される。PID がこのメソッド呼び出し以降も pClock パラメータを保持する場合は、必ず pClock パラメータに対して AddRef を使用すること。

IDistributorNotify::Stop

IDistributorNotify インターフェイス

フィルタ グラフが停止状態に移行するときに呼び出される。

構文

HRESULT Stop(void);

戻り値

移行が完了した場合は、S_OK を返す。それ以外の場合は、次のいずれかの値を返す。
Error移行が失敗した。
S_FALSE移行は完了していないが、エラーは発生しなかった。

注意

このメソッドは、フィルタに通知が行われる前に呼び出される。