Win32 API 日本語リファレンス
ホームMedia.KernelStreaming › KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S

KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S

構造体
サイズx64: 64 バイト / x86: 64 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
PropertyKSIDENTIFIER8+0+0対象プロパティを識別するKSIDENTIFIER。プロパティセットGUID・ID・フラグを保持する。
StatisticsVBICODECFILTERING_STATISTICS_CC56+8+8クローズドキャプション(CC)のVBIコーデックフィルタリング統計情報を格納する。

各言語での定義

#include <windows.h>

// KSIDENTIFIER  (x64 8 / x86 8 バイト)
typedef struct KSIDENTIFIER {
    _Anonymous_e__Union Anonymous;
} KSIDENTIFIER;

// VBICODECFILTERING_STATISTICS_COMMON  (x64 56 / x86 56 バイト)
typedef struct VBICODECFILTERING_STATISTICS_COMMON {
    DWORD InputSRBsProcessed;
    DWORD OutputSRBsProcessed;
    DWORD SRBsIgnored;
    DWORD InputSRBsMissing;
    DWORD OutputSRBsMissing;
    DWORD OutputFailures;
    DWORD InternalErrors;
    DWORD ExternalErrors;
    DWORD InputDiscontinuities;
    DWORD DSPFailures;
    DWORD TvTunerChanges;
    DWORD VBIHeaderChanges;
    DWORD LineConfidenceAvg;
    DWORD BytesOutput;
} VBICODECFILTERING_STATISTICS_COMMON;

// VBICODECFILTERING_STATISTICS_CC  (x64 56 / x86 56 バイト)
typedef struct VBICODECFILTERING_STATISTICS_CC {
    VBICODECFILTERING_STATISTICS_COMMON Common;
} VBICODECFILTERING_STATISTICS_CC;

// KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S  (x64 64 / x86 64 バイト)
typedef struct KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S {
    KSIDENTIFIER Property;
    VBICODECFILTERING_STATISTICS_CC Statistics;
} KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_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 VBICODECFILTERING_STATISTICS_COMMON
{
    public uint InputSRBsProcessed;
    public uint OutputSRBsProcessed;
    public uint SRBsIgnored;
    public uint InputSRBsMissing;
    public uint OutputSRBsMissing;
    public uint OutputFailures;
    public uint InternalErrors;
    public uint ExternalErrors;
    public uint InputDiscontinuities;
    public uint DSPFailures;
    public uint TvTunerChanges;
    public uint VBIHeaderChanges;
    public uint LineConfidenceAvg;
    public uint BytesOutput;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct VBICODECFILTERING_STATISTICS_CC
{
    public VBICODECFILTERING_STATISTICS_COMMON Common;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S
{
    public KSIDENTIFIER Property;
    public VBICODECFILTERING_STATISTICS_CC Statistics;
}
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 VBICODECFILTERING_STATISTICS_COMMON
    Public InputSRBsProcessed As UInteger
    Public OutputSRBsProcessed As UInteger
    Public SRBsIgnored As UInteger
    Public InputSRBsMissing As UInteger
    Public OutputSRBsMissing As UInteger
    Public OutputFailures As UInteger
    Public InternalErrors As UInteger
    Public ExternalErrors As UInteger
    Public InputDiscontinuities As UInteger
    Public DSPFailures As UInteger
    Public TvTunerChanges As UInteger
    Public VBIHeaderChanges As UInteger
    Public LineConfidenceAvg As UInteger
    Public BytesOutput As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure VBICODECFILTERING_STATISTICS_CC
    Public Common As VBICODECFILTERING_STATISTICS_COMMON
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S
    Public Property As KSIDENTIFIER
    Public Statistics As VBICODECFILTERING_STATISTICS_CC
End Structure
import ctypes
from ctypes import wintypes

class KSIDENTIFIER(ctypes.Structure):
    _fields_ = [
        ("Anonymous", _Anonymous_e__Union),
    ]

class VBICODECFILTERING_STATISTICS_COMMON(ctypes.Structure):
    _fields_ = [
        ("InputSRBsProcessed", wintypes.DWORD),
        ("OutputSRBsProcessed", wintypes.DWORD),
        ("SRBsIgnored", wintypes.DWORD),
        ("InputSRBsMissing", wintypes.DWORD),
        ("OutputSRBsMissing", wintypes.DWORD),
        ("OutputFailures", wintypes.DWORD),
        ("InternalErrors", wintypes.DWORD),
        ("ExternalErrors", wintypes.DWORD),
        ("InputDiscontinuities", wintypes.DWORD),
        ("DSPFailures", wintypes.DWORD),
        ("TvTunerChanges", wintypes.DWORD),
        ("VBIHeaderChanges", wintypes.DWORD),
        ("LineConfidenceAvg", wintypes.DWORD),
        ("BytesOutput", wintypes.DWORD),
    ]

class VBICODECFILTERING_STATISTICS_CC(ctypes.Structure):
    _fields_ = [
        ("Common", VBICODECFILTERING_STATISTICS_COMMON),
    ]

class KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S(ctypes.Structure):
    _fields_ = [
        ("Property", KSIDENTIFIER),
        ("Statistics", VBICODECFILTERING_STATISTICS_CC),
    ]
#[repr(C)]
pub struct KSIDENTIFIER {
    pub Anonymous: _Anonymous_e__Union,
}

#[repr(C)]
pub struct VBICODECFILTERING_STATISTICS_COMMON {
    pub InputSRBsProcessed: u32,
    pub OutputSRBsProcessed: u32,
    pub SRBsIgnored: u32,
    pub InputSRBsMissing: u32,
    pub OutputSRBsMissing: u32,
    pub OutputFailures: u32,
    pub InternalErrors: u32,
    pub ExternalErrors: u32,
    pub InputDiscontinuities: u32,
    pub DSPFailures: u32,
    pub TvTunerChanges: u32,
    pub VBIHeaderChanges: u32,
    pub LineConfidenceAvg: u32,
    pub BytesOutput: u32,
}

#[repr(C)]
pub struct VBICODECFILTERING_STATISTICS_CC {
    pub Common: VBICODECFILTERING_STATISTICS_COMMON,
}

#[repr(C)]
pub struct KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S {
    pub Property: KSIDENTIFIER,
    pub Statistics: VBICODECFILTERING_STATISTICS_CC,
}
import "golang.org/x/sys/windows"

type KSIDENTIFIER struct {
	Anonymous _Anonymous_e__Union
}

type VBICODECFILTERING_STATISTICS_COMMON struct {
	InputSRBsProcessed uint32
	OutputSRBsProcessed uint32
	SRBsIgnored uint32
	InputSRBsMissing uint32
	OutputSRBsMissing uint32
	OutputFailures uint32
	InternalErrors uint32
	ExternalErrors uint32
	InputDiscontinuities uint32
	DSPFailures uint32
	TvTunerChanges uint32
	VBIHeaderChanges uint32
	LineConfidenceAvg uint32
	BytesOutput uint32
}

type VBICODECFILTERING_STATISTICS_CC struct {
	Common VBICODECFILTERING_STATISTICS_COMMON
}

type KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S struct {
	Property KSIDENTIFIER
	Statistics VBICODECFILTERING_STATISTICS_CC
}
type
  KSIDENTIFIER = record
    Anonymous: _Anonymous_e__Union;
  end;

  VBICODECFILTERING_STATISTICS_COMMON = record
    InputSRBsProcessed: DWORD;
    OutputSRBsProcessed: DWORD;
    SRBsIgnored: DWORD;
    InputSRBsMissing: DWORD;
    OutputSRBsMissing: DWORD;
    OutputFailures: DWORD;
    InternalErrors: DWORD;
    ExternalErrors: DWORD;
    InputDiscontinuities: DWORD;
    DSPFailures: DWORD;
    TvTunerChanges: DWORD;
    VBIHeaderChanges: DWORD;
    LineConfidenceAvg: DWORD;
    BytesOutput: DWORD;
  end;

  VBICODECFILTERING_STATISTICS_CC = record
    Common: VBICODECFILTERING_STATISTICS_COMMON;
  end;

  KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S = record
    Property: KSIDENTIFIER;
    Statistics: VBICODECFILTERING_STATISTICS_CC;
  end;
const KSIDENTIFIER = extern struct {
    Anonymous: _Anonymous_e__Union,
};

const VBICODECFILTERING_STATISTICS_COMMON = extern struct {
    InputSRBsProcessed: u32,
    OutputSRBsProcessed: u32,
    SRBsIgnored: u32,
    InputSRBsMissing: u32,
    OutputSRBsMissing: u32,
    OutputFailures: u32,
    InternalErrors: u32,
    ExternalErrors: u32,
    InputDiscontinuities: u32,
    DSPFailures: u32,
    TvTunerChanges: u32,
    VBIHeaderChanges: u32,
    LineConfidenceAvg: u32,
    BytesOutput: u32,
};

const VBICODECFILTERING_STATISTICS_CC = extern struct {
    Common: VBICODECFILTERING_STATISTICS_COMMON,
};

const KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S = extern struct {
    Property: KSIDENTIFIER,
    Statistics: VBICODECFILTERING_STATISTICS_CC,
};
type
  KSIDENTIFIER {.bycopy.} = object
    Anonymous: _Anonymous_e__Union

  VBICODECFILTERING_STATISTICS_COMMON {.bycopy.} = object
    InputSRBsProcessed: uint32
    OutputSRBsProcessed: uint32
    SRBsIgnored: uint32
    InputSRBsMissing: uint32
    OutputSRBsMissing: uint32
    OutputFailures: uint32
    InternalErrors: uint32
    ExternalErrors: uint32
    InputDiscontinuities: uint32
    DSPFailures: uint32
    TvTunerChanges: uint32
    VBIHeaderChanges: uint32
    LineConfidenceAvg: uint32
    BytesOutput: uint32

  VBICODECFILTERING_STATISTICS_CC {.bycopy.} = object
    Common: VBICODECFILTERING_STATISTICS_COMMON

  KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S {.bycopy.} = object
    Property: KSIDENTIFIER
    Statistics: VBICODECFILTERING_STATISTICS_CC
struct KSIDENTIFIER
{
    _Anonymous_e__Union Anonymous;
}

struct VBICODECFILTERING_STATISTICS_COMMON
{
    uint InputSRBsProcessed;
    uint OutputSRBsProcessed;
    uint SRBsIgnored;
    uint InputSRBsMissing;
    uint OutputSRBsMissing;
    uint OutputFailures;
    uint InternalErrors;
    uint ExternalErrors;
    uint InputDiscontinuities;
    uint DSPFailures;
    uint TvTunerChanges;
    uint VBIHeaderChanges;
    uint LineConfidenceAvg;
    uint BytesOutput;
}

struct VBICODECFILTERING_STATISTICS_CC
{
    VBICODECFILTERING_STATISTICS_COMMON Common;
}

struct KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S
{
    KSIDENTIFIER Property;
    VBICODECFILTERING_STATISTICS_CC Statistics;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S サイズ: 64 バイト(x64)
dim st, 16    ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; Property : KSIDENTIFIER (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; Statistics : VBICODECFILTERING_STATISTICS_CC (+8, 56byte)  varptr(st)+8 を基点に操作(56byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global KSIDENTIFIER
    #field byte Anonymous 8
#endstruct

#defstruct global VBICODECFILTERING_STATISTICS_COMMON
    #field int InputSRBsProcessed
    #field int OutputSRBsProcessed
    #field int SRBsIgnored
    #field int InputSRBsMissing
    #field int OutputSRBsMissing
    #field int OutputFailures
    #field int InternalErrors
    #field int ExternalErrors
    #field int InputDiscontinuities
    #field int DSPFailures
    #field int TvTunerChanges
    #field int VBIHeaderChanges
    #field int LineConfidenceAvg
    #field int BytesOutput
#endstruct

#defstruct global VBICODECFILTERING_STATISTICS_CC
    #field VBICODECFILTERING_STATISTICS_COMMON Common
#endstruct

#defstruct global KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S
    #field KSIDENTIFIER Property
    #field VBICODECFILTERING_STATISTICS_CC Statistics
#endstruct

stdim st, KSPROPERTY_VBICODECFILTERING_STATISTICS_CC_S        ; NSTRUCT 変数を確保