次の方法で共有


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

作成された仮想カメラの null で終わる、ユーザーが読み取り可能な Unicode 文字列フレンドリ名。 パイプラインは、指定されたフレンドリ名に "Windows Virtual Camera" を自動的に追加して、エンド ユーザーがフレンドリ名に基づいて仮想カメラと物理カメラを区別できるようにします。 このパラメーターは 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::Start メソッドまたは IMFVirtualCamera::Stop メソッドが呼び出されると、結果の IMFVirtualCamera によって既存の仮想カメラが開きます。 IMFVirtualCamera::Remove を呼び出すと、既存の仮想カメラが削除されます。 アクセス パラメーターにMFVirtualCameraAccess_CurrentUserが指定されている場合、各ユーザー アカウントは一意の仮想カメラを取得します。

この API を使用するには、UWP とパッケージ 化されたアプリケーションで、マニフェストで Web カメラ デバイス機能を宣言する必要があります。 この API は Web カメラのプライバシー制御の対象にもなるため、プライバシーがアクセスを拒否するように設定されている場合、この API によってE_ACCESSDENIEDエラーが発生します。

Note

UWP とパッケージ アプリは、UI スレッドで MFCreateVirtualCamera を呼び出してはなりません。 これにより、Web カメラ アクセスの同意ダイアログの Capability Access Manager チェックがブロックされるため、デッドロックがトリガーされる可能性があります。

要件

   
サポートされている最小のクライアント Windows ビルド 22000
Header mfvirtualcamera.h
Library mfsensorgroup.lib
[DLL] mfsensorgroup.dll

関連項目

IMFVirtualCameraMFVirtualCameraTypeMFVirtualCameraLifetimeMFVirtualCameraAccess