ホーム › Media.MediaFoundation › MFCreateVirtualCamera
MFCreateVirtualCamera
関数仮想カメラを作成して登録する。
シグネチャ
// MFSENSORGROUP.dll
#include <windows.h>
HRESULT MFCreateVirtualCamera(
MFVirtualCameraType type,
MFVirtualCameraLifetime lifetime,
MFVirtualCameraAccess access,
LPCWSTR friendlyName,
LPCWSTR sourceId,
const GUID* categories, // optional
DWORD categoryCount,
IMFVirtualCamera** virtualCamera
);パラメーター
| 名前 | 型 | 方向 |
|---|---|---|
| type | MFVirtualCameraType | in |
| lifetime | MFVirtualCameraLifetime | in |
| access | MFVirtualCameraAccess | in |
| friendlyName | LPCWSTR | in |
| sourceId | LPCWSTR | in |
| categories | GUID* | inoptional |
| categoryCount | DWORD | in |
| virtualCamera | IMFVirtualCamera** | out |
戻り値の型: HRESULT
各言語での呼び出し定義
// MFSENSORGROUP.dll
#include <windows.h>
HRESULT MFCreateVirtualCamera(
MFVirtualCameraType type,
MFVirtualCameraLifetime lifetime,
MFVirtualCameraAccess access,
LPCWSTR friendlyName,
LPCWSTR sourceId,
const GUID* categories, // optional
DWORD categoryCount,
IMFVirtualCamera** virtualCamera
);[DllImport("MFSENSORGROUP.dll", ExactSpelling = true)]
static extern int MFCreateVirtualCamera(
int type, // MFVirtualCameraType
int lifetime, // MFVirtualCameraLifetime
int access, // MFVirtualCameraAccess
[MarshalAs(UnmanagedType.LPWStr)] string friendlyName, // LPCWSTR
[MarshalAs(UnmanagedType.LPWStr)] string sourceId, // LPCWSTR
IntPtr categories, // GUID* optional
uint categoryCount, // DWORD
IntPtr virtualCamera // IMFVirtualCamera** out
);<DllImport("MFSENSORGROUP.dll", ExactSpelling:=True)>
Public Shared Function MFCreateVirtualCamera(
type As Integer, ' MFVirtualCameraType
lifetime As Integer, ' MFVirtualCameraLifetime
access As Integer, ' MFVirtualCameraAccess
<MarshalAs(UnmanagedType.LPWStr)> friendlyName As String, ' LPCWSTR
<MarshalAs(UnmanagedType.LPWStr)> sourceId As String, ' LPCWSTR
categories As IntPtr, ' GUID* optional
categoryCount As UInteger, ' DWORD
virtualCamera As IntPtr ' IMFVirtualCamera** out
) As Integer
End Function' type : MFVirtualCameraType
' lifetime : MFVirtualCameraLifetime
' access : MFVirtualCameraAccess
' friendlyName : LPCWSTR
' sourceId : LPCWSTR
' categories : GUID* optional
' categoryCount : DWORD
' virtualCamera : IMFVirtualCamera** out
Declare PtrSafe Function MFCreateVirtualCamera Lib "mfsensorgroup" ( _
ByVal type As Long, _
ByVal lifetime As Long, _
ByVal access As Long, _
ByVal friendlyName As LongPtr, _
ByVal sourceId As LongPtr, _
ByVal categories As LongPtr, _
ByVal categoryCount As Long, _
ByVal virtualCamera As LongPtr) As Long
' VBA7前提(PtrSafe)。32bit Office では LongPtr→Long。Integer=16bit / Long=32bit / LongLong=64bit。import ctypes
from ctypes import wintypes
MFCreateVirtualCamera = ctypes.windll.mfsensorgroup.MFCreateVirtualCamera
MFCreateVirtualCamera.restype = ctypes.c_int
MFCreateVirtualCamera.argtypes = [
ctypes.c_int, # type : MFVirtualCameraType
ctypes.c_int, # lifetime : MFVirtualCameraLifetime
ctypes.c_int, # access : MFVirtualCameraAccess
wintypes.LPCWSTR, # friendlyName : LPCWSTR
wintypes.LPCWSTR, # sourceId : LPCWSTR
ctypes.c_void_p, # categories : GUID* optional
wintypes.DWORD, # categoryCount : DWORD
ctypes.c_void_p, # virtualCamera : IMFVirtualCamera** out
]require 'fiddle'
require 'fiddle/import'
lib = Fiddle.dlopen('MFSENSORGROUP.dll')
MFCreateVirtualCamera = Fiddle::Function.new(
lib['MFCreateVirtualCamera'],
[
Fiddle::TYPE_INT, # type : MFVirtualCameraType
Fiddle::TYPE_INT, # lifetime : MFVirtualCameraLifetime
Fiddle::TYPE_INT, # access : MFVirtualCameraAccess
Fiddle::TYPE_VOIDP, # friendlyName : LPCWSTR
Fiddle::TYPE_VOIDP, # sourceId : LPCWSTR
Fiddle::TYPE_VOIDP, # categories : GUID* optional
-Fiddle::TYPE_INT, # categoryCount : DWORD
Fiddle::TYPE_VOIDP, # virtualCamera : IMFVirtualCamera** out
],
Fiddle::TYPE_INT)#[link(name = "mfsensorgroup")]
extern "system" {
fn MFCreateVirtualCamera(
type: i32, // MFVirtualCameraType
lifetime: i32, // MFVirtualCameraLifetime
access: i32, // MFVirtualCameraAccess
friendlyName: *const u16, // LPCWSTR
sourceId: *const u16, // LPCWSTR
categories: *const GUID, // GUID* optional
categoryCount: u32, // DWORD
virtualCamera: *mut *mut core::ffi::c_void // IMFVirtualCamera** out
) -> i32;
}
// crates: windows-sys provides ready-made bindings for this API.$sig = @"
[DllImport("MFSENSORGROUP.dll")]
public static extern int MFCreateVirtualCamera(int type, int lifetime, int access, [MarshalAs(UnmanagedType.LPWStr)] string friendlyName, [MarshalAs(UnmanagedType.LPWStr)] string sourceId, IntPtr categories, uint categoryCount, IntPtr virtualCamera);
"@
$api = Add-Type -MemberDefinition $sig -Name 'MFSENSORGROUP_MFCreateVirtualCamera' -Namespace Win32 -PassThru
# $api::MFCreateVirtualCamera(type, lifetime, access, friendlyName, sourceId, categories, categoryCount, virtualCamera)#uselib "MFSENSORGROUP.dll"
#func global MFCreateVirtualCamera "MFCreateVirtualCamera" sptr, sptr, sptr, sptr, sptr, sptr, sptr, sptr
; MFCreateVirtualCamera type, lifetime, access, friendlyName, sourceId, varptr(categories), categoryCount, virtualCamera ; 戻り値は stat
; type : MFVirtualCameraType -> "sptr"
; lifetime : MFVirtualCameraLifetime -> "sptr"
; access : MFVirtualCameraAccess -> "sptr"
; friendlyName : LPCWSTR -> "sptr"
; sourceId : LPCWSTR -> "sptr"
; categories : GUID* optional -> "sptr"
; categoryCount : DWORD -> "sptr"
; virtualCamera : IMFVirtualCamera** out -> "sptr"
; ※HSP3.7は #func のため戻り値はシステム変数 stat に格納されます。出力引数:
#uselib "MFSENSORGROUP.dll" #cfunc global MFCreateVirtualCamera "MFCreateVirtualCamera" int, int, int, wstr, wstr, var, int, sptr ; res = MFCreateVirtualCamera(type, lifetime, access, friendlyName, sourceId, categories, categoryCount, virtualCamera) ; type : MFVirtualCameraType -> "int" ; lifetime : MFVirtualCameraLifetime -> "int" ; access : MFVirtualCameraAccess -> "int" ; friendlyName : LPCWSTR -> "wstr" ; sourceId : LPCWSTR -> "wstr" ; categories : GUID* optional -> "var" ; categoryCount : DWORD -> "int" ; virtualCamera : IMFVirtualCamera** out -> "sptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。#uselib "MFSENSORGROUP.dll" #cfunc global MFCreateVirtualCamera "MFCreateVirtualCamera" int, int, int, wstr, wstr, sptr, int, sptr ; res = MFCreateVirtualCamera(type, lifetime, access, friendlyName, sourceId, varptr(categories), categoryCount, virtualCamera) ; type : MFVirtualCameraType -> "int" ; lifetime : MFVirtualCameraLifetime -> "int" ; access : MFVirtualCameraAccess -> "int" ; friendlyName : LPCWSTR -> "wstr" ; sourceId : LPCWSTR -> "wstr" ; categories : GUID* optional -> "sptr" ; categoryCount : DWORD -> "int" ; virtualCamera : IMFVirtualCamera** out -> "sptr" ; ※出力/バッファ引数はポインタ方式(token=sptr / 呼び出しは varptr(変数))。
出力引数:
; HRESULT MFCreateVirtualCamera(MFVirtualCameraType type, MFVirtualCameraLifetime lifetime, MFVirtualCameraAccess access, LPCWSTR friendlyName, LPCWSTR sourceId, GUID* categories, DWORD categoryCount, IMFVirtualCamera** virtualCamera) #uselib "MFSENSORGROUP.dll" #cfunc global MFCreateVirtualCamera "MFCreateVirtualCamera" int, int, int, wstr, wstr, var, int, intptr ; res = MFCreateVirtualCamera(type, lifetime, access, friendlyName, sourceId, categories, categoryCount, virtualCamera) ; type : MFVirtualCameraType -> "int" ; lifetime : MFVirtualCameraLifetime -> "int" ; access : MFVirtualCameraAccess -> "int" ; friendlyName : LPCWSTR -> "wstr" ; sourceId : LPCWSTR -> "wstr" ; categories : GUID* optional -> "var" ; categoryCount : DWORD -> "int" ; virtualCamera : IMFVirtualCamera** out -> "intptr" ; ※出力/バッファ引数は var 方式(変数を直接渡す)。varptr 方式にも切替可。; HRESULT MFCreateVirtualCamera(MFVirtualCameraType type, MFVirtualCameraLifetime lifetime, MFVirtualCameraAccess access, LPCWSTR friendlyName, LPCWSTR sourceId, GUID* categories, DWORD categoryCount, IMFVirtualCamera** virtualCamera) #uselib "MFSENSORGROUP.dll" #cfunc global MFCreateVirtualCamera "MFCreateVirtualCamera" int, int, int, wstr, wstr, intptr, int, intptr ; res = MFCreateVirtualCamera(type, lifetime, access, friendlyName, sourceId, varptr(categories), categoryCount, virtualCamera) ; type : MFVirtualCameraType -> "int" ; lifetime : MFVirtualCameraLifetime -> "int" ; access : MFVirtualCameraAccess -> "int" ; friendlyName : LPCWSTR -> "wstr" ; sourceId : LPCWSTR -> "wstr" ; categories : GUID* optional -> "intptr" ; categoryCount : DWORD -> "int" ; virtualCamera : IMFVirtualCamera** out -> "intptr" ; ※出力/バッファ引数はポインタ方式(token=intptr / 呼び出しは varptr(変数))。
import (
"golang.org/x/sys/windows"
"unsafe"
)
var (
mfsensorgroup = windows.NewLazySystemDLL("MFSENSORGROUP.dll")
procMFCreateVirtualCamera = mfsensorgroup.NewProc("MFCreateVirtualCamera")
)
// type (MFVirtualCameraType), lifetime (MFVirtualCameraLifetime), access (MFVirtualCameraAccess), friendlyName (LPCWSTR), sourceId (LPCWSTR), categories (GUID* optional), categoryCount (DWORD), virtualCamera (IMFVirtualCamera** out)
r1, _, err := procMFCreateVirtualCamera.Call(
uintptr(type),
uintptr(lifetime),
uintptr(access),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(friendlyName))),
uintptr(unsafe.Pointer(windows.StringToUTF16Ptr(sourceId))),
uintptr(categories),
uintptr(categoryCount),
uintptr(virtualCamera),
)
_ = err // syscall.Errno (valid when the call sets last-error)
_ = r1 // HRESULTfunction MFCreateVirtualCamera(
type: Integer; // MFVirtualCameraType
lifetime: Integer; // MFVirtualCameraLifetime
access: Integer; // MFVirtualCameraAccess
friendlyName: PWideChar; // LPCWSTR
sourceId: PWideChar; // LPCWSTR
categories: PGUID; // GUID* optional
categoryCount: DWORD; // DWORD
virtualCamera: Pointer // IMFVirtualCamera** out
): Integer; stdcall;
external 'MFSENSORGROUP.dll' name 'MFCreateVirtualCamera';result := DllCall("MFSENSORGROUP\MFCreateVirtualCamera"
, "Int", type ; MFVirtualCameraType
, "Int", lifetime ; MFVirtualCameraLifetime
, "Int", access ; MFVirtualCameraAccess
, "WStr", friendlyName ; LPCWSTR
, "WStr", sourceId ; LPCWSTR
, "Ptr", categories ; GUID* optional
, "UInt", categoryCount ; DWORD
, "Ptr", virtualCamera ; IMFVirtualCamera** out
, "Int") ; return: HRESULT●MFCreateVirtualCamera(type, lifetime, access, friendlyName, sourceId, categories, categoryCount, virtualCamera) = DLL("MFSENSORGROUP.dll", "int MFCreateVirtualCamera(int, int, int, char*, char*, void*, dword, void*)")
# 呼び出し: MFCreateVirtualCamera(type, lifetime, access, friendlyName, sourceId, categories, categoryCount, virtualCamera)
# type : MFVirtualCameraType -> "int"
# lifetime : MFVirtualCameraLifetime -> "int"
# access : MFVirtualCameraAccess -> "int"
# friendlyName : LPCWSTR -> "char*"
# sourceId : LPCWSTR -> "char*"
# categories : GUID* optional -> "void*"
# categoryCount : DWORD -> "dword"
# virtualCamera : IMFVirtualCamera** out -> "void*"
# なでしこ1は32bit・ANSI(Shift_JIS)。文字列=char*(ANSI)、ポインタ/ハンドル=void*(4byte)。