MFCreateVirtualCamera 函数 (mfvirtualcamera.h)

创建一个虚拟相机对象,调用方可以使用该对象从系统注册、注销或删除虚拟相机。

语法

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

parameters

type

指定虚拟相机类型的 MFVirtualCameraType 枚举的成员。 在当前版本中,仅支持 MFVirtualCameraType_SoftwareCameraSource

lifetime

指定相机生存期的 MFVirtualCameraLifetime 枚举的成员。 如果指定 了MFVirtualCameraLifetime_Session ,则在释放返回的 IMFVirtualCamera 对象或调用 IMFVirtualCamera::Shutdown 时,虚拟相机将不再可在设备上枚举或激活。 如果希望虚拟相机在会话和/或重启期间保持,则必须指定 值MFVirtualCameraLifetime_System

access

MFVirtualCameraAccess 枚举的成员,指定所创建的虚拟相机的访问范围。 如果指定 了MFVirtualCameraAccess_CurrentUser ,则仅为调用 MFCreateVirtualCamera 的用户帐户创建虚拟相机。 如果指定 了MFVirtualCameraAccess_AllUsers ,则设备上的所有用户都将能够枚举或激活虚拟相机。 若要创建具有 MFVirtualCameraAccess_AllUsers的虚拟相机, MFCreateVirtualCamera 的调用方必须具有管理员权限。

friendlyName

创建的虚拟相机的以 null 结尾、用户可读的 Unicode 字符串友好名称。 管道会自动将“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 包含一组配置信息,调用方可以修改或更新这些信息以创建虚拟相机的新实例。 如果在后续调用中对此函数使用相同的参数,则调用 IMFVirtualCamera::Start 或 IMFVirtualCamera::Stop 方法时,生成的 IMFVirtualCamera 将打开现有的虚拟相机。 调用 IMFVirtualCamera::Remove 将删除现有的虚拟相机。 如果为 访问 参数指定了MFVirtualCameraAccess_CurrentUser,则每个用户帐户都将获得一个唯一的虚拟相机。

UWP 和打包应用程序必须在其清单中声明 网络摄像头 设备功能才能使用此 API。 此 API 还受网络摄像头隐私控制的约束,因此当隐私设置为拒绝访问时,此 API 将导致E_ACCESSDENIED失败。

注意

UWP 和打包应用不得在其 UI 线程上调用 MFCreateVirtualCamera 。 这样做可能会触发死锁,因为网络摄像头访问许可对话框的功能访问管理器检查将被阻止。

要求

   
最低受支持的客户端 Windows 内部版本 22000
标头 mfvirtualcamera.h
Library mfsensorgroup.lib
DLL mfsensorgroup.dll

另请参阅

IMFVirtualCameraMFVirtualCameraTypeMFVirtualCameraLifetimeMFVirtualCameraAccess