次の方法で共有


IMediaEvent::GetEventHandle メソッド (control.h)

[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayerIMFMediaEngineAudio/Video Capture を使用することを強くお勧めします。 Microsoft は、レガシ API を使用する既存のコードを、可能であれば新しい API を使用するように書き換えるよう提案しています。]

メソッドは GetEventHandle 、キューにイベント通知が含まれている間、シグナル状態のままの手動リセット イベントへのハンドルを取得します。

構文

HRESULT GetEventHandle(
  [out] OAEVENT *hEvent
);

パラメーター

[out] hEvent

イベント ハンドルを受け取る変数へのポインター。

戻り値

S_OK を返します。

解説

Filter Graph Manager は、イベント キューの状態を反映する手動リセット イベントを保持します。 キューにイベント通知が含まれている場合は、手動リセット イベントが通知されます。 キューが空の場合、 IMediaEvent::GetEvent メソッドはイベントをリセットします。

アプリケーションは、このイベントを使用してキューの状態を判断できます。 最初に を呼び出 GetEventHandle して、 イベントのハンドルを取得します。 WaitForSingleObject などの関数を使用して、イベントが通知されるまで待ちます。 イベントが通知されたら、 IMediaEvent::GetEvent メソッドを呼び出して、キューから次のイベント通知を取得します。 Filter Graph Manager は、キューが空になるまでイベントシグナルを保持します。その後、イベントがリセットされます。

イベント ハンドルはフィルター グラフによって内部的に使用されるため、このメソッドによって返されるイベント ハンドルを閉じないでください。 また、フィルター グラフ マネージャーの破棄後にハンドルが無効になるため、フィルター グラフ マネージャーを解放した後はハンドルを使用しないでください。 (このエラーを回避するには、 DuplicateHandle を呼び出してハンドルを複製し、元のハンドルの代わりに複製を使用することをお勧めします。完了したら、重複するハンドルを閉じます)。

オートメーションの互換性のために、このメソッドは OAEVENT 型へのポインターを受け取ります。 C++ では、 HANDLE 型の変数を宣言し、次のように OAEVENT ポインターをキャストします。


HANDLE hEvent;
GetEventHandle( (OAEVENT*) &hEvent );

アプリケーションがイベント キューを監視するもう 1 つの方法は、 IMediaEventEx::SetNotifyWindow メソッドを呼び出すことです。

要件

要件
サポートされている最小のクライアント Windows 2000 Professional [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows 2000 Server [デスクトップ アプリのみ]
対象プラットフォーム Windows
ヘッダー control.h (Dshow.h を含む)
Library Strmiids.lib

こちらもご覧ください

エラーコードと成功コード

IMediaEvent インターフェイス