다음을 통해 공유


VideoDeviceController.TryAcquireExclusiveControl 메서드

정의

지정된 디바이스 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입니다. DeviceInformation 클래스를 사용하여 디바이스 ID를 가져올 수 있습니다.

mode
MediaCaptureDeviceExclusiveControlReleaseMode

전용 컨트롤이 해제되는 조건을 지정하는 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();
        }
    }
}

적용 대상