IMediaEvent::GetEventHandle メソッド (control.h)
[このページに関連付けられている機能 DirectShow は、従来の機能です。 MediaPlayer、IMFMediaEngine、Media Foundation のオーディオ/ビデオ キャプチャに置き換わりました。 これらの機能は、Windows 10とWindows 11用に最適化されています。 新しいコードでは、可能であれば、DirectShow ではなく Media Foundation で MediaPlayer、IMFMediaEngine、Audio/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 |