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