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

VIDEOPARAMETERS

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

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

フィールド

フィールドサイズx64x86説明
GuidGUID16+0+0この構造体のグローバル一意識別子 (GUID) {02C62061-1097-11d1-920F-00A024DF156E} を指定します。ビデオ ミニポート ドライバーは、構造体を処理する前に構造体の先頭にある GUID を検証しなければなりません。
dwOffsetDWORD4+16+16予約済みであり、ビデオ ミニポート ドライバーは無視してください。
dwCommandDWORD4+20+20

ドライバーが実行する動作を示します。このメンバーには次のいずれかの値を指定できます。

VP_COMMAND_GET

ミニポート ドライバーは、dwFlags に該当するフラグを設定し、そのフラグに対応するメンバーの値を設定することによって、デバイスのすべての TV コネクタ機能、現在の TV コネクタ設定、コピー プロテクション機能、および現在のコピー プロテクション設定を返します。

VP_COMMAND_SET

ミニポート ドライバーは、dwFlags に設定されたフラグに対応するこの構造体のメンバーに従って、TV コネクタおよびコピー プロテクションのハードウェアを設定します。

dwFlagsDWORD4+24+24

この構造体のどのメンバーが有効なデータを含むかを示します。dwCommandVP_COMMAND_GET の場合、ドライバーは有効なデータを返したメンバーに対応するビットをこのメンバーに設定します。dwCommandVP_COMMAND_SET の場合、ドライバーはこのメンバーに設定されたビットに対応するメンバーの値に従って、ハードウェアの機能を設定します。このメンバーには、次の表の 1 列目に示す値のビット単位の OR を指定できます。

フラグ 対応するメンバー コマンド
VP_FLAGS_BRIGHTNESS dwBrightness get/set
VP_FLAGS_CONTRAST dwContrast get/set
VP_FLAGS_COPYPROTECT dwCPType

dwCPCommand

dwCPStandard

dwCPKey

bCP_APSTriggerBits

bOEMCopyProtection

get/set

set

get

set

set

get/set

VP_FLAGS_FLICKER dwFlickerFilter get/set
VP_FLAGS_MAX_UNSCALED dwMaxUnscaledX

dwMaxUnscaledY

get

get

VP_FLAGS_OVERSCAN dwOverscanX

dwOverscanY

get/set

get/set

VP_FLAGS_POSITION dwPositionX

dwPositionY

get/set

get/set

VP_FLAGS_TV_MODE dwMode

dwAvailableModes

get/set

get

VP_FLAGS_TV_STANDARD dwTVStandard

dwAvailableTVStandard

get/set

get

dwModeDWORD4+28+28

現在の再生モードを指定します。このメンバーは VP_COMMAND_SETVP_COMMAND_GET の両方のコマンドで有効であり、次のいずれかの値を指定できます。

VP_MODE_TV_PLAYBACK

フリッカー フィルターをオフ、オーバースキャン表示をオンにした、ビデオ再生に最適なフィールドのセットを表します。

VP_MODE_WIN_GRAPHICS

フリッカー フィルターを最大、オーバースキャン表示をオフにした、Windows の表示に最適な表示設定を表します。

dwTVStandardDWORD4+32+32

現在の世界のテレビ標準です。このメンバーは VP_COMMAND_SETVP_COMMAND_GET の両方のコマンドで有効であり、次のいずれかの値を指定できます。

VP_TV_STANDARD_NTSC_M

VP_TV_STANDARD_NTSC_M_J

VP_TV_STANDARD_NTSC_433

VP_TV_STANDARD_PAL_B

VP_TV_STANDARD_PAL_D

VP_TV_STANDARD_PAL_G

VP_TV_STANDARD_PAL_H

VP_TV_STANDARD_PAL_I

VP_TV_STANDARD_PAL_M

VP_TV_STANDARD_PAL_N

VP_TV_STANDARD_PAL_60

VP_TV_STANDARD_SECAM_B

VP_TV_STANDARD_SECAM_D

VP_TV_STANDARD_SECAM_G

VP_TV_STANDARD_SECAM_H

VP_TV_STANDARD_SECAM_K

VP_TV_STANDARD_SECAM_K1

VP_TV_STANDARD_SECAM_L

VP_TV_STANDARD_SECAM_L1

VP_TV_STANDARD_WIN_VGA

dwAvailableModesDWORD4+36+36

デバイスが対応している再生モードを示します。このメンバーは VP_COMMAND_GET コマンドでのみ有効であり、次の値のビット単位の OR を指定できます。

VP_MODE_TV_PLAYBACK

VP_MODE_WIN_GRAPHICS

dwAvailableTVStandardDWORD4+40+40

利用可能なすべての世界のテレビ標準を指定します。このメンバーは VP_COMMAND_GET コマンドでのみ有効であり、次の値のビット単位の OR を指定できます。

VP_TV_STANDARD_NTSC_M

VP_TV_STANDARD_NTSC_M_J

VP_TV_STANDARD_NTSC_433

VP_TV_STANDARD_PAL_B

VP_TV_STANDARD_PAL_D

VP_TV_STANDARD_PAL_G

VP_TV_STANDARD_PAL_H

VP_TV_STANDARD_PAL_I

VP_TV_STANDARD_PAL_M

VP_TV_STANDARD_PAL_N

VP_TV_STANDARD_PAL_60

VP_TV_STANDARD_SECAM_B

VP_TV_STANDARD_SECAM_D

VP_TV_STANDARD_SECAM_G

VP_TV_STANDARD_SECAM_H

VP_TV_STANDARD_SECAM_K

VP_TV_STANDARD_SECAM_K1

VP_TV_STANDARD_SECAM_L

VP_TV_STANDARD_SECAM_L1

VP_TV_STANDARD_WIN_VGA

dwFlickerFilterDWORD4+44+44フリッカー フィルターの状態を示す、パーセントの 10 分の 1 単位の値です。このメンバーには [0,1000] の範囲の値を指定でき、VP_COMMAND_GETVP_COMMAND_SET の両方で有効です。
dwOverScanXDWORD4+48+48x 方向のオーバースキャン量を示す、パーセントの 10 分の 1 単位の値です。このメンバーには [0,1000] の範囲の値を指定でき、VP_COMMAND_GETVP_COMMAND_SET の両方で有効です。
dwOverScanYDWORD4+52+52y 方向のオーバースキャン量を示す、パーセントの 10 分の 1 単位の値です。このメンバーには [0,1000] の範囲の値を指定でき、VP_COMMAND_GETVP_COMMAND_SET の両方で有効です。
dwMaxUnscaledXDWORD4+56+56ハードウェアによるビデオ イメージのスケーリングを行わずに TV が表示できる最大の x 解像度です。dwCommandVP_COMMAND_GET の場合、ミニポート ドライバーはこのメンバーに値を設定しなければなりません。このメンバーは VP_COMMAND_SET では無効です。
dwMaxUnscaledYDWORD4+60+60ハードウェアによるビデオ イメージのスケーリングを行わずに TV が表示できる最大の y 解像度です。dwCommandVP_COMMAND_GET の場合、ミニポート ドライバーはこのメンバーに値を設定しなければなりません。このメンバーは VP_COMMAND_SET では無効です。
dwPositionXDWORD4+64+64TV 上のイメージの現在の x 位置を決定するためにハードウェアが使用する値です。このメンバーはピクセル単位で指定し、VP_COMMAND_GETVP_COMMAND_SET の両方で有効です。
dwPositionYDWORD4+68+68TV 上のイメージの現在の y 位置を決定するためにハードウェアが使用する値です。このメンバーは走査線単位で指定し、VP_COMMAND_GETVP_COMMAND_SET の両方で有効です。
dwBrightnessDWORD4+72+72TV の明るさ設定を示すパーセント値です。このメンバーには [0,100] の範囲の値を指定でき、VP_COMMAND_GETVP_COMMAND_SET の両方で有効です。
dwContrastDWORD4+76+76TV のコントラスト設定を示すパーセント値です。このメンバーには [0,100] の範囲の値を指定でき、VP_COMMAND_GETVP_COMMAND_SET の両方で有効です。
dwCPTypeDWORD4+80+80デバイスがサポートするコピー プロテクションの種類を指定します。このメンバーは VP_COMMAND_SETVP_COMMAND_GET の両方のコマンドで有効であり、CP_TYPE_APS_TRIGGER を指定できます。
dwCPCommandDWORD4+84+84

コピー プロテクションのコマンドです。このメンバーは VP_COMMAND_SET コマンドでのみ有効であり、次のいずれかの値を指定できます。

VP_CP_CMD_ACTIVATE

ミニポート ドライバーはコピー プロテクションを有効にし、一意のコピー プロテクション キーを生成して dwCPKey で返します。

VP_CP_CMD_CHANGE

dwCPKey のコピー プロテクション キーが有効な場合、ミニポート ドライバーは bCP_APSTriggerBits のトリガー データに基づいてコピー プロテクションを変更します。

VP_CP_CMD_DEACTIVATE

dwCPKey のコピー プロテクション キーが有効な場合、ミニポート ドライバーはコピー プロテクションを無効にします。

dwCPStandardDWORD4+88+88

コピー プロテクションの種類が利用可能な TV 標準です。このメンバーは VP_COMMAND_GET コマンドでのみ有効であり、次の値のビット単位の OR を指定できます。

VP_TV_STANDARD_NTSC_M

VP_TV_STANDARD_NTSC_M_J

VP_TV_STANDARD_NTSC_433

VP_TV_STANDARD_PAL_B

VP_TV_STANDARD_PAL_D

VP_TV_STANDARD_PAL_G

VP_TV_STANDARD_PAL_H

VP_TV_STANDARD_PAL_I

VP_TV_STANDARD_PAL_M

VP_TV_STANDARD_PAL_N

VP_TV_STANDARD_PAL_60

VP_TV_STANDARD_SECAM_B

VP_TV_STANDARD_SECAM_D

VP_TV_STANDARD_SECAM_G

VP_TV_STANDARD_SECAM_H

VP_TV_STANDARD_SECAM_K

VP_TV_STANDARD_SECAM_K1

VP_TV_STANDARD_SECAM_L

VP_TV_STANDARD_SECAM_L1

VP_TV_STANDARD_WIN_VGA

dwCPKeyDWORD4+92+92このドライバー インスタンスに固有の、ドライバーが生成したコピー プロテクション キーです。このメンバーは VP_COMMAND_SET コマンドでのみ有効です。ミニポート ドライバーは、dwCPCommandVP_CP_CMD_ACTIVATE に設定されている場合に、このキーを生成して返します。呼び出し元は、dwCPCommand フィールドが VP_CP_CMD_DEACTIVATE または VP_CP_CMD_CHANGE のいずれかである場合に、このキーを設定しなければなりません。呼び出し元が誤ったキーを設定した場合、ドライバーは現在のコピー プロテクション設定を変更してはなりません。
bCP_APSTriggerBitsDWORD4+96+96DVD のアナログ プロテクション システム (APS) トリガー ビット データを指定します。ビット 0 と 1 が有効です。このメンバーは VP_COMMAND_SET コマンドでのみ有効です。
bOEMCopyProtectionBYTE256+100+100OEM 固有のコピー プロテクション データです。このメンバーは VP_COMMAND_SETVP_COMMAND_GET の両方のコマンドで有効です。

公式ドキュメント

ビデオ ミニポート ドライバーは、IOCTL 要求が IOCTL_VIDEO_HANDLE_VIDEOPARAMETERS の場合、VIDEO_REQUEST_PACKETInputBuffer メンバーで VIDEOPARAMETERS 構造体へのポインターを受け取ります。VIDEOPARAMETERS 構造体の dwCommand メンバーに応じて、ミニポート ドライバーはデバイスのテレビ コネクタおよびコピー プロテクションの機能を取得または設定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// VIDEOPARAMETERS  (x64 356 / x86 356 バイト)
typedef struct VIDEOPARAMETERS {
    GUID Guid;
    DWORD dwOffset;
    DWORD dwCommand;
    DWORD dwFlags;
    DWORD dwMode;
    DWORD dwTVStandard;
    DWORD dwAvailableModes;
    DWORD dwAvailableTVStandard;
    DWORD dwFlickerFilter;
    DWORD dwOverScanX;
    DWORD dwOverScanY;
    DWORD dwMaxUnscaledX;
    DWORD dwMaxUnscaledY;
    DWORD dwPositionX;
    DWORD dwPositionY;
    DWORD dwBrightness;
    DWORD dwContrast;
    DWORD dwCPType;
    DWORD dwCPCommand;
    DWORD dwCPStandard;
    DWORD dwCPKey;
    DWORD bCP_APSTriggerBits;
    BYTE bOEMCopyProtection[256];
} VIDEOPARAMETERS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct VIDEOPARAMETERS
{
    public Guid Guid;
    public uint dwOffset;
    public uint dwCommand;
    public uint dwFlags;
    public uint dwMode;
    public uint dwTVStandard;
    public uint dwAvailableModes;
    public uint dwAvailableTVStandard;
    public uint dwFlickerFilter;
    public uint dwOverScanX;
    public uint dwOverScanY;
    public uint dwMaxUnscaledX;
    public uint dwMaxUnscaledY;
    public uint dwPositionX;
    public uint dwPositionY;
    public uint dwBrightness;
    public uint dwContrast;
    public uint dwCPType;
    public uint dwCPCommand;
    public uint dwCPStandard;
    public uint dwCPKey;
    public uint bCP_APSTriggerBits;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 256)] public byte[] bOEMCopyProtection;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure VIDEOPARAMETERS
    Public Guid As Guid
    Public dwOffset As UInteger
    Public dwCommand As UInteger
    Public dwFlags As UInteger
    Public dwMode As UInteger
    Public dwTVStandard As UInteger
    Public dwAvailableModes As UInteger
    Public dwAvailableTVStandard As UInteger
    Public dwFlickerFilter As UInteger
    Public dwOverScanX As UInteger
    Public dwOverScanY As UInteger
    Public dwMaxUnscaledX As UInteger
    Public dwMaxUnscaledY As UInteger
    Public dwPositionX As UInteger
    Public dwPositionY As UInteger
    Public dwBrightness As UInteger
    Public dwContrast As UInteger
    Public dwCPType As UInteger
    Public dwCPCommand As UInteger
    Public dwCPStandard As UInteger
    Public dwCPKey As UInteger
    Public bCP_APSTriggerBits As UInteger
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=256)> Public bOEMCopyProtection() As Byte
End Structure
import ctypes
from ctypes import wintypes

class VIDEOPARAMETERS(ctypes.Structure):
    _fields_ = [
        ("Guid", GUID),
        ("dwOffset", wintypes.DWORD),
        ("dwCommand", wintypes.DWORD),
        ("dwFlags", wintypes.DWORD),
        ("dwMode", wintypes.DWORD),
        ("dwTVStandard", wintypes.DWORD),
        ("dwAvailableModes", wintypes.DWORD),
        ("dwAvailableTVStandard", wintypes.DWORD),
        ("dwFlickerFilter", wintypes.DWORD),
        ("dwOverScanX", wintypes.DWORD),
        ("dwOverScanY", wintypes.DWORD),
        ("dwMaxUnscaledX", wintypes.DWORD),
        ("dwMaxUnscaledY", wintypes.DWORD),
        ("dwPositionX", wintypes.DWORD),
        ("dwPositionY", wintypes.DWORD),
        ("dwBrightness", wintypes.DWORD),
        ("dwContrast", wintypes.DWORD),
        ("dwCPType", wintypes.DWORD),
        ("dwCPCommand", wintypes.DWORD),
        ("dwCPStandard", wintypes.DWORD),
        ("dwCPKey", wintypes.DWORD),
        ("bCP_APSTriggerBits", wintypes.DWORD),
        ("bOEMCopyProtection", ctypes.c_ubyte * 256),
    ]
#[repr(C)]
pub struct VIDEOPARAMETERS {
    pub Guid: GUID,
    pub dwOffset: u32,
    pub dwCommand: u32,
    pub dwFlags: u32,
    pub dwMode: u32,
    pub dwTVStandard: u32,
    pub dwAvailableModes: u32,
    pub dwAvailableTVStandard: u32,
    pub dwFlickerFilter: u32,
    pub dwOverScanX: u32,
    pub dwOverScanY: u32,
    pub dwMaxUnscaledX: u32,
    pub dwMaxUnscaledY: u32,
    pub dwPositionX: u32,
    pub dwPositionY: u32,
    pub dwBrightness: u32,
    pub dwContrast: u32,
    pub dwCPType: u32,
    pub dwCPCommand: u32,
    pub dwCPStandard: u32,
    pub dwCPKey: u32,
    pub bCP_APSTriggerBits: u32,
    pub bOEMCopyProtection: [u8; 256],
}
import "golang.org/x/sys/windows"

type VIDEOPARAMETERS struct {
	Guid windows.GUID
	dwOffset uint32
	dwCommand uint32
	dwFlags uint32
	dwMode uint32
	dwTVStandard uint32
	dwAvailableModes uint32
	dwAvailableTVStandard uint32
	dwFlickerFilter uint32
	dwOverScanX uint32
	dwOverScanY uint32
	dwMaxUnscaledX uint32
	dwMaxUnscaledY uint32
	dwPositionX uint32
	dwPositionY uint32
	dwBrightness uint32
	dwContrast uint32
	dwCPType uint32
	dwCPCommand uint32
	dwCPStandard uint32
	dwCPKey uint32
	bCP_APSTriggerBits uint32
	bOEMCopyProtection [256]byte
}
type
  VIDEOPARAMETERS = record
    Guid: TGUID;
    dwOffset: DWORD;
    dwCommand: DWORD;
    dwFlags: DWORD;
    dwMode: DWORD;
    dwTVStandard: DWORD;
    dwAvailableModes: DWORD;
    dwAvailableTVStandard: DWORD;
    dwFlickerFilter: DWORD;
    dwOverScanX: DWORD;
    dwOverScanY: DWORD;
    dwMaxUnscaledX: DWORD;
    dwMaxUnscaledY: DWORD;
    dwPositionX: DWORD;
    dwPositionY: DWORD;
    dwBrightness: DWORD;
    dwContrast: DWORD;
    dwCPType: DWORD;
    dwCPCommand: DWORD;
    dwCPStandard: DWORD;
    dwCPKey: DWORD;
    bCP_APSTriggerBits: DWORD;
    bOEMCopyProtection: array[0..255] of Byte;
  end;
const VIDEOPARAMETERS = extern struct {
    Guid: GUID,
    dwOffset: u32,
    dwCommand: u32,
    dwFlags: u32,
    dwMode: u32,
    dwTVStandard: u32,
    dwAvailableModes: u32,
    dwAvailableTVStandard: u32,
    dwFlickerFilter: u32,
    dwOverScanX: u32,
    dwOverScanY: u32,
    dwMaxUnscaledX: u32,
    dwMaxUnscaledY: u32,
    dwPositionX: u32,
    dwPositionY: u32,
    dwBrightness: u32,
    dwContrast: u32,
    dwCPType: u32,
    dwCPCommand: u32,
    dwCPStandard: u32,
    dwCPKey: u32,
    bCP_APSTriggerBits: u32,
    bOEMCopyProtection: [256]u8,
};
type
  VIDEOPARAMETERS {.bycopy.} = object
    Guid: GUID
    dwOffset: uint32
    dwCommand: uint32
    dwFlags: uint32
    dwMode: uint32
    dwTVStandard: uint32
    dwAvailableModes: uint32
    dwAvailableTVStandard: uint32
    dwFlickerFilter: uint32
    dwOverScanX: uint32
    dwOverScanY: uint32
    dwMaxUnscaledX: uint32
    dwMaxUnscaledY: uint32
    dwPositionX: uint32
    dwPositionY: uint32
    dwBrightness: uint32
    dwContrast: uint32
    dwCPType: uint32
    dwCPCommand: uint32
    dwCPStandard: uint32
    dwCPKey: uint32
    bCP_APSTriggerBits: uint32
    bOEMCopyProtection: array[256, uint8]
struct VIDEOPARAMETERS
{
    GUID Guid;
    uint dwOffset;
    uint dwCommand;
    uint dwFlags;
    uint dwMode;
    uint dwTVStandard;
    uint dwAvailableModes;
    uint dwAvailableTVStandard;
    uint dwFlickerFilter;
    uint dwOverScanX;
    uint dwOverScanY;
    uint dwMaxUnscaledX;
    uint dwMaxUnscaledY;
    uint dwPositionX;
    uint dwPositionY;
    uint dwBrightness;
    uint dwContrast;
    uint dwCPType;
    uint dwCPCommand;
    uint dwCPStandard;
    uint dwCPKey;
    uint bCP_APSTriggerBits;
    ubyte[256] bOEMCopyProtection;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; VIDEOPARAMETERS サイズ: 356 バイト(x64)
dim st, 89    ; 4byte整数×89(構造体サイズ 356 / 4 切り上げ)
; Guid : GUID (+0, 16byte)  varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; dwOffset : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwCommand : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwFlags : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwMode : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwTVStandard : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwAvailableModes : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwAvailableTVStandard : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwFlickerFilter : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwOverScanX : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwOverScanY : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwMaxUnscaledX : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwMaxUnscaledY : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; dwPositionX : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; dwPositionY : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; dwBrightness : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; dwContrast : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; dwCPType : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; dwCPCommand : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; dwCPStandard : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; dwCPKey : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; bCP_APSTriggerBits : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; bOEMCopyProtection : BYTE (+100, 256byte)  varptr(st)+100 を基点に操作(256byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global VIDEOPARAMETERS
    #field GUID Guid
    #field int dwOffset
    #field int dwCommand
    #field int dwFlags
    #field int dwMode
    #field int dwTVStandard
    #field int dwAvailableModes
    #field int dwAvailableTVStandard
    #field int dwFlickerFilter
    #field int dwOverScanX
    #field int dwOverScanY
    #field int dwMaxUnscaledX
    #field int dwMaxUnscaledY
    #field int dwPositionX
    #field int dwPositionY
    #field int dwBrightness
    #field int dwContrast
    #field int dwCPType
    #field int dwCPCommand
    #field int dwCPStandard
    #field int dwCPKey
    #field int bCP_APSTriggerBits
    #field byte bOEMCopyProtection 256
#endstruct

stdim st, VIDEOPARAMETERS        ; NSTRUCT 変数を確保
st->dwOffset = 100
mes "dwOffset=" + st->dwOffset