VideoDeviceController.TryAcquireExclusiveControl メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したデバイス ID を使用してカメラの排他制御を要求します。
public:
virtual bool TryAcquireExclusiveControl(Platform::String ^ deviceId, MediaCaptureDeviceExclusiveControlReleaseMode mode) = TryAcquireExclusiveControl;
bool TryAcquireExclusiveControl(winrt::hstring const& deviceId, MediaCaptureDeviceExclusiveControlReleaseMode const& mode);
public bool TryAcquireExclusiveControl(string deviceId, MediaCaptureDeviceExclusiveControlReleaseMode mode);
function tryAcquireExclusiveControl(deviceId, mode)
Public Function TryAcquireExclusiveControl (deviceId As String, mode As MediaCaptureDeviceExclusiveControlReleaseMode) As Boolean
パラメーター
- deviceId
-
String
Platform::String
winrt::hstring
排他制御が要求されるカメラのデバイス ID。 デバイス ID は、 DeviceInformation クラスで取得できます。
排他コントロールが解放される条件を指定する MediaCaptureDeviceExclusiveControlReleaseMode 列挙の値。
戻り値
Boolean
bool
True の 場合は、カメラの排他的な制御が取得されました。それ以外の場合は false。
Windows の要件
デバイス ファミリ |
Windows 11 Insider Preview (10.0.23504.0 で導入)
|
API contract |
Windows.Foundation.UniversalApiContract (v15.0 で導入)
|
例
この例では、排他制御でカメラを使用するアプリケーションで、キャプチャの開始前にカメラ構成が設定され、その前に排他コントロール ロックを取得することで、このカメラにアクセスできる別のアプリケーションによって変更されないようにする方法を示します。
private static System.Threading.ManualResetEvent _exclusiveLockAcquire = new System.Threading.ManualResetEvent(false);
public static void RecordVideo()
{
MediaCapture mediacapture = new MediaCapture();
await mediacapture.InitializeAsync();
mediacapture.CaptureDeviceExclusiveControlStatusChanged +=
Mediacapture_CaptureDeviceExclusiveControlStatusChanged;
_exclusiveLockAcquire.WaitOne();
_exclusiveLockAcquire.Reset();
// configure camera - blocking other application from changing the configuration.
// record video
}
private static void Mediacapture_CaptureDeviceExclusiveControlStatusChanged(MediaCapture sender, MediaCaptureDeviceExclusiveControlStatusChangedEventArgs args)
{
if (args.Status == MediaCaptureDeviceExclusiveControlStatus.ExclusiveControlAvailable)
{
if (sender.VideoDeviceController().TryAcquireExclusiveControl(
args.DeviceId(),
MediaCaptureDeviceExclusiveControlReleaseMode.OnAllStreamsStopped))
{
_exclusiveLockAcquire.Set();
}
}
}