Compartilhar via


Função MFCreateVirtualCamera (mfvirtualcamera.h)

Cria um objeto de câmera virtual que pode ser usado pelo chamador para registrar, cancelar o registro ou remover a câmera virtual do sistema.

Sintaxe

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

Parâmetros

type

Um membro da enumeração MFVirtualCameraType especificando o tipo de câmera virtual. Na versão atual, há suporte apenas para MFVirtualCameraType_SoftwareCameraSource .

lifetime

Um membro da enumeração MFVirtualCameraLifetime especificando o tempo de vida da câmera. Se MFVirtualCameraLifetime_Session for especificado, quando o objeto IMFVirtualCamera retornado for descartado ou IMFVirtualCamera::Shutdown for chamado, a câmera virtual não será mais enumerável ou ativada no dispositivo. Se você quiser que a câmera virtual persista entre sessões e/ou entre reinicializações, especifique o valor MFVirtualCameraLifetime_System.

access

Um membro da enumeração MFVirtualCameraAccess especificando o escopo de acesso da câmera virtual criada. Se MFVirtualCameraAccess_CurrentUser for especificado, a câmera virtual só será criada para a conta de usuário que chamou MFCreateVirtualCamera. Se MFVirtualCameraAccess_AllUsers for especificado, todos os usuários no dispositivo poderão enumerar ou ativar a câmera virtual. Para criar uma câmera virtual com MFVirtualCameraAccess_AllUsers, o chamador de MFCreateVirtualCamera deve ter permissões de administrador.

friendlyName

Um nome amigável de cadeia de caracteres Unicode com terminação nula e legível pelo usuário para a câmera virtual criada. O pipeline anexará automaticamente a "Câmera Virtual do Windows" ao nome amigável fornecido para garantir que os usuários finais possam distinguir câmeras virtuais de câmeras físicas com base no nome amigável. Esse parâmetro não deve ser nullptr.

sourceId

O CLSID exclusivo da fonte de mídia personalizada a ser ativada para essa câmera virtual. A cadeia de caracteres deve estar no formato "{CLSID}". Esse parâmetro não deve ser nullptr.

categories

Uma lista opcional de categorias de interface do dispositivo sob as quais a câmera virtual está registrada. Se um usuário não administrador estiver invocando MFCreateVirtualCamera, as categorias deverão ser um subconjunto dos seguintes valores:

Se nullptr for especificado, a câmera virtual será registrada nas categorias KSCATEGORY_VIDEO_CAMERA, KSCATEGORY_VIDEO e KSCATEGORY_CAPTURE.

categoryCount

O número de categorias fornecidas no parâmetro categories . Se categories for nullptr, categoryCount deverá ser 0.

virtualCamera

Parâmetro de saída que recebe o IMFVirtualCamera recém-criado. Esse parâmetro não deve ser nullptr.

Valor retornado

Retorna um valor HRESULT, incluindo, mas não se limitando aos seguintes valores:

Código do erro Descrição
S_OK Com sucesso
E_INVALIDARG Um parâmetro de entrada é inválido.
E_POINTER O parâmetro virtualCamera é nullptr.
E_ACCESSDENIED O controle de privacidade está definido para negar o acesso à câmera para o aplicativo, o usuário ou o sistema. Ou o chamador não é um administrador e os parâmetros fornecidos são válidos apenas para acesso de administrador.

Comentários

A câmera virtual criada por MFCreateVirtualCamera é desligada dos parâmetros passados para essa API. Mantendo os mesmos parâmetros, os aplicativos podem reabrir a mesma câmera virtual. Quando chamado pela primeira vez, o IMFVirtualCamera resultante contém um conjunto de informações de configuração que podem ser modificadas ou atualizadas pelo chamador para criar uma nova instância de uma câmera virtual. Se os mesmos parâmetros forem usados para essa função em chamadas subsequentes, o IMFVirtualCamera resultante abrirá a câmera virtual existente quando o método IMFVirtualCamera::Start ou IMFVirtualCamera::Stop for chamado. Chamar IMFVirtualCamera::Remove removerá a câmera virtual existente. Se MFVirtualCameraAccess_CurrentUser for especificado para o parâmetro de acesso , cada conta de usuário obterá uma câmera virtual exclusiva.

A UWP e o Aplicativo Empacotado devem declarar a funcionalidade do dispositivo webcam em seu manifesto para usar essa API. Essa API também está sujeita ao controle de privacidade da webcam, portanto, quando a privacidade estiver definida para negar o acesso, essa API resultará em uma falha E_ACCESSDENIED.

Observação

Os aplicativos UWP e Empacotados não devem invocar MFCreateVirtualCamera em seu thread de interface do usuário. Isso potencialmente disparará um deadlock, pois a marcar do Gerenciador de Acesso de Funcionalidades para a caixa de diálogo de consentimento de acesso da webcam será bloqueada.

Requisitos

   
Cliente mínimo com suporte Windows Build 22000
Cabeçalho mfvirtualcamera.h
Biblioteca mfsensorgroup.lib
DLL mfsensorgroup.dll

Confira também

IMFVirtualCameraMFVirtualCameraTypeMFVirtualCameraLifetimeMFVirtualCameraAccess