IMFCameraOcclusionStateMonitor
COM公式ドキュメント
カメラデバイスのオクルージョン(遮蔽)状態を監視します。
解説(Remarks)
多くのデバイスには、プライバシー保護のためにユーザーがカメラデバイスを遮蔽できる仕組み(機械式シャッターなど)が備わっています。また、特定の姿勢でカメラが遮蔽されるデバイスもあります。このインターフェイスを使用すると、アプリケーションはカメラのオクルージョン状態が変化したときに通知を受け取ることができ、カメラが遮蔽されている場合にカメラキャプチャの動作を無効化または変更できます。なお、一部のデバイスには機械式のカメラシャッターがあってもシャッター状態を検知または報告する仕組みがない場合があり、そのようなデバイスではカメラオクルージョン API がオクルージョン情報を提供できません。また、専用のカメラシャッターを持たないデバイスであっても、デバイスのふたが開いているか閉じているかに基づいてカメラのオクルージョン状態を更新するものもあります。
このインターフェイスのインスタンスは、MFCreateCameraOcclusionStateMonitor を呼び出し、IMFCameraOcclusionStateReportCallback の実装を渡すことで作成します。モニターの開始後、IMFCameraOcclusionStateReportCallback::OnOcclusionStateReport コールバックに IMFCameraOcclusionStateReport のインスタンスが渡されます。このインスタンスで GetOcclusionState を呼び出すと、新しいカメラオクルージョン状態を取得できます。
メソッド 3
vtbl = vtable インデックス(0始まり)。HSP等からCOMメソッドをインデックス指定で呼ぶ際に使用します。0〜2 は IUnknown。
カメラオクルージョン状態モニターを開始します。
戻り値
次の値を含む(ただしこれらに限定されない)HRESULT 値を返します。
| Error code | Description |
|---|---|
| S_OK | 成功しました |
カメラオクルージョン状態モニターを停止します。
戻り値
次の値を含む(ただしこれらに限定されない)HRESULT 値を返します。
| Error code | Description |
|---|---|
| S_OK | 成功しました |
現在のデバイスがサポートするオクルージョン状態を取得します。
戻り値
MFCameraOcclusionState 列挙体の値をビット単位の OR で組み合わせた DWORD を返します。
解説(Remarks)
現在のオクルージョン状態を取得するには、IMFCameraOcclusionStateReportCallback::OnOcclusionStateReport コールバックに渡された IMFCameraOcclusionStateReport で IMFCameraOcclusionStateReport::GetOcclusionState メソッドを呼び出します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
HSP用 COM定義
#usecom / #comfunc によるHSPのCOM呼び出し定義。数字は vtbl インデックス(0始まり)。クラスIDが無い場合 #usecom の末尾は "{}"、ある場合は "{CLSID}"。
#define global IID_IMFCameraOcclusionStateMonitor "{CC692F46-C697-47E2-A72D-7B064617749B}"
#usecom global IMFCameraOcclusionStateMonitor IID_IMFCameraOcclusionStateMonitor "{}"
#comfunc global IMFCameraOcclusionStateMonitor_Start 3
#comfunc global IMFCameraOcclusionStateMonitor_Stop 4
#comfunc global IMFCameraOcclusionStateMonitor_GetSupportedStates 5
; ※数字は vtbl インデックス(0始まり)。0/1/2 は IUnknown(QueryInterface/AddRef/Release)。
; ※このインターフェースは直接 CoCreateInstance するクラスIDが無いため "{}"(他メソッド/アクティベーションで取得)。