ホーム › Media.DirectShow › REGFILTERPINS
REGFILTERPINS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| strName | LPWSTR | 8/4 | +0 | +0 | ピンの名前を示すワイド文字列。 |
| bRendered | BOOL | 4 | +8 | +4 | このピンでデータがレンダリングされるかを示す真偽値。 |
| bOutput | BOOL | 4 | +12 | +8 | 出力ピンかを示す真偽値。 |
| bZero | BOOL | 4 | +16 | +12 | このピンのインスタンスが0個でも有効かを示す真偽値。 |
| bMany | BOOL | 4 | +20 | +16 | このピンが複数インスタンスを持てるかを示す真偽値。 |
| clsConnectsToFilter | GUID* | 8/4 | +24 | +20 | 接続先フィルターのクラスGUIDへのポインター。NULL可。 |
| strConnectsToPin | LPWSTR | 8/4 | +32 | +24 | 接続先ピンの名前を示すワイド文字列。NULL可。 |
| nMediaTypes | DWORD | 4 | +40 | +28 | lpMediaTypeが指すメディア種別の数を示す。 |
| lpMediaType | REGPINTYPES* | 8/4 | +48 | +32 | サポートするメディア種別の配列を指すREGPINTYPESへのポインター。 |
各言語での定義
#include <windows.h>
// REGFILTERPINS (x64 56 / x86 36 バイト)
typedef struct REGFILTERPINS {
LPWSTR strName;
BOOL bRendered;
BOOL bOutput;
BOOL bZero;
BOOL bMany;
GUID* clsConnectsToFilter;
LPWSTR strConnectsToPin;
DWORD nMediaTypes;
REGPINTYPES* lpMediaType;
} REGFILTERPINS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct REGFILTERPINS
{
public IntPtr strName;
[MarshalAs(UnmanagedType.Bool)] public bool bRendered;
[MarshalAs(UnmanagedType.Bool)] public bool bOutput;
[MarshalAs(UnmanagedType.Bool)] public bool bZero;
[MarshalAs(UnmanagedType.Bool)] public bool bMany;
public IntPtr clsConnectsToFilter;
public IntPtr strConnectsToPin;
public uint nMediaTypes;
public IntPtr lpMediaType;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure REGFILTERPINS
Public strName As IntPtr
<MarshalAs(UnmanagedType.Bool)> Public bRendered As Boolean
<MarshalAs(UnmanagedType.Bool)> Public bOutput As Boolean
<MarshalAs(UnmanagedType.Bool)> Public bZero As Boolean
<MarshalAs(UnmanagedType.Bool)> Public bMany As Boolean
Public clsConnectsToFilter As IntPtr
Public strConnectsToPin As IntPtr
Public nMediaTypes As UInteger
Public lpMediaType As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class REGFILTERPINS(ctypes.Structure):
_fields_ = [
("strName", ctypes.c_void_p),
("bRendered", wintypes.BOOL),
("bOutput", wintypes.BOOL),
("bZero", wintypes.BOOL),
("bMany", wintypes.BOOL),
("clsConnectsToFilter", ctypes.c_void_p),
("strConnectsToPin", ctypes.c_void_p),
("nMediaTypes", wintypes.DWORD),
("lpMediaType", ctypes.c_void_p),
]#[repr(C)]
pub struct REGFILTERPINS {
pub strName: *mut core::ffi::c_void,
pub bRendered: i32,
pub bOutput: i32,
pub bZero: i32,
pub bMany: i32,
pub clsConnectsToFilter: *mut core::ffi::c_void,
pub strConnectsToPin: *mut core::ffi::c_void,
pub nMediaTypes: u32,
pub lpMediaType: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type REGFILTERPINS struct {
strName uintptr
bRendered int32
bOutput int32
bZero int32
bMany int32
clsConnectsToFilter uintptr
strConnectsToPin uintptr
nMediaTypes uint32
lpMediaType uintptr
}type
REGFILTERPINS = record
strName: Pointer;
bRendered: BOOL;
bOutput: BOOL;
bZero: BOOL;
bMany: BOOL;
clsConnectsToFilter: Pointer;
strConnectsToPin: Pointer;
nMediaTypes: DWORD;
lpMediaType: Pointer;
end;const REGFILTERPINS = extern struct {
strName: ?*anyopaque,
bRendered: i32,
bOutput: i32,
bZero: i32,
bMany: i32,
clsConnectsToFilter: ?*anyopaque,
strConnectsToPin: ?*anyopaque,
nMediaTypes: u32,
lpMediaType: ?*anyopaque,
};type
REGFILTERPINS {.bycopy.} = object
strName: pointer
bRendered: int32
bOutput: int32
bZero: int32
bMany: int32
clsConnectsToFilter: pointer
strConnectsToPin: pointer
nMediaTypes: uint32
lpMediaType: pointerstruct REGFILTERPINS
{
void* strName;
int bRendered;
int bOutput;
int bZero;
int bMany;
void* clsConnectsToFilter;
void* strConnectsToPin;
uint nMediaTypes;
void* lpMediaType;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; REGFILTERPINS サイズ: 36 バイト(x86)
dim st, 9 ; 4byte整数×9(構造体サイズ 36 / 4 切り上げ)
; strName : LPWSTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; bRendered : BOOL (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; bOutput : BOOL (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; bZero : BOOL (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; bMany : BOOL (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; clsConnectsToFilter : GUID* (+20, 4byte) varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; strConnectsToPin : LPWSTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; nMediaTypes : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; lpMediaType : REGPINTYPES* (+32, 4byte) varptr(st)+32 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; REGFILTERPINS サイズ: 56 バイト(x64)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; strName : LPWSTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; bRendered : BOOL (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; bOutput : BOOL (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; bZero : BOOL (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; bMany : BOOL (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; clsConnectsToFilter : GUID* (+24, 8byte) varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; strConnectsToPin : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; nMediaTypes : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; lpMediaType : REGPINTYPES* (+48, 8byte) varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global REGFILTERPINS
#field intptr strName
#field bool bRendered
#field bool bOutput
#field bool bZero
#field bool bMany
#field intptr clsConnectsToFilter
#field intptr strConnectsToPin
#field int nMediaTypes
#field intptr lpMediaType
#endstruct
stdim st, REGFILTERPINS ; NSTRUCT 変数を確保
st->bRendered = 100
mes "bRendered=" + st->bRendered