ホーム › Media.DirectShow.Tv › KSPROPERTY_BDA_RF_TUNER_CAPS_S
KSPROPERTY_BDA_RF_TUNER_CAPS_S
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Property | KSP_NODE | 16 | +0 | +0 | ノードプロパティ識別子(KSP_NODE)。RFチューナ能力プロパティを示す。 |
| Mode | DWORD | 4 | +16 | +16 | チューナの動作モード。サポートする動作種別を示す。 |
| AnalogStandardsSupported | DWORD | 4 | +20 | +20 | サポートするアナログ規格のビットマスク。NTSC/PAL等を示す。 |
| DigitalStandardsSupported | DWORD | 4 | +24 | +24 | サポートするデジタル規格のビットマスク。DVB/ATSC等を示す。 |
| MinFrequency | DWORD | 4 | +28 | +28 | 対応最小周波数(kHz単位)。受信下限を示す。 |
| MaxFrequency | DWORD | 4 | +32 | +32 | 対応最大周波数(kHz単位)。受信上限を示す。 |
| SettlingTime | DWORD | 4 | +36 | +36 | 周波数切替後の整定時間(ミリ秒)。安定までの待機時間を示す。 |
| AnalogSensingRange | DWORD | 4 | +40 | +40 | アナログ信号検出範囲。感度判定の範囲を示す。 |
| DigitalSensingRange | DWORD | 4 | +44 | +44 | デジタル信号検出範囲。感度判定の範囲を示す。 |
| MilliSecondsPerMHz | DWORD | 4 | +48 | +48 | 1MHzあたりのスキャン所要時間(ミリ秒)。走査速度の指標。 |
各言語での定義
#include <windows.h>
// KSIDENTIFIER (x64 8 / x86 8 バイト)
typedef struct KSIDENTIFIER {
_Anonymous_e__Union Anonymous;
} KSIDENTIFIER;
// KSP_NODE (x64 16 / x86 16 バイト)
typedef struct KSP_NODE {
KSIDENTIFIER Property;
DWORD NodeId;
DWORD Reserved;
} KSP_NODE;
// KSPROPERTY_BDA_RF_TUNER_CAPS_S (x64 56 / x86 56 バイト)
typedef struct KSPROPERTY_BDA_RF_TUNER_CAPS_S {
KSP_NODE Property;
DWORD Mode;
DWORD AnalogStandardsSupported;
DWORD DigitalStandardsSupported;
DWORD MinFrequency;
DWORD MaxFrequency;
DWORD SettlingTime;
DWORD AnalogSensingRange;
DWORD DigitalSensingRange;
DWORD MilliSecondsPerMHz;
} KSPROPERTY_BDA_RF_TUNER_CAPS_S;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KSIDENTIFIER
{
public _Anonymous_e__Union Anonymous;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KSP_NODE
{
public KSIDENTIFIER Property;
public uint NodeId;
public uint Reserved;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KSPROPERTY_BDA_RF_TUNER_CAPS_S
{
public KSP_NODE Property;
public uint Mode;
public uint AnalogStandardsSupported;
public uint DigitalStandardsSupported;
public uint MinFrequency;
public uint MaxFrequency;
public uint SettlingTime;
public uint AnalogSensingRange;
public uint DigitalSensingRange;
public uint MilliSecondsPerMHz;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KSIDENTIFIER
Public Anonymous As _Anonymous_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KSP_NODE
Public Property As KSIDENTIFIER
Public NodeId As UInteger
Public Reserved As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KSPROPERTY_BDA_RF_TUNER_CAPS_S
Public Property As KSP_NODE
Public Mode As UInteger
Public AnalogStandardsSupported As UInteger
Public DigitalStandardsSupported As UInteger
Public MinFrequency As UInteger
Public MaxFrequency As UInteger
Public SettlingTime As UInteger
Public AnalogSensingRange As UInteger
Public DigitalSensingRange As UInteger
Public MilliSecondsPerMHz As UInteger
End Structureimport ctypes
from ctypes import wintypes
class KSIDENTIFIER(ctypes.Structure):
_fields_ = [
("Anonymous", _Anonymous_e__Union),
]
class KSP_NODE(ctypes.Structure):
_fields_ = [
("Property", KSIDENTIFIER),
("NodeId", wintypes.DWORD),
("Reserved", wintypes.DWORD),
]
class KSPROPERTY_BDA_RF_TUNER_CAPS_S(ctypes.Structure):
_fields_ = [
("Property", KSP_NODE),
("Mode", wintypes.DWORD),
("AnalogStandardsSupported", wintypes.DWORD),
("DigitalStandardsSupported", wintypes.DWORD),
("MinFrequency", wintypes.DWORD),
("MaxFrequency", wintypes.DWORD),
("SettlingTime", wintypes.DWORD),
("AnalogSensingRange", wintypes.DWORD),
("DigitalSensingRange", wintypes.DWORD),
("MilliSecondsPerMHz", wintypes.DWORD),
]#[repr(C)]
pub struct KSIDENTIFIER {
pub Anonymous: _Anonymous_e__Union,
}
#[repr(C)]
pub struct KSP_NODE {
pub Property: KSIDENTIFIER,
pub NodeId: u32,
pub Reserved: u32,
}
#[repr(C)]
pub struct KSPROPERTY_BDA_RF_TUNER_CAPS_S {
pub Property: KSP_NODE,
pub Mode: u32,
pub AnalogStandardsSupported: u32,
pub DigitalStandardsSupported: u32,
pub MinFrequency: u32,
pub MaxFrequency: u32,
pub SettlingTime: u32,
pub AnalogSensingRange: u32,
pub DigitalSensingRange: u32,
pub MilliSecondsPerMHz: u32,
}import "golang.org/x/sys/windows"
type KSIDENTIFIER struct {
Anonymous _Anonymous_e__Union
}
type KSP_NODE struct {
Property KSIDENTIFIER
NodeId uint32
Reserved uint32
}
type KSPROPERTY_BDA_RF_TUNER_CAPS_S struct {
Property KSP_NODE
Mode uint32
AnalogStandardsSupported uint32
DigitalStandardsSupported uint32
MinFrequency uint32
MaxFrequency uint32
SettlingTime uint32
AnalogSensingRange uint32
DigitalSensingRange uint32
MilliSecondsPerMHz uint32
}type
KSIDENTIFIER = record
Anonymous: _Anonymous_e__Union;
end;
KSP_NODE = record
Property: KSIDENTIFIER;
NodeId: DWORD;
Reserved: DWORD;
end;
KSPROPERTY_BDA_RF_TUNER_CAPS_S = record
Property: KSP_NODE;
Mode: DWORD;
AnalogStandardsSupported: DWORD;
DigitalStandardsSupported: DWORD;
MinFrequency: DWORD;
MaxFrequency: DWORD;
SettlingTime: DWORD;
AnalogSensingRange: DWORD;
DigitalSensingRange: DWORD;
MilliSecondsPerMHz: DWORD;
end;const KSIDENTIFIER = extern struct {
Anonymous: _Anonymous_e__Union,
};
const KSP_NODE = extern struct {
Property: KSIDENTIFIER,
NodeId: u32,
Reserved: u32,
};
const KSPROPERTY_BDA_RF_TUNER_CAPS_S = extern struct {
Property: KSP_NODE,
Mode: u32,
AnalogStandardsSupported: u32,
DigitalStandardsSupported: u32,
MinFrequency: u32,
MaxFrequency: u32,
SettlingTime: u32,
AnalogSensingRange: u32,
DigitalSensingRange: u32,
MilliSecondsPerMHz: u32,
};type
KSIDENTIFIER {.bycopy.} = object
Anonymous: _Anonymous_e__Union
KSP_NODE {.bycopy.} = object
Property: KSIDENTIFIER
NodeId: uint32
Reserved: uint32
KSPROPERTY_BDA_RF_TUNER_CAPS_S {.bycopy.} = object
Property: KSP_NODE
Mode: uint32
AnalogStandardsSupported: uint32
DigitalStandardsSupported: uint32
MinFrequency: uint32
MaxFrequency: uint32
SettlingTime: uint32
AnalogSensingRange: uint32
DigitalSensingRange: uint32
MilliSecondsPerMHz: uint32struct KSIDENTIFIER
{
_Anonymous_e__Union Anonymous;
}
struct KSP_NODE
{
KSIDENTIFIER Property;
uint NodeId;
uint Reserved;
}
struct KSPROPERTY_BDA_RF_TUNER_CAPS_S
{
KSP_NODE Property;
uint Mode;
uint AnalogStandardsSupported;
uint DigitalStandardsSupported;
uint MinFrequency;
uint MaxFrequency;
uint SettlingTime;
uint AnalogSensingRange;
uint DigitalSensingRange;
uint MilliSecondsPerMHz;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; KSPROPERTY_BDA_RF_TUNER_CAPS_S サイズ: 56 バイト(x64)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; Property : KSP_NODE (+0, 16byte) varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; Mode : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; AnalogStandardsSupported : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; DigitalStandardsSupported : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; MinFrequency : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; MaxFrequency : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; SettlingTime : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; AnalogSensingRange : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; DigitalSensingRange : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; MilliSecondsPerMHz : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global KSIDENTIFIER
#field byte Anonymous 8
#endstruct
#defstruct global KSP_NODE
#field KSIDENTIFIER Property
#field int NodeId
#field int Reserved
#endstruct
#defstruct global KSPROPERTY_BDA_RF_TUNER_CAPS_S
#field KSP_NODE Property
#field int Mode
#field int AnalogStandardsSupported
#field int DigitalStandardsSupported
#field int MinFrequency
#field int MaxFrequency
#field int SettlingTime
#field int AnalogSensingRange
#field int DigitalSensingRange
#field int MilliSecondsPerMHz
#endstruct
stdim st, KSPROPERTY_BDA_RF_TUNER_CAPS_S ; NSTRUCT 変数を確保
st->Mode = 100
mes "Mode=" + st->Mode