Win32 API 日本語リファレンス
ホームGraphics.DirectDraw › DDSURFACEDESC

DDSURFACEDESC

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

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

フィールド

フィールドサイズx64x86説明
dwSizeDWORD4+0+0構造体サイズ(バイト数)。呼び出し前に設定する。
dwFlagsDWORD4+4+4有効なフィールドを示すDDSD_系フラグの組み合わせ。
dwHeightDWORD4+8+8サーフェスの高さ(ピクセル)を示す。
dwWidthDWORD4+12+12サーフェスの幅(ピクセル)を示す。
Anonymous1_Anonymous1_e__Union4+16+16ピッチ(行バイト数)またはリンクサイズを保持する共用体。
dwBackBufferCountDWORD4+20+20フリップチェーンのバックバッファ数を示す。
Anonymous2_Anonymous2_e__Union4+24+24メモリ数やミップマップ数/リフレッシュレート等を保持する共用体。
dwAlphaBitDepthDWORD4+28+28アルファチャネルのビット深度を示す。
dwReservedDWORD4+32+32予約フィールド。0とする。
lpSurfacevoid*8/4+40+36サーフェスメモリ先頭へのポインタ。Lock時に有効。
ddckCKDestOverlayDDCOLORKEY8+48+40転送先オーバーレイ用カラーキー(DDCOLORKEY)。
ddckCKDestBltDDCOLORKEY8+56+48転送先Blt用カラーキー(DDCOLORKEY)。
ddckCKSrcOverlayDDCOLORKEY8+64+56転送元オーバーレイ用カラーキー(DDCOLORKEY)。
ddckCKSrcBltDDCOLORKEY8+72+64転送元Blt用カラーキー(DDCOLORKEY)。
ddpfPixelFormatDDPIXELFORMAT40/32+80+72サーフェスのピクセル形式(DDPIXELFORMAT)。
ddsCapsDDSCAPS4+120+104サーフェスの能力/種別(DDSCAPS)。

共用体: _Anonymous1_e__Union x64 4B / x86 4B

フィールドサイズx64x86
lPitchINT4+0+0
dwLinearSizeDWORD4+0+0

共用体: _Anonymous2_e__Union x64 4B / x86 4B

フィールドサイズx64x86
dwMipMapCountDWORD4+0+0
dwZBufferBitDepthDWORD4+0+0
dwRefreshRateDWORD4+0+0

各言語での定義

#include <windows.h>

// DDCOLORKEY  (x64 8 / x86 8 バイト)
typedef struct DDCOLORKEY {
    DWORD dwColorSpaceLowValue;
    DWORD dwColorSpaceHighValue;
} DDCOLORKEY;

// DDPIXELFORMAT  (x64 40 / x86 32 バイト)
typedef struct DDPIXELFORMAT {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwFourCC;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
    _Anonymous3_e__Union Anonymous3;
    _Anonymous4_e__Union Anonymous4;
    _Anonymous5_e__Union Anonymous5;
} DDPIXELFORMAT;

// DDSCAPS  (x64 4 / x86 4 バイト)
typedef struct DDSCAPS {
    DWORD dwCaps;
} DDSCAPS;

// DDSURFACEDESC  (x64 128 / x86 108 バイト)
typedef struct DDSURFACEDESC {
    DWORD dwSize;
    DWORD dwFlags;
    DWORD dwHeight;
    DWORD dwWidth;
    _Anonymous1_e__Union Anonymous1;
    DWORD dwBackBufferCount;
    _Anonymous2_e__Union Anonymous2;
    DWORD dwAlphaBitDepth;
    DWORD dwReserved;
    void* lpSurface;
    DDCOLORKEY ddckCKDestOverlay;
    DDCOLORKEY ddckCKDestBlt;
    DDCOLORKEY ddckCKSrcOverlay;
    DDCOLORKEY ddckCKSrcBlt;
    DDPIXELFORMAT ddpfPixelFormat;
    DDSCAPS ddsCaps;
} DDSURFACEDESC;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDCOLORKEY
{
    public uint dwColorSpaceLowValue;
    public uint dwColorSpaceHighValue;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDPIXELFORMAT
{
    public uint dwSize;
    public uint dwFlags;
    public uint dwFourCC;
    public _Anonymous1_e__Union Anonymous1;
    public _Anonymous2_e__Union Anonymous2;
    public _Anonymous3_e__Union Anonymous3;
    public _Anonymous4_e__Union Anonymous4;
    public _Anonymous5_e__Union Anonymous5;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDSCAPS
{
    public uint dwCaps;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DDSURFACEDESC
{
    public uint dwSize;
    public uint dwFlags;
    public uint dwHeight;
    public uint dwWidth;
    public _Anonymous1_e__Union Anonymous1;
    public uint dwBackBufferCount;
    public _Anonymous2_e__Union Anonymous2;
    public uint dwAlphaBitDepth;
    public uint dwReserved;
    public IntPtr lpSurface;
    public DDCOLORKEY ddckCKDestOverlay;
    public DDCOLORKEY ddckCKDestBlt;
    public DDCOLORKEY ddckCKSrcOverlay;
    public DDCOLORKEY ddckCKSrcBlt;
    public DDPIXELFORMAT ddpfPixelFormat;
    public DDSCAPS ddsCaps;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDCOLORKEY
    Public dwColorSpaceLowValue As UInteger
    Public dwColorSpaceHighValue As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDPIXELFORMAT
    Public dwSize As UInteger
    Public dwFlags As UInteger
    Public dwFourCC As UInteger
    Public Anonymous1 As _Anonymous1_e__Union
    Public Anonymous2 As _Anonymous2_e__Union
    Public Anonymous3 As _Anonymous3_e__Union
    Public Anonymous4 As _Anonymous4_e__Union
    Public Anonymous5 As _Anonymous5_e__Union
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDSCAPS
    Public dwCaps As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DDSURFACEDESC
    Public dwSize As UInteger
    Public dwFlags As UInteger
    Public dwHeight As UInteger
    Public dwWidth As UInteger
    Public Anonymous1 As _Anonymous1_e__Union
    Public dwBackBufferCount As UInteger
    Public Anonymous2 As _Anonymous2_e__Union
    Public dwAlphaBitDepth As UInteger
    Public dwReserved As UInteger
    Public lpSurface As IntPtr
    Public ddckCKDestOverlay As DDCOLORKEY
    Public ddckCKDestBlt As DDCOLORKEY
    Public ddckCKSrcOverlay As DDCOLORKEY
    Public ddckCKSrcBlt As DDCOLORKEY
    Public ddpfPixelFormat As DDPIXELFORMAT
    Public ddsCaps As DDSCAPS
End Structure
import ctypes
from ctypes import wintypes

class DDCOLORKEY(ctypes.Structure):
    _fields_ = [
        ("dwColorSpaceLowValue", wintypes.DWORD),
        ("dwColorSpaceHighValue", wintypes.DWORD),
    ]

class DDPIXELFORMAT(ctypes.Structure):
    _fields_ = [
        ("dwSize", wintypes.DWORD),
        ("dwFlags", wintypes.DWORD),
        ("dwFourCC", wintypes.DWORD),
        ("Anonymous1", _Anonymous1_e__Union),
        ("Anonymous2", _Anonymous2_e__Union),
        ("Anonymous3", _Anonymous3_e__Union),
        ("Anonymous4", _Anonymous4_e__Union),
        ("Anonymous5", _Anonymous5_e__Union),
    ]

class DDSCAPS(ctypes.Structure):
    _fields_ = [
        ("dwCaps", wintypes.DWORD),
    ]

class DDSURFACEDESC(ctypes.Structure):
    _fields_ = [
        ("dwSize", wintypes.DWORD),
        ("dwFlags", wintypes.DWORD),
        ("dwHeight", wintypes.DWORD),
        ("dwWidth", wintypes.DWORD),
        ("Anonymous1", _Anonymous1_e__Union),
        ("dwBackBufferCount", wintypes.DWORD),
        ("Anonymous2", _Anonymous2_e__Union),
        ("dwAlphaBitDepth", wintypes.DWORD),
        ("dwReserved", wintypes.DWORD),
        ("lpSurface", ctypes.c_void_p),
        ("ddckCKDestOverlay", DDCOLORKEY),
        ("ddckCKDestBlt", DDCOLORKEY),
        ("ddckCKSrcOverlay", DDCOLORKEY),
        ("ddckCKSrcBlt", DDCOLORKEY),
        ("ddpfPixelFormat", DDPIXELFORMAT),
        ("ddsCaps", DDSCAPS),
    ]
#[repr(C)]
pub struct DDCOLORKEY {
    pub dwColorSpaceLowValue: u32,
    pub dwColorSpaceHighValue: u32,
}

#[repr(C)]
pub struct DDPIXELFORMAT {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub dwFourCC: u32,
    pub Anonymous1: _Anonymous1_e__Union,
    pub Anonymous2: _Anonymous2_e__Union,
    pub Anonymous3: _Anonymous3_e__Union,
    pub Anonymous4: _Anonymous4_e__Union,
    pub Anonymous5: _Anonymous5_e__Union,
}

#[repr(C)]
pub struct DDSCAPS {
    pub dwCaps: u32,
}

#[repr(C)]
pub struct DDSURFACEDESC {
    pub dwSize: u32,
    pub dwFlags: u32,
    pub dwHeight: u32,
    pub dwWidth: u32,
    pub Anonymous1: _Anonymous1_e__Union,
    pub dwBackBufferCount: u32,
    pub Anonymous2: _Anonymous2_e__Union,
    pub dwAlphaBitDepth: u32,
    pub dwReserved: u32,
    pub lpSurface: *mut core::ffi::c_void,
    pub ddckCKDestOverlay: DDCOLORKEY,
    pub ddckCKDestBlt: DDCOLORKEY,
    pub ddckCKSrcOverlay: DDCOLORKEY,
    pub ddckCKSrcBlt: DDCOLORKEY,
    pub ddpfPixelFormat: DDPIXELFORMAT,
    pub ddsCaps: DDSCAPS,
}
import "golang.org/x/sys/windows"

type DDCOLORKEY struct {
	dwColorSpaceLowValue uint32
	dwColorSpaceHighValue uint32
}

type DDPIXELFORMAT struct {
	dwSize uint32
	dwFlags uint32
	dwFourCC uint32
	Anonymous1 _Anonymous1_e__Union
	Anonymous2 _Anonymous2_e__Union
	Anonymous3 _Anonymous3_e__Union
	Anonymous4 _Anonymous4_e__Union
	Anonymous5 _Anonymous5_e__Union
}

type DDSCAPS struct {
	dwCaps uint32
}

type DDSURFACEDESC struct {
	dwSize uint32
	dwFlags uint32
	dwHeight uint32
	dwWidth uint32
	Anonymous1 _Anonymous1_e__Union
	dwBackBufferCount uint32
	Anonymous2 _Anonymous2_e__Union
	dwAlphaBitDepth uint32
	dwReserved uint32
	lpSurface uintptr
	ddckCKDestOverlay DDCOLORKEY
	ddckCKDestBlt DDCOLORKEY
	ddckCKSrcOverlay DDCOLORKEY
	ddckCKSrcBlt DDCOLORKEY
	ddpfPixelFormat DDPIXELFORMAT
	ddsCaps DDSCAPS
}
type
  DDCOLORKEY = record
    dwColorSpaceLowValue: DWORD;
    dwColorSpaceHighValue: DWORD;
  end;

  DDPIXELFORMAT = record
    dwSize: DWORD;
    dwFlags: DWORD;
    dwFourCC: DWORD;
    Anonymous1: _Anonymous1_e__Union;
    Anonymous2: _Anonymous2_e__Union;
    Anonymous3: _Anonymous3_e__Union;
    Anonymous4: _Anonymous4_e__Union;
    Anonymous5: _Anonymous5_e__Union;
  end;

  DDSCAPS = record
    dwCaps: DWORD;
  end;

  DDSURFACEDESC = record
    dwSize: DWORD;
    dwFlags: DWORD;
    dwHeight: DWORD;
    dwWidth: DWORD;
    Anonymous1: _Anonymous1_e__Union;
    dwBackBufferCount: DWORD;
    Anonymous2: _Anonymous2_e__Union;
    dwAlphaBitDepth: DWORD;
    dwReserved: DWORD;
    lpSurface: Pointer;
    ddckCKDestOverlay: DDCOLORKEY;
    ddckCKDestBlt: DDCOLORKEY;
    ddckCKSrcOverlay: DDCOLORKEY;
    ddckCKSrcBlt: DDCOLORKEY;
    ddpfPixelFormat: DDPIXELFORMAT;
    ddsCaps: DDSCAPS;
  end;
const DDCOLORKEY = extern struct {
    dwColorSpaceLowValue: u32,
    dwColorSpaceHighValue: u32,
};

const DDPIXELFORMAT = extern struct {
    dwSize: u32,
    dwFlags: u32,
    dwFourCC: u32,
    Anonymous1: _Anonymous1_e__Union,
    Anonymous2: _Anonymous2_e__Union,
    Anonymous3: _Anonymous3_e__Union,
    Anonymous4: _Anonymous4_e__Union,
    Anonymous5: _Anonymous5_e__Union,
};

const DDSCAPS = extern struct {
    dwCaps: u32,
};

const DDSURFACEDESC = extern struct {
    dwSize: u32,
    dwFlags: u32,
    dwHeight: u32,
    dwWidth: u32,
    Anonymous1: _Anonymous1_e__Union,
    dwBackBufferCount: u32,
    Anonymous2: _Anonymous2_e__Union,
    dwAlphaBitDepth: u32,
    dwReserved: u32,
    lpSurface: ?*anyopaque,
    ddckCKDestOverlay: DDCOLORKEY,
    ddckCKDestBlt: DDCOLORKEY,
    ddckCKSrcOverlay: DDCOLORKEY,
    ddckCKSrcBlt: DDCOLORKEY,
    ddpfPixelFormat: DDPIXELFORMAT,
    ddsCaps: DDSCAPS,
};
type
  DDCOLORKEY {.bycopy.} = object
    dwColorSpaceLowValue: uint32
    dwColorSpaceHighValue: uint32

  DDPIXELFORMAT {.bycopy.} = object
    dwSize: uint32
    dwFlags: uint32
    dwFourCC: uint32
    Anonymous1: _Anonymous1_e__Union
    Anonymous2: _Anonymous2_e__Union
    Anonymous3: _Anonymous3_e__Union
    Anonymous4: _Anonymous4_e__Union
    Anonymous5: _Anonymous5_e__Union

  DDSCAPS {.bycopy.} = object
    dwCaps: uint32

  DDSURFACEDESC {.bycopy.} = object
    dwSize: uint32
    dwFlags: uint32
    dwHeight: uint32
    dwWidth: uint32
    Anonymous1: _Anonymous1_e__Union
    dwBackBufferCount: uint32
    Anonymous2: _Anonymous2_e__Union
    dwAlphaBitDepth: uint32
    dwReserved: uint32
    lpSurface: pointer
    ddckCKDestOverlay: DDCOLORKEY
    ddckCKDestBlt: DDCOLORKEY
    ddckCKSrcOverlay: DDCOLORKEY
    ddckCKSrcBlt: DDCOLORKEY
    ddpfPixelFormat: DDPIXELFORMAT
    ddsCaps: DDSCAPS
struct DDCOLORKEY
{
    uint dwColorSpaceLowValue;
    uint dwColorSpaceHighValue;
}

struct DDPIXELFORMAT
{
    uint dwSize;
    uint dwFlags;
    uint dwFourCC;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
    _Anonymous3_e__Union Anonymous3;
    _Anonymous4_e__Union Anonymous4;
    _Anonymous5_e__Union Anonymous5;
}

struct DDSCAPS
{
    uint dwCaps;
}

struct DDSURFACEDESC
{
    uint dwSize;
    uint dwFlags;
    uint dwHeight;
    uint dwWidth;
    _Anonymous1_e__Union Anonymous1;
    uint dwBackBufferCount;
    _Anonymous2_e__Union Anonymous2;
    uint dwAlphaBitDepth;
    uint dwReserved;
    void* lpSurface;
    DDCOLORKEY ddckCKDestOverlay;
    DDCOLORKEY ddckCKDestBlt;
    DDCOLORKEY ddckCKSrcOverlay;
    DDCOLORKEY ddckCKSrcBlt;
    DDPIXELFORMAT ddpfPixelFormat;
    DDSCAPS ddsCaps;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DDSURFACEDESC サイズ: 108 バイト(x86)
dim st, 27    ; 4byte整数×27(構造体サイズ 108 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwHeight : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwWidth : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; Anonymous1 : _Anonymous1_e__Union (+16, 4byte)  varptr(st)+16 を基点に操作(4byte:入れ子/配列)
; dwBackBufferCount : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Anonymous2 : _Anonymous2_e__Union (+24, 4byte)  varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; dwAlphaBitDepth : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwReserved : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; lpSurface : void* (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; ddckCKDestOverlay : DDCOLORKEY (+40, 8byte)  varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; ddckCKDestBlt : DDCOLORKEY (+48, 8byte)  varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; ddckCKSrcOverlay : DDCOLORKEY (+56, 8byte)  varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; ddckCKSrcBlt : DDCOLORKEY (+64, 8byte)  varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; ddpfPixelFormat : DDPIXELFORMAT (+72, 32byte)  varptr(st)+72 を基点に操作(32byte:入れ子/配列)
; ddsCaps : DDSCAPS (+104, 4byte)  varptr(st)+104 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DDSURFACEDESC サイズ: 128 バイト(x64)
dim st, 32    ; 4byte整数×32(構造体サイズ 128 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwFlags : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwHeight : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwWidth : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; Anonymous1 : _Anonymous1_e__Union (+16, 4byte)  varptr(st)+16 を基点に操作(4byte:入れ子/配列)
; dwBackBufferCount : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Anonymous2 : _Anonymous2_e__Union (+24, 4byte)  varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; dwAlphaBitDepth : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwReserved : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; lpSurface : void* (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ddckCKDestOverlay : DDCOLORKEY (+48, 8byte)  varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; ddckCKDestBlt : DDCOLORKEY (+56, 8byte)  varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; ddckCKSrcOverlay : DDCOLORKEY (+64, 8byte)  varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; ddckCKSrcBlt : DDCOLORKEY (+72, 8byte)  varptr(st)+72 を基点に操作(8byte:入れ子/配列)
; ddpfPixelFormat : DDPIXELFORMAT (+80, 40byte)  varptr(st)+80 を基点に操作(40byte:入れ子/配列)
; ddsCaps : DDSCAPS (+120, 4byte)  varptr(st)+120 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global DDCOLORKEY
    #field int dwColorSpaceLowValue
    #field int dwColorSpaceHighValue
#endstruct

#defstruct global DDPIXELFORMAT
    #field int dwSize
    #field int dwFlags
    #field int dwFourCC
    #field byte Anonymous1 4
    #field byte Anonymous2 4
    #field byte Anonymous3 8
    #field byte Anonymous4 4
    #field byte Anonymous5 4
#endstruct

#defstruct global DDSCAPS
    #field int dwCaps
#endstruct

#defstruct global DDSURFACEDESC
    #field int dwSize
    #field int dwFlags
    #field int dwHeight
    #field int dwWidth
    #field byte Anonymous1 4
    #field int dwBackBufferCount
    #field byte Anonymous2 4
    #field int dwAlphaBitDepth
    #field int dwReserved
    #field intptr lpSurface
    #field DDCOLORKEY ddckCKDestOverlay
    #field DDCOLORKEY ddckCKDestBlt
    #field DDCOLORKEY ddckCKSrcOverlay
    #field DDCOLORKEY ddckCKSrcBlt
    #field DDPIXELFORMAT ddpfPixelFormat
    #field DDSCAPS ddsCaps
#endstruct

stdim st, DDSURFACEDESC        ; NSTRUCT 変数を確保
st->dwSize = 100
mes "dwSize=" + st->dwSize
; ※union フィールドは byte 列で確保(NSTRUCT は union 非対応)。必要に応じ手動でアクセス。