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입니다. DeviceInformation 클래스를 사용하여 디바이스 ID를 가져올 수 있습니다.
전용 컨트롤이 해제되는 조건을 지정하는 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();
}
}
}