CBaseFilter.GetState メソッド
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/Video Capture を使用することを強くお勧めします。 Microsoft は、従来の API を使用する既存のコードを、可能であれば新しい API を使用するように書き直すよう提案しています。]
メソッドは GetState
、フィルターの状態 (実行中、停止、または一時停止) を取得します。 このメソッドは 、IMediaFilter::GetState メソッドを 実装します。
構文
HRESULT GetState(
DWORD dwMilliSecsTimeout,
FILTER_STATE *State
);
パラメーター
-
dwMilliSecsTimeout
-
タイムアウト間隔 (ミリ秒単位)。
-
State
-
フィルターの状態を示す、 FILTER_STATE 列挙型のメンバーを受け取る変数へのポインター。
戻り値
S_OKまたはE_POINTERを返します。
解説
基底クラスでは、すべての状態遷移が同期的であり、 dwMilliSecsTimeout パラメーターは無視されます。 派生クラスが非同期状態遷移を実行する場合は、 dwMilliSecsTimeout ミリ秒のタイムアウトで、状態遷移中に待機するようにこのメソッドをオーバーライドする必要があります。
フィルターが一時停止中にデータを配信しない場合は、 メソッドを GetState
オーバーライドして、フィルターが一時停止したときにVFW_S_CANT_CUE値を返します (「 サンプルの配信」を参照してください)。 次に例を示します。
CMyFilter::GetState(DWORD dw, FILTER_STATE *pState)
{
CheckPointer(pState, E_POINTER);
*pState = m_State;
if (m_State == State_Paused)
return VFW_S_CANT_CUE;
else
return S_OK;
}
要件
要件 | 値 |
---|---|
ヘッダー |
|
ライブラリ |
|