次の方法で共有


CBaseFilter.GetState メソッド

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayerIMFMediaEngine、および Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/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;
}

要件

要件
ヘッダー
Amfilter.h (Stream.h を含む)
ライブラリ
Strmbase.lib (小売ビルド);
Strmbasd.lib (デバッグ ビルド)

関連項目

CBaseFilter クラス