Win32 API 日本語リファレンス
ホームDevices.Display › VIDEO_HARDWARE_STATE_HEADER

VIDEO_HARDWARE_STATE_HEADER

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

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

フィールド

フィールドサイズx64x86説明
LengthDWORD4+0+0この状態データ全体のバイト長。
PortValueBYTE48+4+4I/Oポート値を保持するバイト配列。
AttribIndexDataStateDWORD4+52+52属性コントローラのインデックス/データ状態。
BasicSequencerOffsetDWORD4+56+56基本シーケンサレジスタ状態へのオフセット。
BasicCrtContOffsetDWORD4+60+60基本CRTコントローラ状態へのオフセット。
BasicGraphContOffsetDWORD4+64+64基本グラフィックスコントローラ状態へのオフセット。
BasicAttribContOffsetDWORD4+68+68基本属性コントローラ状態へのオフセット。
BasicDacOffsetDWORD4+72+72基本DAC状態へのオフセット。
BasicLatchesOffsetDWORD4+76+76基本ラッチ状態へのオフセット。
ExtendedSequencerOffsetDWORD4+80+80拡張シーケンサ状態へのオフセット。
ExtendedCrtContOffsetDWORD4+84+84拡張CRTコントローラ状態へのオフセット。
ExtendedGraphContOffsetDWORD4+88+88拡張グラフィックスコントローラ状態へのオフセット。
ExtendedAttribContOffsetDWORD4+92+92拡張属性コントローラ状態へのオフセット。
ExtendedDacOffsetDWORD4+96+96拡張DAC状態へのオフセット。
ExtendedValidatorStateOffsetDWORD4+100+100拡張バリデータ状態へのオフセット。
ExtendedMiscDataOffsetDWORD4+104+104拡張その他データへのオフセット。
PlaneLengthDWORD4+108+108各ビットプレーンのバイト長。
Plane1OffsetDWORD4+112+112プレーン1のフレームバッファデータへのオフセット。
Plane2OffsetDWORD4+116+116プレーン2へのオフセット。
Plane3OffsetDWORD4+120+120プレーン3へのオフセット。
Plane4OffsetDWORD4+124+124プレーン4へのオフセット。
VGAStateFlagsDWORD4+128+128VGA状態を示すフラグ。
DIBOffsetDWORD4+132+132DIB(デバイス独立ビットマップ)データへのオフセット。
DIBBitsPerPixelDWORD4+136+136DIBの1ピクセルあたりビット数。
DIBXResolutionDWORD4+140+140DIBの横解像度。
DIBYResolutionDWORD4+144+144DIBの縦解像度。
DIBXlatOffsetDWORD4+148+148DIB色変換テーブルへのオフセット。
DIBXlatLengthDWORD4+152+152DIB色変換テーブルの長さ。
VesaInfoOffsetDWORD4+156+156VESA情報へのオフセット。
FrameBufferDatavoid*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 Structure
import 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: pointer
struct 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