Поделиться через


Функция 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

Элемент перечисления MFVirtualCameraAccess, указывающий область доступа созданной виртуальной камеры. Если указано MFVirtualCameraAccess_CurrentUser , виртуальная камера создается только для учетной записи пользователя, которая вызвала MFCreateVirtualCamera. Если указано MFVirtualCameraAccess_AllUsers , все пользователи на устройстве смогут перечислить или активировать виртуальную камеру. Чтобы создать виртуальную камеру с MFVirtualCameraAccess_AllUsers, вызывающий объект MFCreateVirtualCamera должен иметь разрешения администратора.

friendlyName

Понятное для пользователя имя строки Юникода, завершающееся нулевым завершением, для созданной виртуальной камеры. Конвейер автоматически добавит "Виртуальная камера Windows" к указанному понятному имени, чтобы конечные пользователи могли отличить виртуальные камеры от физических камер на основе понятного имени. Этот параметр не должен иметь значение nullptr.

sourceId

Уникальный ИДЕНТИФИКАТОР CLSID настраиваемого источника мультимедиа, активируемого для этой виртуальной камеры. Строка должна быть в формате "{CLSID}". Этот параметр не должен иметь значение nullptr.

categories

Необязательный список категорий интерфейсов устройств, в которых зарегистрирована виртуальная камера. Если пользователь без прав администратора вызывает MFCreateVirtualCamera, категории должны быть подмножеством следующих значений:

Если задано значение nullptr, виртуальная камера регистрируется в категориях KSCATEGORY_VIDEO_CAMERA, KSCATEGORY_VIDEO и KSCATEGORY_CAPTURE.

categoryCount

Количество категорий, указанных в параметре categories . Если categories имеет значение nullptr, categoryCount должно иметь значение 0.

virtualCamera

Выходной параметр, получающий только что созданный IMFVirtualCamera. Этот параметр не должен иметь значение nullptr.

Возвращаемое значение

Возвращает значение HRESULT, включая, помимо прочего, следующие значения:

Код ошибки Описание
S_OK Выполнено
E_INVALIDARG Недопустимый входной параметр.
E_POINTER Параметр virtualCamera имеет значение nullptr.
E_ACCESSDENIED Управление конфиденциальностью настроено для запрета доступа к камере для приложения, пользователя или системы. Или вызывающий объект не является администратором, и предоставленные параметры действительны только для доступа администратора.

Комментарии

Виртуальная камера, созданная С помощью MFCreateVirtualCamera , отключается от параметров, передаваемых в этот API. Сохраняя те же параметры, приложения могут повторно открыть одну и ту же виртуальную камеру. При первом вызове итоговая функция IMFVirtualCamera содержит набор сведений о конфигурации, которые могут быть изменены или обновлены вызывающим абонентом для создания нового экземпляра виртуальной камеры. Если те же параметры используются для этой функции при последующих вызовах, полученная функция IMFVirtualCamera откроет существующую виртуальную камеру при вызове метода IMFVirtualCamera::Start или IMFVirtualCamera::Stop . Вызов IMFVirtualCamera::Remove приведет к удалению существующей виртуальной камеры. Если для параметра доступа указано MFVirtualCameraAccess_CurrentUser, каждая учетная запись пользователя получает уникальную виртуальную камеру.

UWP и упакованое приложение должны объявить возможность веб-устройства в своем манифесте, чтобы использовать этот API. Этот API также регулируется контролем конфиденциальности веб-камеры, поэтому, если для параметра конфиденциальности задано значение запрета доступа, этот API приведет к сбою E_ACCESSDENIED.

Примечание

UWP и упакованные приложения не должны вызывать MFCreateVirtualCamera в потоке пользовательского интерфейса. Это потенциально вызовет взаимоблокировку, так как диспетчер доступа возможностей проверка для диалогового окна согласия на доступ к веб-камере будет заблокирован.

Требования

   
Минимальная версия клиента Сборка Windows 22000
Верхняя часть mfvirtualcamera.h
Библиотека mfsensorgroup.lib
DLL mfsensorgroup.dll

См. также раздел

IMFVirtualCameraMFVirtualCameraTypeMFVirtualCameraLifetimeMFVirtualCameraAccess