Función MFCreateVirtualCamera (mfvirtualcamera.h)

Crea un objeto de cámara virtual que el autor de la llamada puede usar para registrar, anular el registro o quitar la cámara virtual del sistema.

Sintaxis

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

Parámetros

type

Miembro de la enumeración MFVirtualCameraType que especifica el tipo de cámara virtual. En la versión actual, solo se admite MFVirtualCameraType_SoftwareCameraSource .

lifetime

Miembro de la enumeración MFVirtualCameraLifetime que especifica la duración de la cámara. Si se especifica MFVirtualCameraLifetime_Session , cuando se elimina el objeto IMFVirtualCamera devuelto o se llama a IMFVirtualCamera::Shutdown , la cámara virtual ya no será enumerable ni activable en el dispositivo. Si desea que la cámara virtual persista entre sesiones o reinicios, debe especificar el valor MFVirtualCameraLifetime_System.

access

Miembro de la enumeración MFVirtualCameraAccess que especifica el ámbito de acceso de la cámara virtual creada. Si se especifica MFVirtualCameraAccess_CurrentUser , la cámara virtual solo se crea para la cuenta de usuario que llamó a MFCreateVirtualCamera. Si se especifica MFVirtualCameraAccess_AllUsers , todos los usuarios del dispositivo podrán enumerar o activar la cámara virtual. Para crear una cámara virtual con MFVirtualCameraAccess_AllUsers, el autor de la llamada de MFCreateVirtualCamera debe tener permisos de administrador.

friendlyName

Nombre descriptivo de cadena Unicode terminada en null y legible por el usuario para la cámara virtual creada. La canalización anexará automáticamente "Cámara virtual de Windows" al nombre descriptivo proporcionado para garantizar que los usuarios finales puedan distinguir las cámaras virtuales de las cámaras físicas en función del nombre descriptivo. Este parámetro no debe ser nullptr.

sourceId

ClSID único del origen multimedia personalizado que se va a activar para esta cámara virtual. La cadena debe tener el formato "{CLSID}". Este parámetro no debe ser nullptr.

categories

Lista opcional de categorías de interfaz de dispositivo en las que se registra la cámara virtual. Si un usuario que no es administrador invoca MFCreateVirtualCamera, las categorías deben ser un subconjunto de los valores siguientes:

Si se especifica nullptr, la cámara virtual se registra en las categorías KSCATEGORY_VIDEO_CAMERA, KSCATEGORY_VIDEO y KSCATEGORY_CAPTURE.

categoryCount

Número de categorías proporcionadas en el parámetro categories . Si categories es nullptr, categoryCount debe ser 0.

virtualCamera

Parámetro output que recibe el FMIVirtualCamera recién creado. Este parámetro no debe ser nullptr.

Valor devuelto

Devuelve un valor HRESULT, incluidos, entre otros, los siguientes valores:

Código de error Descripción
S_OK Correcto
E_INVALIDARG Un parámetro de entrada no es válido.
E_POINTER El parámetro virtualCamera es nullptr.
E_ACCESSDENIED El control de privacidad se establece para denegar el acceso a la cámara de la aplicación, el usuario o el sistema. O bien, el autor de la llamada no es un administrador y los parámetros proporcionados solo son válidos para el acceso de administrador.

Comentarios

La cámara virtual creada por MFCreateVirtualCamera se clave de los parámetros pasados a esta API. Al mantener los mismos parámetros, las aplicaciones pueden volver a abrir la misma cámara virtual. Cuando se llama por primera vez, el IMFVirtualCamera resultante contiene un conjunto de información de configuración que el autor de la llamada puede modificar o actualizar para crear una nueva instancia de una cámara virtual. Si se usan los mismos parámetros para esta función en llamadas posteriores, se abrirá la cámara virtual existente cuando se llame al método IMFVirtualCamera::Start o IMFVirtualCamera::Stop. Al llamar a IMFVirtualCamera::Remove , se quitará la cámara virtual existente. Si se especifica MFVirtualCameraAccess_CurrentUser para el parámetro de acceso , cada cuenta de usuario obtiene una cámara virtual única.

UWP y Aplicación empaquetada deben declarar la funcionalidad del dispositivo webcam en su manifiesto para poder usar esta API. Esta API también está sujeta al control de privacidad de la cámara web, por lo que cuando se establece la privacidad para denegar el acceso, esta API producirá un error de E_ACCESSDENIED.

Nota:

Las aplicaciones empaquetadas y UWP no deben invocar MFCreateVirtualCamera en su subproceso de interfaz de usuario. Si lo hace, se desencadenará un interbloqueo, ya que se bloqueará la comprobación del Administrador de acceso de funcionalidad para el cuadro de diálogo de consentimiento del acceso a la cámara web.

Requisitos

   
Cliente mínimo compatible Windows Build 22000
Encabezado mfvirtualcamera.h
Library mfsensorgroup.lib
Archivo DLL mfsensorgroup.dll

Consulte también

IMFVirtualCameraMFVirtualCameraTypeMFVirtualCameraLifetimeMFVirtualCameraAccess