ホーム › Devices.Display › VIDEO_HARDWARE_STATE_HEADER
VIDEO_HARDWARE_STATE_HEADER
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| Length | DWORD | 4 | +0 | +0 | この状態データ全体のバイト長。 |
| PortValue | BYTE | 48 | +4 | +4 | I/Oポート値を保持するバイト配列。 |
| AttribIndexDataState | DWORD | 4 | +52 | +52 | 属性コントローラのインデックス/データ状態。 |
| BasicSequencerOffset | DWORD | 4 | +56 | +56 | 基本シーケンサレジスタ状態へのオフセット。 |
| BasicCrtContOffset | DWORD | 4 | +60 | +60 | 基本CRTコントローラ状態へのオフセット。 |
| BasicGraphContOffset | DWORD | 4 | +64 | +64 | 基本グラフィックスコントローラ状態へのオフセット。 |
| BasicAttribContOffset | DWORD | 4 | +68 | +68 | 基本属性コントローラ状態へのオフセット。 |
| BasicDacOffset | DWORD | 4 | +72 | +72 | 基本DAC状態へのオフセット。 |
| BasicLatchesOffset | DWORD | 4 | +76 | +76 | 基本ラッチ状態へのオフセット。 |
| ExtendedSequencerOffset | DWORD | 4 | +80 | +80 | 拡張シーケンサ状態へのオフセット。 |
| ExtendedCrtContOffset | DWORD | 4 | +84 | +84 | 拡張CRTコントローラ状態へのオフセット。 |
| ExtendedGraphContOffset | DWORD | 4 | +88 | +88 | 拡張グラフィックスコントローラ状態へのオフセット。 |
| ExtendedAttribContOffset | DWORD | 4 | +92 | +92 | 拡張属性コントローラ状態へのオフセット。 |
| ExtendedDacOffset | DWORD | 4 | +96 | +96 | 拡張DAC状態へのオフセット。 |
| ExtendedValidatorStateOffset | DWORD | 4 | +100 | +100 | 拡張バリデータ状態へのオフセット。 |
| ExtendedMiscDataOffset | DWORD | 4 | +104 | +104 | 拡張その他データへのオフセット。 |
| PlaneLength | DWORD | 4 | +108 | +108 | 各ビットプレーンのバイト長。 |
| Plane1Offset | DWORD | 4 | +112 | +112 | プレーン1のフレームバッファデータへのオフセット。 |
| Plane2Offset | DWORD | 4 | +116 | +116 | プレーン2へのオフセット。 |
| Plane3Offset | DWORD | 4 | +120 | +120 | プレーン3へのオフセット。 |
| Plane4Offset | DWORD | 4 | +124 | +124 | プレーン4へのオフセット。 |
| VGAStateFlags | DWORD | 4 | +128 | +128 | VGA状態を示すフラグ。 |
| DIBOffset | DWORD | 4 | +132 | +132 | DIB(デバイス独立ビットマップ)データへのオフセット。 |
| DIBBitsPerPixel | DWORD | 4 | +136 | +136 | DIBの1ピクセルあたりビット数。 |
| DIBXResolution | DWORD | 4 | +140 | +140 | DIBの横解像度。 |
| DIBYResolution | DWORD | 4 | +144 | +144 | DIBの縦解像度。 |
| DIBXlatOffset | DWORD | 4 | +148 | +148 | DIB色変換テーブルへのオフセット。 |
| DIBXlatLength | DWORD | 4 | +152 | +152 | DIB色変換テーブルの長さ。 |
| VesaInfoOffset | DWORD | 4 | +156 | +156 | VESA情報へのオフセット。 |
| FrameBufferData | void* | 8/4 | +160 | +160 | フレームバッファデータへのポインタ。 |
各言語での定義
#include <windows.h>
// VIDEO_HARDWARE_STATE_HEADER (x64 168 / x86 164 バイト)
typedef struct VIDEO_HARDWARE_STATE_HEADER {
DWORD Length;
BYTE PortValue[48];
DWORD AttribIndexDataState;
DWORD BasicSequencerOffset;
DWORD BasicCrtContOffset;
DWORD BasicGraphContOffset;
DWORD BasicAttribContOffset;
DWORD BasicDacOffset;
DWORD BasicLatchesOffset;
DWORD ExtendedSequencerOffset;
DWORD ExtendedCrtContOffset;
DWORD ExtendedGraphContOffset;
DWORD ExtendedAttribContOffset;
DWORD ExtendedDacOffset;
DWORD ExtendedValidatorStateOffset;
DWORD ExtendedMiscDataOffset;
DWORD PlaneLength;
DWORD Plane1Offset;
DWORD Plane2Offset;
DWORD Plane3Offset;
DWORD Plane4Offset;
DWORD VGAStateFlags;
DWORD DIBOffset;
DWORD DIBBitsPerPixel;
DWORD DIBXResolution;
DWORD DIBYResolution;
DWORD DIBXlatOffset;
DWORD DIBXlatLength;
DWORD VesaInfoOffset;
void* FrameBufferData;
} VIDEO_HARDWARE_STATE_HEADER;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct VIDEO_HARDWARE_STATE_HEADER
{
public uint Length;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 48)] public byte[] PortValue;
public uint AttribIndexDataState;
public uint BasicSequencerOffset;
public uint BasicCrtContOffset;
public uint BasicGraphContOffset;
public uint BasicAttribContOffset;
public uint BasicDacOffset;
public uint BasicLatchesOffset;
public uint ExtendedSequencerOffset;
public uint ExtendedCrtContOffset;
public uint ExtendedGraphContOffset;
public uint ExtendedAttribContOffset;
public uint ExtendedDacOffset;
public uint ExtendedValidatorStateOffset;
public uint ExtendedMiscDataOffset;
public uint PlaneLength;
public uint Plane1Offset;
public uint Plane2Offset;
public uint Plane3Offset;
public uint Plane4Offset;
public uint VGAStateFlags;
public uint DIBOffset;
public uint DIBBitsPerPixel;
public uint DIBXResolution;
public uint DIBYResolution;
public uint DIBXlatOffset;
public uint DIBXlatLength;
public uint VesaInfoOffset;
public IntPtr FrameBufferData;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure VIDEO_HARDWARE_STATE_HEADER
Public Length As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=48)> Public PortValue() As Byte
Public AttribIndexDataState As UInteger
Public BasicSequencerOffset As UInteger
Public BasicCrtContOffset As UInteger
Public BasicGraphContOffset As UInteger
Public BasicAttribContOffset As UInteger
Public BasicDacOffset As UInteger
Public BasicLatchesOffset As UInteger
Public ExtendedSequencerOffset As UInteger
Public ExtendedCrtContOffset As UInteger
Public ExtendedGraphContOffset As UInteger
Public ExtendedAttribContOffset As UInteger
Public ExtendedDacOffset As UInteger
Public ExtendedValidatorStateOffset As UInteger
Public ExtendedMiscDataOffset As UInteger
Public PlaneLength As UInteger
Public Plane1Offset As UInteger
Public Plane2Offset As UInteger
Public Plane3Offset As UInteger
Public Plane4Offset As UInteger
Public VGAStateFlags As UInteger
Public DIBOffset As UInteger
Public DIBBitsPerPixel As UInteger
Public DIBXResolution As UInteger
Public DIBYResolution As UInteger
Public DIBXlatOffset As UInteger
Public DIBXlatLength As UInteger
Public VesaInfoOffset As UInteger
Public FrameBufferData As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class VIDEO_HARDWARE_STATE_HEADER(ctypes.Structure):
_fields_ = [
("Length", wintypes.DWORD),
("PortValue", ctypes.c_ubyte * 48),
("AttribIndexDataState", wintypes.DWORD),
("BasicSequencerOffset", wintypes.DWORD),
("BasicCrtContOffset", wintypes.DWORD),
("BasicGraphContOffset", wintypes.DWORD),
("BasicAttribContOffset", wintypes.DWORD),
("BasicDacOffset", wintypes.DWORD),
("BasicLatchesOffset", wintypes.DWORD),
("ExtendedSequencerOffset", wintypes.DWORD),
("ExtendedCrtContOffset", wintypes.DWORD),
("ExtendedGraphContOffset", wintypes.DWORD),
("ExtendedAttribContOffset", wintypes.DWORD),
("ExtendedDacOffset", wintypes.DWORD),
("ExtendedValidatorStateOffset", wintypes.DWORD),
("ExtendedMiscDataOffset", wintypes.DWORD),
("PlaneLength", wintypes.DWORD),
("Plane1Offset", wintypes.DWORD),
("Plane2Offset", wintypes.DWORD),
("Plane3Offset", wintypes.DWORD),
("Plane4Offset", wintypes.DWORD),
("VGAStateFlags", wintypes.DWORD),
("DIBOffset", wintypes.DWORD),
("DIBBitsPerPixel", wintypes.DWORD),
("DIBXResolution", wintypes.DWORD),
("DIBYResolution", wintypes.DWORD),
("DIBXlatOffset", wintypes.DWORD),
("DIBXlatLength", wintypes.DWORD),
("VesaInfoOffset", wintypes.DWORD),
("FrameBufferData", ctypes.c_void_p),
]#[repr(C)]
pub struct VIDEO_HARDWARE_STATE_HEADER {
pub Length: u32,
pub PortValue: [u8; 48],
pub AttribIndexDataState: u32,
pub BasicSequencerOffset: u32,
pub BasicCrtContOffset: u32,
pub BasicGraphContOffset: u32,
pub BasicAttribContOffset: u32,
pub BasicDacOffset: u32,
pub BasicLatchesOffset: u32,
pub ExtendedSequencerOffset: u32,
pub ExtendedCrtContOffset: u32,
pub ExtendedGraphContOffset: u32,
pub ExtendedAttribContOffset: u32,
pub ExtendedDacOffset: u32,
pub ExtendedValidatorStateOffset: u32,
pub ExtendedMiscDataOffset: u32,
pub PlaneLength: u32,
pub Plane1Offset: u32,
pub Plane2Offset: u32,
pub Plane3Offset: u32,
pub Plane4Offset: u32,
pub VGAStateFlags: u32,
pub DIBOffset: u32,
pub DIBBitsPerPixel: u32,
pub DIBXResolution: u32,
pub DIBYResolution: u32,
pub DIBXlatOffset: u32,
pub DIBXlatLength: u32,
pub VesaInfoOffset: u32,
pub FrameBufferData: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type VIDEO_HARDWARE_STATE_HEADER struct {
Length uint32
PortValue [48]byte
AttribIndexDataState uint32
BasicSequencerOffset uint32
BasicCrtContOffset uint32
BasicGraphContOffset uint32
BasicAttribContOffset uint32
BasicDacOffset uint32
BasicLatchesOffset uint32
ExtendedSequencerOffset uint32
ExtendedCrtContOffset uint32
ExtendedGraphContOffset uint32
ExtendedAttribContOffset uint32
ExtendedDacOffset uint32
ExtendedValidatorStateOffset uint32
ExtendedMiscDataOffset uint32
PlaneLength uint32
Plane1Offset uint32
Plane2Offset uint32
Plane3Offset uint32
Plane4Offset uint32
VGAStateFlags uint32
DIBOffset uint32
DIBBitsPerPixel uint32
DIBXResolution uint32
DIBYResolution uint32
DIBXlatOffset uint32
DIBXlatLength uint32
VesaInfoOffset uint32
FrameBufferData uintptr
}type
VIDEO_HARDWARE_STATE_HEADER = record
Length: DWORD;
PortValue: array[0..47] of Byte;
AttribIndexDataState: DWORD;
BasicSequencerOffset: DWORD;
BasicCrtContOffset: DWORD;
BasicGraphContOffset: DWORD;
BasicAttribContOffset: DWORD;
BasicDacOffset: DWORD;
BasicLatchesOffset: DWORD;
ExtendedSequencerOffset: DWORD;
ExtendedCrtContOffset: DWORD;
ExtendedGraphContOffset: DWORD;
ExtendedAttribContOffset: DWORD;
ExtendedDacOffset: DWORD;
ExtendedValidatorStateOffset: DWORD;
ExtendedMiscDataOffset: DWORD;
PlaneLength: DWORD;
Plane1Offset: DWORD;
Plane2Offset: DWORD;
Plane3Offset: DWORD;
Plane4Offset: DWORD;
VGAStateFlags: DWORD;
DIBOffset: DWORD;
DIBBitsPerPixel: DWORD;
DIBXResolution: DWORD;
DIBYResolution: DWORD;
DIBXlatOffset: DWORD;
DIBXlatLength: DWORD;
VesaInfoOffset: DWORD;
FrameBufferData: Pointer;
end;const VIDEO_HARDWARE_STATE_HEADER = extern struct {
Length: u32,
PortValue: [48]u8,
AttribIndexDataState: u32,
BasicSequencerOffset: u32,
BasicCrtContOffset: u32,
BasicGraphContOffset: u32,
BasicAttribContOffset: u32,
BasicDacOffset: u32,
BasicLatchesOffset: u32,
ExtendedSequencerOffset: u32,
ExtendedCrtContOffset: u32,
ExtendedGraphContOffset: u32,
ExtendedAttribContOffset: u32,
ExtendedDacOffset: u32,
ExtendedValidatorStateOffset: u32,
ExtendedMiscDataOffset: u32,
PlaneLength: u32,
Plane1Offset: u32,
Plane2Offset: u32,
Plane3Offset: u32,
Plane4Offset: u32,
VGAStateFlags: u32,
DIBOffset: u32,
DIBBitsPerPixel: u32,
DIBXResolution: u32,
DIBYResolution: u32,
DIBXlatOffset: u32,
DIBXlatLength: u32,
VesaInfoOffset: u32,
FrameBufferData: ?*anyopaque,
};type
VIDEO_HARDWARE_STATE_HEADER {.bycopy.} = object
Length: uint32
PortValue: array[48, uint8]
AttribIndexDataState: uint32
BasicSequencerOffset: uint32
BasicCrtContOffset: uint32
BasicGraphContOffset: uint32
BasicAttribContOffset: uint32
BasicDacOffset: uint32
BasicLatchesOffset: uint32
ExtendedSequencerOffset: uint32
ExtendedCrtContOffset: uint32
ExtendedGraphContOffset: uint32
ExtendedAttribContOffset: uint32
ExtendedDacOffset: uint32
ExtendedValidatorStateOffset: uint32
ExtendedMiscDataOffset: uint32
PlaneLength: uint32
Plane1Offset: uint32
Plane2Offset: uint32
Plane3Offset: uint32
Plane4Offset: uint32
VGAStateFlags: uint32
DIBOffset: uint32
DIBBitsPerPixel: uint32
DIBXResolution: uint32
DIBYResolution: uint32
DIBXlatOffset: uint32
DIBXlatLength: uint32
VesaInfoOffset: uint32
FrameBufferData: pointerstruct VIDEO_HARDWARE_STATE_HEADER
{
uint Length;
ubyte[48] PortValue;
uint AttribIndexDataState;
uint BasicSequencerOffset;
uint BasicCrtContOffset;
uint BasicGraphContOffset;
uint BasicAttribContOffset;
uint BasicDacOffset;
uint BasicLatchesOffset;
uint ExtendedSequencerOffset;
uint ExtendedCrtContOffset;
uint ExtendedGraphContOffset;
uint ExtendedAttribContOffset;
uint ExtendedDacOffset;
uint ExtendedValidatorStateOffset;
uint ExtendedMiscDataOffset;
uint PlaneLength;
uint Plane1Offset;
uint Plane2Offset;
uint Plane3Offset;
uint Plane4Offset;
uint VGAStateFlags;
uint DIBOffset;
uint DIBBitsPerPixel;
uint DIBXResolution;
uint DIBYResolution;
uint DIBXlatOffset;
uint DIBXlatLength;
uint VesaInfoOffset;
void* FrameBufferData;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; VIDEO_HARDWARE_STATE_HEADER サイズ: 164 バイト(x86)
dim st, 41 ; 4byte整数×41(構造体サイズ 164 / 4 切り上げ)
; Length : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PortValue : BYTE (+4, 48byte) varptr(st)+4 を基点に操作(48byte:入れ子/配列)
; AttribIndexDataState : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; BasicSequencerOffset : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; BasicCrtContOffset : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; BasicGraphContOffset : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; BasicAttribContOffset : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; BasicDacOffset : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; BasicLatchesOffset : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; ExtendedSequencerOffset : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ExtendedCrtContOffset : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ExtendedGraphContOffset : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ExtendedAttribContOffset : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ExtendedDacOffset : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ExtendedValidatorStateOffset : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; ExtendedMiscDataOffset : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; PlaneLength : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; Plane1Offset : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; Plane2Offset : DWORD (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; Plane3Offset : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; Plane4Offset : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; VGAStateFlags : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; DIBOffset : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; DIBBitsPerPixel : DWORD (+136, 4byte) st.34 = 値 / 値 = st.34 (lpoke/lpeek も可)
; DIBXResolution : DWORD (+140, 4byte) st.35 = 値 / 値 = st.35 (lpoke/lpeek も可)
; DIBYResolution : DWORD (+144, 4byte) st.36 = 値 / 値 = st.36 (lpoke/lpeek も可)
; DIBXlatOffset : DWORD (+148, 4byte) st.37 = 値 / 値 = st.37 (lpoke/lpeek も可)
; DIBXlatLength : DWORD (+152, 4byte) st.38 = 値 / 値 = st.38 (lpoke/lpeek も可)
; VesaInfoOffset : DWORD (+156, 4byte) st.39 = 値 / 値 = st.39 (lpoke/lpeek も可)
; FrameBufferData : void* (+160, 4byte) st.40 = 値 / 値 = st.40 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; VIDEO_HARDWARE_STATE_HEADER サイズ: 168 バイト(x64)
dim st, 42 ; 4byte整数×42(構造体サイズ 168 / 4 切り上げ)
; Length : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PortValue : BYTE (+4, 48byte) varptr(st)+4 を基点に操作(48byte:入れ子/配列)
; AttribIndexDataState : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; BasicSequencerOffset : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; BasicCrtContOffset : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; BasicGraphContOffset : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; BasicAttribContOffset : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; BasicDacOffset : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; BasicLatchesOffset : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; ExtendedSequencerOffset : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; ExtendedCrtContOffset : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; ExtendedGraphContOffset : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ExtendedAttribContOffset : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ExtendedDacOffset : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ExtendedValidatorStateOffset : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; ExtendedMiscDataOffset : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; PlaneLength : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; Plane1Offset : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; Plane2Offset : DWORD (+116, 4byte) st.29 = 値 / 値 = st.29 (lpoke/lpeek も可)
; Plane3Offset : DWORD (+120, 4byte) st.30 = 値 / 値 = st.30 (lpoke/lpeek も可)
; Plane4Offset : DWORD (+124, 4byte) st.31 = 値 / 値 = st.31 (lpoke/lpeek も可)
; VGAStateFlags : DWORD (+128, 4byte) st.32 = 値 / 値 = st.32 (lpoke/lpeek も可)
; DIBOffset : DWORD (+132, 4byte) st.33 = 値 / 値 = st.33 (lpoke/lpeek も可)
; DIBBitsPerPixel : DWORD (+136, 4byte) st.34 = 値 / 値 = st.34 (lpoke/lpeek も可)
; DIBXResolution : DWORD (+140, 4byte) st.35 = 値 / 値 = st.35 (lpoke/lpeek も可)
; DIBYResolution : DWORD (+144, 4byte) st.36 = 値 / 値 = st.36 (lpoke/lpeek も可)
; DIBXlatOffset : DWORD (+148, 4byte) st.37 = 値 / 値 = st.37 (lpoke/lpeek も可)
; DIBXlatLength : DWORD (+152, 4byte) st.38 = 値 / 値 = st.38 (lpoke/lpeek も可)
; VesaInfoOffset : DWORD (+156, 4byte) st.39 = 値 / 値 = st.39 (lpoke/lpeek も可)
; FrameBufferData : void* (+160, 8byte) qpoke st,160,値 / qpeek(st,160) ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global VIDEO_HARDWARE_STATE_HEADER
#field int Length
#field byte PortValue 48
#field int AttribIndexDataState
#field int BasicSequencerOffset
#field int BasicCrtContOffset
#field int BasicGraphContOffset
#field int BasicAttribContOffset
#field int BasicDacOffset
#field int BasicLatchesOffset
#field int ExtendedSequencerOffset
#field int ExtendedCrtContOffset
#field int ExtendedGraphContOffset
#field int ExtendedAttribContOffset
#field int ExtendedDacOffset
#field int ExtendedValidatorStateOffset
#field int ExtendedMiscDataOffset
#field int PlaneLength
#field int Plane1Offset
#field int Plane2Offset
#field int Plane3Offset
#field int Plane4Offset
#field int VGAStateFlags
#field int DIBOffset
#field int DIBBitsPerPixel
#field int DIBXResolution
#field int DIBYResolution
#field int DIBXlatOffset
#field int DIBXlatLength
#field int VesaInfoOffset
#field intptr FrameBufferData
#endstruct
stdim st, VIDEO_HARDWARE_STATE_HEADER ; NSTRUCT 変数を確保
st->Length = 100
mes "Length=" + st->Length