ホーム › Media.KernelStreaming › KSPROPERTY_SPHLI
KSPROPERTY_SPHLI
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| HLISS | WORD | 2 | +0 | +0 | ハイライト情報のサブストリーム識別子である。 |
| Reserved | WORD | 2 | +2 | +2 | 予約フィールドで、0を設定する。 |
| StartPTM | DWORD | 4 | +4 | +4 | ハイライト開始のプレゼンテーション時刻(PTM)を示す。 |
| EndPTM | DWORD | 4 | +8 | +8 | ハイライト終了のプレゼンテーション時刻(PTM)を示す。 |
| StartX | WORD | 2 | +12 | +12 | ハイライト矩形の左端X座標を示す。 |
| StartY | WORD | 2 | +14 | +14 | ハイライト矩形の上端Y座標を示す。 |
| StopX | WORD | 2 | +16 | +16 | ハイライト矩形の右端X座標を示す。 |
| StopY | WORD | 2 | +18 | +18 | ハイライト矩形の下端Y座標を示す。 |
| ColCon | KS_COLCON | 4 | +20 | +20 | ハイライト領域の色とコントラスト情報を表すKS_COLCONである。 |
各言語での定義
#include <windows.h>
// KS_COLCON (x64 4 / x86 4 バイト)
typedef struct KS_COLCON {
BYTE _bitfield1;
BYTE _bitfield2;
BYTE _bitfield3;
BYTE _bitfield4;
} KS_COLCON;
// KSPROPERTY_SPHLI (x64 24 / x86 24 バイト)
typedef struct KSPROPERTY_SPHLI {
WORD HLISS;
WORD Reserved;
DWORD StartPTM;
DWORD EndPTM;
WORD StartX;
WORD StartY;
WORD StopX;
WORD StopY;
KS_COLCON ColCon;
} KSPROPERTY_SPHLI;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KS_COLCON
{
public byte _bitfield1;
public byte _bitfield2;
public byte _bitfield3;
public byte _bitfield4;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct KSPROPERTY_SPHLI
{
public ushort HLISS;
public ushort Reserved;
public uint StartPTM;
public uint EndPTM;
public ushort StartX;
public ushort StartY;
public ushort StopX;
public ushort StopY;
public KS_COLCON ColCon;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KS_COLCON
Public _bitfield1 As Byte
Public _bitfield2 As Byte
Public _bitfield3 As Byte
Public _bitfield4 As Byte
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure KSPROPERTY_SPHLI
Public HLISS As UShort
Public Reserved As UShort
Public StartPTM As UInteger
Public EndPTM As UInteger
Public StartX As UShort
Public StartY As UShort
Public StopX As UShort
Public StopY As UShort
Public ColCon As KS_COLCON
End Structureimport ctypes
from ctypes import wintypes
class KS_COLCON(ctypes.Structure):
_fields_ = [
("_bitfield1", ctypes.c_ubyte),
("_bitfield2", ctypes.c_ubyte),
("_bitfield3", ctypes.c_ubyte),
("_bitfield4", ctypes.c_ubyte),
]
class KSPROPERTY_SPHLI(ctypes.Structure):
_fields_ = [
("HLISS", ctypes.c_ushort),
("Reserved", ctypes.c_ushort),
("StartPTM", wintypes.DWORD),
("EndPTM", wintypes.DWORD),
("StartX", ctypes.c_ushort),
("StartY", ctypes.c_ushort),
("StopX", ctypes.c_ushort),
("StopY", ctypes.c_ushort),
("ColCon", KS_COLCON),
]#[repr(C)]
pub struct KS_COLCON {
pub _bitfield1: u8,
pub _bitfield2: u8,
pub _bitfield3: u8,
pub _bitfield4: u8,
}
#[repr(C)]
pub struct KSPROPERTY_SPHLI {
pub HLISS: u16,
pub Reserved: u16,
pub StartPTM: u32,
pub EndPTM: u32,
pub StartX: u16,
pub StartY: u16,
pub StopX: u16,
pub StopY: u16,
pub ColCon: KS_COLCON,
}import "golang.org/x/sys/windows"
type KS_COLCON struct {
_bitfield1 byte
_bitfield2 byte
_bitfield3 byte
_bitfield4 byte
}
type KSPROPERTY_SPHLI struct {
HLISS uint16
Reserved uint16
StartPTM uint32
EndPTM uint32
StartX uint16
StartY uint16
StopX uint16
StopY uint16
ColCon KS_COLCON
}type
KS_COLCON = record
_bitfield1: Byte;
_bitfield2: Byte;
_bitfield3: Byte;
_bitfield4: Byte;
end;
KSPROPERTY_SPHLI = record
HLISS: Word;
Reserved: Word;
StartPTM: DWORD;
EndPTM: DWORD;
StartX: Word;
StartY: Word;
StopX: Word;
StopY: Word;
ColCon: KS_COLCON;
end;const KS_COLCON = extern struct {
_bitfield1: u8,
_bitfield2: u8,
_bitfield3: u8,
_bitfield4: u8,
};
const KSPROPERTY_SPHLI = extern struct {
HLISS: u16,
Reserved: u16,
StartPTM: u32,
EndPTM: u32,
StartX: u16,
StartY: u16,
StopX: u16,
StopY: u16,
ColCon: KS_COLCON,
};type
KS_COLCON {.bycopy.} = object
_bitfield1: uint8
_bitfield2: uint8
_bitfield3: uint8
_bitfield4: uint8
KSPROPERTY_SPHLI {.bycopy.} = object
HLISS: uint16
Reserved: uint16
StartPTM: uint32
EndPTM: uint32
StartX: uint16
StartY: uint16
StopX: uint16
StopY: uint16
ColCon: KS_COLCONstruct KS_COLCON
{
ubyte _bitfield1;
ubyte _bitfield2;
ubyte _bitfield3;
ubyte _bitfield4;
}
struct KSPROPERTY_SPHLI
{
ushort HLISS;
ushort Reserved;
uint StartPTM;
uint EndPTM;
ushort StartX;
ushort StartY;
ushort StopX;
ushort StopY;
KS_COLCON ColCon;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; KSPROPERTY_SPHLI サイズ: 24 バイト(x64)
dim st, 6 ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; HLISS : WORD (+0, 2byte) wpoke st,0,値 / 値 = wpeek(st,0)
; Reserved : WORD (+2, 2byte) wpoke st,2,値 / 値 = wpeek(st,2)
; StartPTM : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; EndPTM : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; StartX : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; StartY : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; StopX : WORD (+16, 2byte) wpoke st,16,値 / 値 = wpeek(st,16)
; StopY : WORD (+18, 2byte) wpoke st,18,値 / 値 = wpeek(st,18)
; ColCon : KS_COLCON (+20, 4byte) varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global KS_COLCON
#field byte _bitfield1
#field byte _bitfield2
#field byte _bitfield3
#field byte _bitfield4
#endstruct
#defstruct global KSPROPERTY_SPHLI
#field short HLISS
#field short Reserved
#field int StartPTM
#field int EndPTM
#field short StartX
#field short StartY
#field short StopX
#field short StopY
#field KS_COLCON ColCon
#endstruct
stdim st, KSPROPERTY_SPHLI ; NSTRUCT 変数を確保
st->HLISS = 100
mes "HLISS=" + st->HLISS