Win32 API 日本語リファレンス
ホームMedia.DirectShow › IDistributorNotify

IDistributorNotify

COM
IID56a868af-0ad4-11ce-b03a-0020af0ba770継承元IUnknown自前メソッド開始 vtbl3

公式ドキュメント

IDistributorNotify インターフェイスは、フィルターグラフが変更されたときにプラグインディストリビューターへ通知できるようにします。アプリケーションがこのインターフェイスを使用することはありません。

メソッド 5

vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。

vtbl 3 HRESULT Stop()

Stop メソッドは、フィルターグラフが停止状態へ移行するときに呼び出されます。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
S_FALSE
移行は完了していませんが、エラーは発生していません。
S_OK
成功しました。

解説(Remarks)

このメソッドは、フィルターへ通知される前に呼び出されます。

vtbl 4 HRESULT Pause()

Pause メソッドは、フィルターグラフが一時停止状態へ移行するときに呼び出されます。

戻り値

HRESULT 値を返します。取り得る値には次のものがあります。

戻り値 説明
S_FALSE
移行は完了していませんが、エラーは発生していません。
S_OK
成功しました。

解説(Remarks)

このメソッドは、フィルターへ通知される前に呼び出されます。

vtbl 5 HRESULT Run(LONGLONG tStart)

Run メソッドは、フィルターグラフが実行状態へ移行するときに呼び出されます。

tStartLONGLONGin各フィルターの IMediaFilter::Run メソッドへ渡されるストリーム時間のオフセットです。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、フィルターへ通知される前に呼び出されます。

vtbl 6 HRESULT SetSyncSource(IReferenceClock* pClock)

SetSyncSource メソッドは、新しいクロックが登録されたときに呼び出されます。

pClockIReferenceClock*in新しいクロックの IReferenceClock インターフェイスへのポインターです。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、フィルターへ通知される前に呼び出されます。プラグインディストリビューターがこのメソッド呼び出し以降も保持し続ける場合は、必ず pClock パラメーターに対して AddRef を呼び出してください。

vtbl 7 HRESULT NotifyGraphChange()

NotifyGraphChange メソッドは、フィルターグラフ内のフィルターの集合が変化したとき、またはいずれかのピン接続が変化したときに呼び出されます。

戻り値

HRESULT 値を返します。

解説(Remarks)

このメソッドは、IFilterGraph::AddFilterIFilterGraph::RemoveFilter、または IFilterGraph::ConnectDirect メソッドが呼び出されるたびに、あるいはこれらのいずれかの呼び出しにつながるメソッド(IGraphBuilder::RenderFile など)が呼び出されるたびに呼び出されます。

この時点で削除された、保持中のフィルターに対しては必ず Release を呼び出してください。パフォーマンス上の理由から、複数の通知が個別に送信される可能性があるため、PID は実際にインターフェイスが必要になるまでフィルターの再スキャンを行わないことを選択する場合があります。ただし、キャッシュしているインターフェイスは直ちに解放することが重要です。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

HSP用 COM定義

#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"

#define global IID_IDistributorNotify "{56A868AF-0AD4-11CE-B03A-0020AF0BA770}"
#usecom global IDistributorNotify IID_IDistributorNotify "{}"
#comfunc global IDistributorNotify_Stop               3
#comfunc global IDistributorNotify_Pause              4
#comfunc global IDistributorNotify_Run                5 int64
#comfunc global IDistributorNotify_SetSyncSource      6 sptr
#comfunc global IDistributorNotify_NotifyGraphChange  7
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。
; ※ハンドル/void*等の不透明ポインタは IronHSP では intptr 指定が可能。