다음을 통해 공유


MFCreateVirtualCamera 함수(mfvirtualcamera.h)

호출자가 시스템에서 가상 카메라를 등록, 등록 취소 또는 제거하는 데 사용할 수 있는 가상 카메라 개체를 만듭니다.

구문

HRESULT MFCreateVirtualCamera(
  MFVirtualCameraType     type,
  MFVirtualCameraLifetime lifetime,
  MFVirtualCameraAccess   access,
  LPCWSTR                 friendlyName,
  LPCWSTR                 sourceId,
  const GUID              *categories,
  ULONG                   categoryCount,
  IMFVirtualCamera        **virtualCamera
);

매개 변수

type

가상 카메라 유형을 지정하는 MFVirtualCameraType 열거형의 멤버입니다. 현재 릴리스에서는 MFVirtualCameraType_SoftwareCameraSource 만 지원됩니다.

lifetime

카메라의 수명을 지정하는 MFVirtualCameraLifetime 열거형의 멤버입니다. MFVirtualCameraLifetime_Session 지정한 경우 반환된 IMFVirtualCamera 개체가 삭제되거나 IMFVirtualCamera::Shutdown이 호출되면 가상 카메라는 더 이상 디바이스에서 열거 가능하거나 활성화할 수 없습니다. 가상 카메라가 세션 간 및/또는 다시 부팅을 통해 유지되도록 하려면 MFVirtualCameraLifetime_System 값을 지정해야 합니다.

access

만든 가상 카메라의 액세스 scope 지정하는 MFVirtualCameraAccess 열거형의 멤버입니다. MFVirtualCameraAccess_CurrentUser 지정한 경우 가상 카메라는 MFCreateVirtualCamera라는 사용자 계정에 대해서만 만들어집니다. MFVirtualCameraAccess_AllUsers 지정하면 디바이스의 모든 사용자가 가상 카메라를 열거하거나 활성화할 수 있습니다. MFVirtualCameraAccess_AllUsers 사용하여 가상 카메라를 만들려면 MFCreateVirtualCamera 호출자에게 관리자 권한이 있어야 합니다.

friendlyName

생성된 가상 카메라에 대한 null로 종료되고 사용자가 읽을 수 있는 유니코드 문자열 식별 이름입니다. 파이프라인은 제공된 식별 이름에 "Windows 가상 카메라"를 자동으로 추가하여 최종 사용자가 친숙한 이름에 따라 가상 카메라를 실제 카메라와 구분할 수 있도록 합니다. 이 매개 변수는 nullptr이 아니어야 합니다.

sourceId

이 가상 카메라에 대해 활성화할 사용자 지정 미디어 원본의 고유한 CLSID입니다. 문자열은 "{CLSID}" 형식이어야 합니다. 이 매개 변수는 nullptr이 아니어야 합니다.

categories

가상 카메라가 등록된 디바이스 인터페이스 범주의 선택적 목록입니다. 관리자가 아닌 사용자가 MFCreateVirtualCamera를 호출하는 경우 범주는 다음 값의 하위 집합이어야 합니다.

nullptr을 지정하면 가상 카메라가 KSCATEGORY_VIDEO_CAMERA, KSCATEGORY_VIDEO 및 KSCATEGORY_CAPTURE 범주에 등록됩니다.

categoryCount

categories 매개 변수에 제공된 범주 수입니다. 범주가 nullptr인 경우 categoryCount는 0이어야 합니다.

virtualCamera

새로 만든 IMFVirtualCamera를 수신하는 출력 매개 변수입니다. 이 매개 변수는 nullptr이 아니어야 합니다.

반환 값

다음 값을 포함하지만 이에 국한되지 않는 HRESULT 값을 반환합니다.

오류 코드 설명
S_OK 성공
E_INVALIDARG 입력 매개 변수가 잘못되었습니다.
E_POINTER virtualCamera 매개 변수는 nullptr입니다.
E_ACCESSDENIED 개인 정보 제어는 앱, 사용자 또는 시스템의 카메라에 대한 액세스를 거부하도록 설정됩니다. 또는 호출자가 관리자가 아니며 제공된 매개 변수는 관리자 액세스에만 유효합니다.

설명

MFCreateVirtualCamera에서 만든 가상 카메라는 이 API에 전달된 매개 변수에서 키가 지정됩니다. 동일한 매개 변수를 유지하면 애플리케이션에서 동일한 가상 카메라를 다시 열 수 있습니다. 처음 호출될 때 결과 IMFVirtualCamera에는 가상 카메라의 새 instance 만들기 위해 호출자가 수정하거나 업데이트할 수 있는 구성 정보 집합이 포함됩니다. 후속 호출에서 이 함수에 동일한 매개 변수를 사용하는 경우 IMFVirtualCamera::Start 또는 IMFVirtualCamera::Stop 메서드가 호출될 때 결과 IMFVirtualCamera가 기존 가상 카메라를 엽니다. IMFVirtualCamera::Remove를 호출하면 기존 가상 카메라가 제거됩니다. 액세스 매개 변수에 대해 MFVirtualCameraAccess_CurrentUser 지정한 경우 각 사용자 계정은 고유한 가상 카메라를 가져옵니다.

UWP 및 패키지된 애플리케이션은 이 API를 사용하려면 매니페스트에서 웹캠 디바이스 기능을 선언해야 합니다. 또한 이 API는 웹캠 개인 정보 보호 제어의 적용을 받으므로 개인 정보 보호가 액세스를 거부하도록 설정된 경우 이 API는 E_ACCESSDENIED 실패합니다.

참고

UWP 및 패키지된 앱은 UI 스레드에서 MFCreateVirtualCamera 를 호출해서는 안됩니다. 이렇게 하면 웹캠 액세스 동의 대화 상자에 대한 기능 액세스 관리자 검사 차단되므로 교착 상태가 발생할 수 있습니다.

요구 사항

   
지원되는 최소 클라이언트 Windows Build 22000
머리글 mfvirtualcamera.h
라이브러리 mfsensorgroup.lib
DLL mfsensorgroup.dll

참고 항목

IMFVirtualCameraMFVirtualCameraTypeMFVirtualCameraLifetimeMFVirtualCameraAccess