Win32 API 日本語リファレンス
ホームNetworkManagement.Rras › RASENTRYW

RASENTRYW

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

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

フィールド

フィールドサイズx64x86説明
dwSizeDWORD4+0+0この構造体のバイト単位のサイズ。呼び出し前にsizeofを設定する。
dwfOptionsDWORD4+4+4接続エントリの動作を制御するRASEO_*オプションフラグ。
dwCountryIDDWORD4+8+8ダイヤルに使用するTAPIの国/地域ID。
dwCountryCodeDWORD4+12+12ダイヤルに使用する国際電話の国番号。
szAreaCodeWCHAR22+16+16市外局番を表すワイド文字列。
szLocalPhoneNumberWCHAR258+38+38ローカル電話番号を表すワイド文字列。
dwAlternateOffsetDWORD4+296+296代替電話番号リストへの構造体先頭からのバイトオフセット。
ipaddrRASIPADDR4+300+300クライアント固定IPアドレス(RASIPADDR構造体)。
ipaddrDnsRASIPADDR4+304+304プライマリDNSサーバーのIPアドレス。
ipaddrDnsAltRASIPADDR4+308+308代替DNSサーバーのIPアドレス。
ipaddrWinsRASIPADDR4+312+312プライマリWINSサーバーのIPアドレス。
ipaddrWinsAltRASIPADDR4+316+316代替WINSサーバーのIPアドレス。
dwFrameSizeDWORD4+320+320ネットワークフレームのサイズ(バイト)。
dwfNetProtocolsDWORD4+324+324使用するネットワークプロトコルのフラグ(RASNP_*)。
dwFramingProtocolDWORD4+328+328使用するフレーミングプロトコル(RASFP_*)。PPP等。
szScriptWCHAR520+332+332接続後に実行するスクリプトファイルのパス(ワイド文字列)。
szAutodialDllWCHAR520+852+852自動ダイヤルに使用するDLLのパス(ワイド文字列)。
szAutodialFuncWCHAR520+1372+1372自動ダイヤルDLL内の関数名(ワイド文字列)。
szDeviceTypeWCHAR34+1892+1892接続に使用するデバイスの種別(ワイド文字列)。
szDeviceNameWCHAR258+1926+1926接続に使用するデバイスの名前(ワイド文字列)。
szX25PadTypeWCHAR66+2184+2184X.25 PADタイプを表すワイド文字列。X.25接続用。
szX25AddressWCHAR402+2250+2250X.25ネットワークのアドレス(ワイド文字列)。
szX25FacilitiesWCHAR402+2652+2652X.25呼設定の追加機能を表すワイド文字列。
szX25UserDataWCHAR402+3054+3054X.25接続時にPADへ送るユーザーデータ(ワイド文字列)。
dwChannelsDWORD4+3456+3456ISDN等で使用するチャネル数。
dwReserved1DWORD4+3460+3460予約済み。0を設定する。
dwReserved2DWORD4+3464+3464予約済み。0を設定する。
dwSubEntriesDWORD4+3468+3468このエントリに含まれるサブエントリ(マルチリンク)の数。
dwDialModeRASENTRY_DIAL_MODE4+3472+3472マルチリンクのダイヤル方式を表すRASENTRY_DIAL_MODE列挙値。
dwDialExtraPercentDWORD4+3476+3476回線追加発呼の閾値となる帯域使用率(%)。
dwDialExtraSampleSecondsDWORD4+3480+3480回線追加判定のための帯域サンプリング秒数。
dwHangUpExtraPercentDWORD4+3484+3484回線切断発火の閾値となる帯域使用率(%)。
dwHangUpExtraSampleSecondsDWORD4+3488+3488回線切断判定のための帯域サンプリング秒数。
dwIdleDisconnectSecondsDWORD4+3492+3492アイドル状態が続いた場合に自動切断するまでの秒数。
dwTypeDWORD4+3496+3496エントリの種別(RASET_*)。Phone/VPN/Direct/Broadband等。
dwEncryptionTypeDWORD4+3500+3500データ暗号化の種別を表す列挙値(ET_*)。
dwCustomAuthKeyDWORD4+3504+3504カスタムEAP認証で使用するキー値。
guidIdGUID16+3508+3508この電話帳エントリを一意に識別するGUID。
szCustomDialDllWCHAR520+3524+3524カスタムダイヤラーDLLのパス(ワイド文字列)。
dwVpnStrategyDWORD4+4044+4044VPN接続で試行するトンネルプロトコル戦略(VS_*)。
dwfOptions2DWORD4+4048+4048追加のオプションフラグ第2セット(RASEO2_*)。
dwfOptions3DWORD4+4052+4052追加のオプションフラグ第3セット。
szDnsSuffixWCHAR512+4056+4056接続に使用するDNSサフィックス(ワイド文字列)。
dwTcpWindowSizeDWORD4+4568+4568接続のTCPウィンドウサイズ(バイト)。
szPrerequisitePbkWCHAR520+4572+4572前提接続のための電話帳ファイルパス(ワイド文字列)。
szPrerequisiteEntryWCHAR514+5092+5092前提となる接続エントリ名(ワイド文字列)。ダブルダイヤル用。
dwRedialCountDWORD4+5608+5608接続失敗時の再ダイヤル回数。
dwRedialPauseDWORD4+5612+5612再ダイヤル試行間の待機秒数。
ipv6addrDnsIN6_ADDR16+5616+5616プライマリIPv6 DNSサーバーのアドレス。
ipv6addrDnsAltIN6_ADDR16+5632+5632代替IPv6 DNSサーバーのアドレス。
dwIPv4InterfaceMetricDWORD4+5648+5648IPv4インターフェイスのルーティングメトリック。
dwIPv6InterfaceMetricDWORD4+5652+5652IPv6インターフェイスのルーティングメトリック。
ipv6addrIN6_ADDR16+5656+5656クライアント固定IPv6アドレス。
dwIPv6PrefixLengthDWORD4+5672+5672クライアントIPv6アドレスのプレフィックス長(ビット)。
dwNetworkOutageTimeDWORD4+5676+5676ネットワーク中断を許容する時間(IKEv2の再接続用、秒)。
szIDiWCHAR514+5680+5680IKEv2でローカル(イニシエータ)を識別するID文字列(ワイド)。
szIDrWCHAR514+6194+6194IKEv2でリモート(レスポンダ)を識別するID文字列(ワイド)。
fIsImsConfigBOOL4+6708+6708TRUEならIMS(IP Multimedia Subsystem)設定であることを示す。
IdiTypeIKEV2_ID_PAYLOAD_TYPE4+6712+6712szIDiのIKEv2 IDペイロード種別(IKEV2_ID_PAYLOAD_TYPE)。
IdrTypeIKEV2_ID_PAYLOAD_TYPE4+6716+6716szIDrのIKEv2 IDペイロード種別(IKEV2_ID_PAYLOAD_TYPE)。
fDisableIKEv2FragmentationBOOL4+6720+6720TRUEならIKEv2フラグメンテーションを無効化する。

各言語での定義

#include <windows.h>

// RASIPADDR  (x64 4 / x86 4 バイト)
typedef struct RASIPADDR {
    BYTE a;
    BYTE b;
    BYTE c;
    BYTE d;
} RASIPADDR;

// IN6_ADDR  (x64 16 / x86 16 バイト)
typedef struct IN6_ADDR {
    _u_e__Union u;
} IN6_ADDR;

// RASENTRYW  (x64 6724 / x86 6724 バイト)
typedef struct RASENTRYW {
    DWORD dwSize;
    DWORD dwfOptions;
    DWORD dwCountryID;
    DWORD dwCountryCode;
    WCHAR szAreaCode[11];
    WCHAR szLocalPhoneNumber[129];
    DWORD dwAlternateOffset;
    RASIPADDR ipaddr;
    RASIPADDR ipaddrDns;
    RASIPADDR ipaddrDnsAlt;
    RASIPADDR ipaddrWins;
    RASIPADDR ipaddrWinsAlt;
    DWORD dwFrameSize;
    DWORD dwfNetProtocols;
    DWORD dwFramingProtocol;
    WCHAR szScript[260];
    WCHAR szAutodialDll[260];
    WCHAR szAutodialFunc[260];
    WCHAR szDeviceType[17];
    WCHAR szDeviceName[129];
    WCHAR szX25PadType[33];
    WCHAR szX25Address[201];
    WCHAR szX25Facilities[201];
    WCHAR szX25UserData[201];
    DWORD dwChannels;
    DWORD dwReserved1;
    DWORD dwReserved2;
    DWORD dwSubEntries;
    RASENTRY_DIAL_MODE dwDialMode;
    DWORD dwDialExtraPercent;
    DWORD dwDialExtraSampleSeconds;
    DWORD dwHangUpExtraPercent;
    DWORD dwHangUpExtraSampleSeconds;
    DWORD dwIdleDisconnectSeconds;
    DWORD dwType;
    DWORD dwEncryptionType;
    DWORD dwCustomAuthKey;
    GUID guidId;
    WCHAR szCustomDialDll[260];
    DWORD dwVpnStrategy;
    DWORD dwfOptions2;
    DWORD dwfOptions3;
    WCHAR szDnsSuffix[256];
    DWORD dwTcpWindowSize;
    WCHAR szPrerequisitePbk[260];
    WCHAR szPrerequisiteEntry[257];
    DWORD dwRedialCount;
    DWORD dwRedialPause;
    IN6_ADDR ipv6addrDns;
    IN6_ADDR ipv6addrDnsAlt;
    DWORD dwIPv4InterfaceMetric;
    DWORD dwIPv6InterfaceMetric;
    IN6_ADDR ipv6addr;
    DWORD dwIPv6PrefixLength;
    DWORD dwNetworkOutageTime;
    WCHAR szIDi[257];
    WCHAR szIDr[257];
    BOOL fIsImsConfig;
    IKEV2_ID_PAYLOAD_TYPE IdiType;
    IKEV2_ID_PAYLOAD_TYPE IdrType;
    BOOL fDisableIKEv2Fragmentation;
} RASENTRYW;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RASIPADDR
{
    public byte a;
    public byte b;
    public byte c;
    public byte d;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IN6_ADDR
{
    public _u_e__Union u;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RASENTRYW
{
    public uint dwSize;
    public uint dwfOptions;
    public uint dwCountryID;
    public uint dwCountryCode;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 11)] public string szAreaCode;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] public string szLocalPhoneNumber;
    public uint dwAlternateOffset;
    public RASIPADDR ipaddr;
    public RASIPADDR ipaddrDns;
    public RASIPADDR ipaddrDnsAlt;
    public RASIPADDR ipaddrWins;
    public RASIPADDR ipaddrWinsAlt;
    public uint dwFrameSize;
    public uint dwfNetProtocols;
    public uint dwFramingProtocol;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szScript;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szAutodialDll;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szAutodialFunc;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)] public string szDeviceType;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] public string szDeviceName;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 33)] public string szX25PadType;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 201)] public string szX25Address;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 201)] public string szX25Facilities;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 201)] public string szX25UserData;
    public uint dwChannels;
    public uint dwReserved1;
    public uint dwReserved2;
    public uint dwSubEntries;
    public uint dwDialMode;
    public uint dwDialExtraPercent;
    public uint dwDialExtraSampleSeconds;
    public uint dwHangUpExtraPercent;
    public uint dwHangUpExtraSampleSeconds;
    public uint dwIdleDisconnectSeconds;
    public uint dwType;
    public uint dwEncryptionType;
    public uint dwCustomAuthKey;
    public Guid guidId;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szCustomDialDll;
    public uint dwVpnStrategy;
    public uint dwfOptions2;
    public uint dwfOptions3;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string szDnsSuffix;
    public uint dwTcpWindowSize;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szPrerequisitePbk;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)] public string szPrerequisiteEntry;
    public uint dwRedialCount;
    public uint dwRedialPause;
    public IN6_ADDR ipv6addrDns;
    public IN6_ADDR ipv6addrDnsAlt;
    public uint dwIPv4InterfaceMetric;
    public uint dwIPv6InterfaceMetric;
    public IN6_ADDR ipv6addr;
    public uint dwIPv6PrefixLength;
    public uint dwNetworkOutageTime;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)] public string szIDi;
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)] public string szIDr;
    [MarshalAs(UnmanagedType.Bool)] public bool fIsImsConfig;
    public int IdiType;
    public int IdrType;
    [MarshalAs(UnmanagedType.Bool)] public bool fDisableIKEv2Fragmentation;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RASIPADDR
    Public a As Byte
    Public b As Byte
    Public c As Byte
    Public d As Byte
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IN6_ADDR
    Public u As _u_e__Union
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RASENTRYW
    Public dwSize As UInteger
    Public dwfOptions As UInteger
    Public dwCountryID As UInteger
    Public dwCountryCode As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=11)> Public szAreaCode As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=129)> Public szLocalPhoneNumber As String
    Public dwAlternateOffset As UInteger
    Public ipaddr As RASIPADDR
    Public ipaddrDns As RASIPADDR
    Public ipaddrDnsAlt As RASIPADDR
    Public ipaddrWins As RASIPADDR
    Public ipaddrWinsAlt As RASIPADDR
    Public dwFrameSize As UInteger
    Public dwfNetProtocols As UInteger
    Public dwFramingProtocol As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szScript As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szAutodialDll As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szAutodialFunc As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=17)> Public szDeviceType As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=129)> Public szDeviceName As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=33)> Public szX25PadType As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=201)> Public szX25Address As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=201)> Public szX25Facilities As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=201)> Public szX25UserData As String
    Public dwChannels As UInteger
    Public dwReserved1 As UInteger
    Public dwReserved2 As UInteger
    Public dwSubEntries As UInteger
    Public dwDialMode As UInteger
    Public dwDialExtraPercent As UInteger
    Public dwDialExtraSampleSeconds As UInteger
    Public dwHangUpExtraPercent As UInteger
    Public dwHangUpExtraSampleSeconds As UInteger
    Public dwIdleDisconnectSeconds As UInteger
    Public dwType As UInteger
    Public dwEncryptionType As UInteger
    Public dwCustomAuthKey As UInteger
    Public guidId As Guid
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szCustomDialDll As String
    Public dwVpnStrategy As UInteger
    Public dwfOptions2 As UInteger
    Public dwfOptions3 As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public szDnsSuffix As String
    Public dwTcpWindowSize As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public szPrerequisitePbk As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> Public szPrerequisiteEntry As String
    Public dwRedialCount As UInteger
    Public dwRedialPause As UInteger
    Public ipv6addrDns As IN6_ADDR
    Public ipv6addrDnsAlt As IN6_ADDR
    Public dwIPv4InterfaceMetric As UInteger
    Public dwIPv6InterfaceMetric As UInteger
    Public ipv6addr As IN6_ADDR
    Public dwIPv6PrefixLength As UInteger
    Public dwNetworkOutageTime As UInteger
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> Public szIDi As String
    <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> Public szIDr As String
    <MarshalAs(UnmanagedType.Bool)> Public fIsImsConfig As Boolean
    Public IdiType As Integer
    Public IdrType As Integer
    <MarshalAs(UnmanagedType.Bool)> Public fDisableIKEv2Fragmentation As Boolean
End Structure
import ctypes
from ctypes import wintypes

class RASIPADDR(ctypes.Structure):
    _fields_ = [
        ("a", ctypes.c_ubyte),
        ("b", ctypes.c_ubyte),
        ("c", ctypes.c_ubyte),
        ("d", ctypes.c_ubyte),
    ]

class IN6_ADDR(ctypes.Structure):
    _fields_ = [
        ("u", _u_e__Union),
    ]

class RASENTRYW(ctypes.Structure):
    _fields_ = [
        ("dwSize", wintypes.DWORD),
        ("dwfOptions", wintypes.DWORD),
        ("dwCountryID", wintypes.DWORD),
        ("dwCountryCode", wintypes.DWORD),
        ("szAreaCode", ctypes.c_wchar * 11),
        ("szLocalPhoneNumber", ctypes.c_wchar * 129),
        ("dwAlternateOffset", wintypes.DWORD),
        ("ipaddr", RASIPADDR),
        ("ipaddrDns", RASIPADDR),
        ("ipaddrDnsAlt", RASIPADDR),
        ("ipaddrWins", RASIPADDR),
        ("ipaddrWinsAlt", RASIPADDR),
        ("dwFrameSize", wintypes.DWORD),
        ("dwfNetProtocols", wintypes.DWORD),
        ("dwFramingProtocol", wintypes.DWORD),
        ("szScript", ctypes.c_wchar * 260),
        ("szAutodialDll", ctypes.c_wchar * 260),
        ("szAutodialFunc", ctypes.c_wchar * 260),
        ("szDeviceType", ctypes.c_wchar * 17),
        ("szDeviceName", ctypes.c_wchar * 129),
        ("szX25PadType", ctypes.c_wchar * 33),
        ("szX25Address", ctypes.c_wchar * 201),
        ("szX25Facilities", ctypes.c_wchar * 201),
        ("szX25UserData", ctypes.c_wchar * 201),
        ("dwChannels", wintypes.DWORD),
        ("dwReserved1", wintypes.DWORD),
        ("dwReserved2", wintypes.DWORD),
        ("dwSubEntries", wintypes.DWORD),
        ("dwDialMode", wintypes.DWORD),
        ("dwDialExtraPercent", wintypes.DWORD),
        ("dwDialExtraSampleSeconds", wintypes.DWORD),
        ("dwHangUpExtraPercent", wintypes.DWORD),
        ("dwHangUpExtraSampleSeconds", wintypes.DWORD),
        ("dwIdleDisconnectSeconds", wintypes.DWORD),
        ("dwType", wintypes.DWORD),
        ("dwEncryptionType", wintypes.DWORD),
        ("dwCustomAuthKey", wintypes.DWORD),
        ("guidId", GUID),
        ("szCustomDialDll", ctypes.c_wchar * 260),
        ("dwVpnStrategy", wintypes.DWORD),
        ("dwfOptions2", wintypes.DWORD),
        ("dwfOptions3", wintypes.DWORD),
        ("szDnsSuffix", ctypes.c_wchar * 256),
        ("dwTcpWindowSize", wintypes.DWORD),
        ("szPrerequisitePbk", ctypes.c_wchar * 260),
        ("szPrerequisiteEntry", ctypes.c_wchar * 257),
        ("dwRedialCount", wintypes.DWORD),
        ("dwRedialPause", wintypes.DWORD),
        ("ipv6addrDns", IN6_ADDR),
        ("ipv6addrDnsAlt", IN6_ADDR),
        ("dwIPv4InterfaceMetric", wintypes.DWORD),
        ("dwIPv6InterfaceMetric", wintypes.DWORD),
        ("ipv6addr", IN6_ADDR),
        ("dwIPv6PrefixLength", wintypes.DWORD),
        ("dwNetworkOutageTime", wintypes.DWORD),
        ("szIDi", ctypes.c_wchar * 257),
        ("szIDr", ctypes.c_wchar * 257),
        ("fIsImsConfig", wintypes.BOOL),
        ("IdiType", ctypes.c_int),
        ("IdrType", ctypes.c_int),
        ("fDisableIKEv2Fragmentation", wintypes.BOOL),
    ]
#[repr(C)]
pub struct RASIPADDR {
    pub a: u8,
    pub b: u8,
    pub c: u8,
    pub d: u8,
}

#[repr(C)]
pub struct IN6_ADDR {
    pub u: _u_e__Union,
}

#[repr(C)]
pub struct RASENTRYW {
    pub dwSize: u32,
    pub dwfOptions: u32,
    pub dwCountryID: u32,
    pub dwCountryCode: u32,
    pub szAreaCode: [u16; 11],
    pub szLocalPhoneNumber: [u16; 129],
    pub dwAlternateOffset: u32,
    pub ipaddr: RASIPADDR,
    pub ipaddrDns: RASIPADDR,
    pub ipaddrDnsAlt: RASIPADDR,
    pub ipaddrWins: RASIPADDR,
    pub ipaddrWinsAlt: RASIPADDR,
    pub dwFrameSize: u32,
    pub dwfNetProtocols: u32,
    pub dwFramingProtocol: u32,
    pub szScript: [u16; 260],
    pub szAutodialDll: [u16; 260],
    pub szAutodialFunc: [u16; 260],
    pub szDeviceType: [u16; 17],
    pub szDeviceName: [u16; 129],
    pub szX25PadType: [u16; 33],
    pub szX25Address: [u16; 201],
    pub szX25Facilities: [u16; 201],
    pub szX25UserData: [u16; 201],
    pub dwChannels: u32,
    pub dwReserved1: u32,
    pub dwReserved2: u32,
    pub dwSubEntries: u32,
    pub dwDialMode: u32,
    pub dwDialExtraPercent: u32,
    pub dwDialExtraSampleSeconds: u32,
    pub dwHangUpExtraPercent: u32,
    pub dwHangUpExtraSampleSeconds: u32,
    pub dwIdleDisconnectSeconds: u32,
    pub dwType: u32,
    pub dwEncryptionType: u32,
    pub dwCustomAuthKey: u32,
    pub guidId: GUID,
    pub szCustomDialDll: [u16; 260],
    pub dwVpnStrategy: u32,
    pub dwfOptions2: u32,
    pub dwfOptions3: u32,
    pub szDnsSuffix: [u16; 256],
    pub dwTcpWindowSize: u32,
    pub szPrerequisitePbk: [u16; 260],
    pub szPrerequisiteEntry: [u16; 257],
    pub dwRedialCount: u32,
    pub dwRedialPause: u32,
    pub ipv6addrDns: IN6_ADDR,
    pub ipv6addrDnsAlt: IN6_ADDR,
    pub dwIPv4InterfaceMetric: u32,
    pub dwIPv6InterfaceMetric: u32,
    pub ipv6addr: IN6_ADDR,
    pub dwIPv6PrefixLength: u32,
    pub dwNetworkOutageTime: u32,
    pub szIDi: [u16; 257],
    pub szIDr: [u16; 257],
    pub fIsImsConfig: i32,
    pub IdiType: i32,
    pub IdrType: i32,
    pub fDisableIKEv2Fragmentation: i32,
}
import "golang.org/x/sys/windows"

type RASIPADDR struct {
	a byte
	b byte
	c byte
	d byte
}

type IN6_ADDR struct {
	u _u_e__Union
}

type RASENTRYW struct {
	dwSize uint32
	dwfOptions uint32
	dwCountryID uint32
	dwCountryCode uint32
	szAreaCode [11]uint16
	szLocalPhoneNumber [129]uint16
	dwAlternateOffset uint32
	ipaddr RASIPADDR
	ipaddrDns RASIPADDR
	ipaddrDnsAlt RASIPADDR
	ipaddrWins RASIPADDR
	ipaddrWinsAlt RASIPADDR
	dwFrameSize uint32
	dwfNetProtocols uint32
	dwFramingProtocol uint32
	szScript [260]uint16
	szAutodialDll [260]uint16
	szAutodialFunc [260]uint16
	szDeviceType [17]uint16
	szDeviceName [129]uint16
	szX25PadType [33]uint16
	szX25Address [201]uint16
	szX25Facilities [201]uint16
	szX25UserData [201]uint16
	dwChannels uint32
	dwReserved1 uint32
	dwReserved2 uint32
	dwSubEntries uint32
	dwDialMode uint32
	dwDialExtraPercent uint32
	dwDialExtraSampleSeconds uint32
	dwHangUpExtraPercent uint32
	dwHangUpExtraSampleSeconds uint32
	dwIdleDisconnectSeconds uint32
	dwType uint32
	dwEncryptionType uint32
	dwCustomAuthKey uint32
	guidId windows.GUID
	szCustomDialDll [260]uint16
	dwVpnStrategy uint32
	dwfOptions2 uint32
	dwfOptions3 uint32
	szDnsSuffix [256]uint16
	dwTcpWindowSize uint32
	szPrerequisitePbk [260]uint16
	szPrerequisiteEntry [257]uint16
	dwRedialCount uint32
	dwRedialPause uint32
	ipv6addrDns IN6_ADDR
	ipv6addrDnsAlt IN6_ADDR
	dwIPv4InterfaceMetric uint32
	dwIPv6InterfaceMetric uint32
	ipv6addr IN6_ADDR
	dwIPv6PrefixLength uint32
	dwNetworkOutageTime uint32
	szIDi [257]uint16
	szIDr [257]uint16
	fIsImsConfig int32
	IdiType int32
	IdrType int32
	fDisableIKEv2Fragmentation int32
}
type
  RASIPADDR = record
    a: Byte;
    b: Byte;
    c: Byte;
    d: Byte;
  end;

  IN6_ADDR = record
    u: _u_e__Union;
  end;

  RASENTRYW = record
    dwSize: DWORD;
    dwfOptions: DWORD;
    dwCountryID: DWORD;
    dwCountryCode: DWORD;
    szAreaCode: array[0..10] of WideChar;
    szLocalPhoneNumber: array[0..128] of WideChar;
    dwAlternateOffset: DWORD;
    ipaddr: RASIPADDR;
    ipaddrDns: RASIPADDR;
    ipaddrDnsAlt: RASIPADDR;
    ipaddrWins: RASIPADDR;
    ipaddrWinsAlt: RASIPADDR;
    dwFrameSize: DWORD;
    dwfNetProtocols: DWORD;
    dwFramingProtocol: DWORD;
    szScript: array[0..259] of WideChar;
    szAutodialDll: array[0..259] of WideChar;
    szAutodialFunc: array[0..259] of WideChar;
    szDeviceType: array[0..16] of WideChar;
    szDeviceName: array[0..128] of WideChar;
    szX25PadType: array[0..32] of WideChar;
    szX25Address: array[0..200] of WideChar;
    szX25Facilities: array[0..200] of WideChar;
    szX25UserData: array[0..200] of WideChar;
    dwChannels: DWORD;
    dwReserved1: DWORD;
    dwReserved2: DWORD;
    dwSubEntries: DWORD;
    dwDialMode: DWORD;
    dwDialExtraPercent: DWORD;
    dwDialExtraSampleSeconds: DWORD;
    dwHangUpExtraPercent: DWORD;
    dwHangUpExtraSampleSeconds: DWORD;
    dwIdleDisconnectSeconds: DWORD;
    dwType: DWORD;
    dwEncryptionType: DWORD;
    dwCustomAuthKey: DWORD;
    guidId: TGUID;
    szCustomDialDll: array[0..259] of WideChar;
    dwVpnStrategy: DWORD;
    dwfOptions2: DWORD;
    dwfOptions3: DWORD;
    szDnsSuffix: array[0..255] of WideChar;
    dwTcpWindowSize: DWORD;
    szPrerequisitePbk: array[0..259] of WideChar;
    szPrerequisiteEntry: array[0..256] of WideChar;
    dwRedialCount: DWORD;
    dwRedialPause: DWORD;
    ipv6addrDns: IN6_ADDR;
    ipv6addrDnsAlt: IN6_ADDR;
    dwIPv4InterfaceMetric: DWORD;
    dwIPv6InterfaceMetric: DWORD;
    ipv6addr: IN6_ADDR;
    dwIPv6PrefixLength: DWORD;
    dwNetworkOutageTime: DWORD;
    szIDi: array[0..256] of WideChar;
    szIDr: array[0..256] of WideChar;
    fIsImsConfig: BOOL;
    IdiType: Integer;
    IdrType: Integer;
    fDisableIKEv2Fragmentation: BOOL;
  end;
const RASIPADDR = extern struct {
    a: u8,
    b: u8,
    c: u8,
    d: u8,
};

const IN6_ADDR = extern struct {
    u: _u_e__Union,
};

const RASENTRYW = extern struct {
    dwSize: u32,
    dwfOptions: u32,
    dwCountryID: u32,
    dwCountryCode: u32,
    szAreaCode: [11]u16,
    szLocalPhoneNumber: [129]u16,
    dwAlternateOffset: u32,
    ipaddr: RASIPADDR,
    ipaddrDns: RASIPADDR,
    ipaddrDnsAlt: RASIPADDR,
    ipaddrWins: RASIPADDR,
    ipaddrWinsAlt: RASIPADDR,
    dwFrameSize: u32,
    dwfNetProtocols: u32,
    dwFramingProtocol: u32,
    szScript: [260]u16,
    szAutodialDll: [260]u16,
    szAutodialFunc: [260]u16,
    szDeviceType: [17]u16,
    szDeviceName: [129]u16,
    szX25PadType: [33]u16,
    szX25Address: [201]u16,
    szX25Facilities: [201]u16,
    szX25UserData: [201]u16,
    dwChannels: u32,
    dwReserved1: u32,
    dwReserved2: u32,
    dwSubEntries: u32,
    dwDialMode: u32,
    dwDialExtraPercent: u32,
    dwDialExtraSampleSeconds: u32,
    dwHangUpExtraPercent: u32,
    dwHangUpExtraSampleSeconds: u32,
    dwIdleDisconnectSeconds: u32,
    dwType: u32,
    dwEncryptionType: u32,
    dwCustomAuthKey: u32,
    guidId: GUID,
    szCustomDialDll: [260]u16,
    dwVpnStrategy: u32,
    dwfOptions2: u32,
    dwfOptions3: u32,
    szDnsSuffix: [256]u16,
    dwTcpWindowSize: u32,
    szPrerequisitePbk: [260]u16,
    szPrerequisiteEntry: [257]u16,
    dwRedialCount: u32,
    dwRedialPause: u32,
    ipv6addrDns: IN6_ADDR,
    ipv6addrDnsAlt: IN6_ADDR,
    dwIPv4InterfaceMetric: u32,
    dwIPv6InterfaceMetric: u32,
    ipv6addr: IN6_ADDR,
    dwIPv6PrefixLength: u32,
    dwNetworkOutageTime: u32,
    szIDi: [257]u16,
    szIDr: [257]u16,
    fIsImsConfig: i32,
    IdiType: i32,
    IdrType: i32,
    fDisableIKEv2Fragmentation: i32,
};
type
  RASIPADDR {.bycopy.} = object
    a: uint8
    b: uint8
    c: uint8
    d: uint8

  IN6_ADDR {.bycopy.} = object
    u: _u_e__Union

  RASENTRYW {.bycopy.} = object
    dwSize: uint32
    dwfOptions: uint32
    dwCountryID: uint32
    dwCountryCode: uint32
    szAreaCode: array[11, uint16]
    szLocalPhoneNumber: array[129, uint16]
    dwAlternateOffset: uint32
    ipaddr: RASIPADDR
    ipaddrDns: RASIPADDR
    ipaddrDnsAlt: RASIPADDR
    ipaddrWins: RASIPADDR
    ipaddrWinsAlt: RASIPADDR
    dwFrameSize: uint32
    dwfNetProtocols: uint32
    dwFramingProtocol: uint32
    szScript: array[260, uint16]
    szAutodialDll: array[260, uint16]
    szAutodialFunc: array[260, uint16]
    szDeviceType: array[17, uint16]
    szDeviceName: array[129, uint16]
    szX25PadType: array[33, uint16]
    szX25Address: array[201, uint16]
    szX25Facilities: array[201, uint16]
    szX25UserData: array[201, uint16]
    dwChannels: uint32
    dwReserved1: uint32
    dwReserved2: uint32
    dwSubEntries: uint32
    dwDialMode: uint32
    dwDialExtraPercent: uint32
    dwDialExtraSampleSeconds: uint32
    dwHangUpExtraPercent: uint32
    dwHangUpExtraSampleSeconds: uint32
    dwIdleDisconnectSeconds: uint32
    dwType: uint32
    dwEncryptionType: uint32
    dwCustomAuthKey: uint32
    guidId: GUID
    szCustomDialDll: array[260, uint16]
    dwVpnStrategy: uint32
    dwfOptions2: uint32
    dwfOptions3: uint32
    szDnsSuffix: array[256, uint16]
    dwTcpWindowSize: uint32
    szPrerequisitePbk: array[260, uint16]
    szPrerequisiteEntry: array[257, uint16]
    dwRedialCount: uint32
    dwRedialPause: uint32
    ipv6addrDns: IN6_ADDR
    ipv6addrDnsAlt: IN6_ADDR
    dwIPv4InterfaceMetric: uint32
    dwIPv6InterfaceMetric: uint32
    ipv6addr: IN6_ADDR
    dwIPv6PrefixLength: uint32
    dwNetworkOutageTime: uint32
    szIDi: array[257, uint16]
    szIDr: array[257, uint16]
    fIsImsConfig: int32
    IdiType: int32
    IdrType: int32
    fDisableIKEv2Fragmentation: int32
struct RASIPADDR
{
    ubyte a;
    ubyte b;
    ubyte c;
    ubyte d;
}

struct IN6_ADDR
{
    _u_e__Union u;
}

struct RASENTRYW
{
    uint dwSize;
    uint dwfOptions;
    uint dwCountryID;
    uint dwCountryCode;
    wchar[11] szAreaCode;
    wchar[129] szLocalPhoneNumber;
    uint dwAlternateOffset;
    RASIPADDR ipaddr;
    RASIPADDR ipaddrDns;
    RASIPADDR ipaddrDnsAlt;
    RASIPADDR ipaddrWins;
    RASIPADDR ipaddrWinsAlt;
    uint dwFrameSize;
    uint dwfNetProtocols;
    uint dwFramingProtocol;
    wchar[260] szScript;
    wchar[260] szAutodialDll;
    wchar[260] szAutodialFunc;
    wchar[17] szDeviceType;
    wchar[129] szDeviceName;
    wchar[33] szX25PadType;
    wchar[201] szX25Address;
    wchar[201] szX25Facilities;
    wchar[201] szX25UserData;
    uint dwChannels;
    uint dwReserved1;
    uint dwReserved2;
    uint dwSubEntries;
    uint dwDialMode;
    uint dwDialExtraPercent;
    uint dwDialExtraSampleSeconds;
    uint dwHangUpExtraPercent;
    uint dwHangUpExtraSampleSeconds;
    uint dwIdleDisconnectSeconds;
    uint dwType;
    uint dwEncryptionType;
    uint dwCustomAuthKey;
    GUID guidId;
    wchar[260] szCustomDialDll;
    uint dwVpnStrategy;
    uint dwfOptions2;
    uint dwfOptions3;
    wchar[256] szDnsSuffix;
    uint dwTcpWindowSize;
    wchar[260] szPrerequisitePbk;
    wchar[257] szPrerequisiteEntry;
    uint dwRedialCount;
    uint dwRedialPause;
    IN6_ADDR ipv6addrDns;
    IN6_ADDR ipv6addrDnsAlt;
    uint dwIPv4InterfaceMetric;
    uint dwIPv6InterfaceMetric;
    IN6_ADDR ipv6addr;
    uint dwIPv6PrefixLength;
    uint dwNetworkOutageTime;
    wchar[257] szIDi;
    wchar[257] szIDr;
    int fIsImsConfig;
    int IdiType;
    int IdrType;
    int fDisableIKEv2Fragmentation;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RASENTRYW サイズ: 6724 バイト(x64)
dim st, 1681    ; 4byte整数×1681(構造体サイズ 6724 / 4 切り上げ)
; dwSize : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwfOptions : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwCountryID : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwCountryCode : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; szAreaCode : WCHAR (+16, 22byte)  varptr(st)+16 を基点に操作(22byte:入れ子/配列)
; szLocalPhoneNumber : WCHAR (+38, 258byte)  varptr(st)+38 を基点に操作(258byte:入れ子/配列)
; dwAlternateOffset : DWORD (+296, 4byte)  st.74 = 値  /  値 = st.74   (lpoke/lpeek も可)
; ipaddr : RASIPADDR (+300, 4byte)  varptr(st)+300 を基点に操作(4byte:入れ子/配列)
; ipaddrDns : RASIPADDR (+304, 4byte)  varptr(st)+304 を基点に操作(4byte:入れ子/配列)
; ipaddrDnsAlt : RASIPADDR (+308, 4byte)  varptr(st)+308 を基点に操作(4byte:入れ子/配列)
; ipaddrWins : RASIPADDR (+312, 4byte)  varptr(st)+312 を基点に操作(4byte:入れ子/配列)
; ipaddrWinsAlt : RASIPADDR (+316, 4byte)  varptr(st)+316 を基点に操作(4byte:入れ子/配列)
; dwFrameSize : DWORD (+320, 4byte)  st.80 = 値  /  値 = st.80   (lpoke/lpeek も可)
; dwfNetProtocols : DWORD (+324, 4byte)  st.81 = 値  /  値 = st.81   (lpoke/lpeek も可)
; dwFramingProtocol : DWORD (+328, 4byte)  st.82 = 値  /  値 = st.82   (lpoke/lpeek も可)
; szScript : WCHAR (+332, 520byte)  varptr(st)+332 を基点に操作(520byte:入れ子/配列)
; szAutodialDll : WCHAR (+852, 520byte)  varptr(st)+852 を基点に操作(520byte:入れ子/配列)
; szAutodialFunc : WCHAR (+1372, 520byte)  varptr(st)+1372 を基点に操作(520byte:入れ子/配列)
; szDeviceType : WCHAR (+1892, 34byte)  varptr(st)+1892 を基点に操作(34byte:入れ子/配列)
; szDeviceName : WCHAR (+1926, 258byte)  varptr(st)+1926 を基点に操作(258byte:入れ子/配列)
; szX25PadType : WCHAR (+2184, 66byte)  varptr(st)+2184 を基点に操作(66byte:入れ子/配列)
; szX25Address : WCHAR (+2250, 402byte)  varptr(st)+2250 を基点に操作(402byte:入れ子/配列)
; szX25Facilities : WCHAR (+2652, 402byte)  varptr(st)+2652 を基点に操作(402byte:入れ子/配列)
; szX25UserData : WCHAR (+3054, 402byte)  varptr(st)+3054 を基点に操作(402byte:入れ子/配列)
; dwChannels : DWORD (+3456, 4byte)  st.864 = 値  /  値 = st.864   (lpoke/lpeek も可)
; dwReserved1 : DWORD (+3460, 4byte)  st.865 = 値  /  値 = st.865   (lpoke/lpeek も可)
; dwReserved2 : DWORD (+3464, 4byte)  st.866 = 値  /  値 = st.866   (lpoke/lpeek も可)
; dwSubEntries : DWORD (+3468, 4byte)  st.867 = 値  /  値 = st.867   (lpoke/lpeek も可)
; dwDialMode : RASENTRY_DIAL_MODE (+3472, 4byte)  st.868 = 値  /  値 = st.868   (lpoke/lpeek も可)
; dwDialExtraPercent : DWORD (+3476, 4byte)  st.869 = 値  /  値 = st.869   (lpoke/lpeek も可)
; dwDialExtraSampleSeconds : DWORD (+3480, 4byte)  st.870 = 値  /  値 = st.870   (lpoke/lpeek も可)
; dwHangUpExtraPercent : DWORD (+3484, 4byte)  st.871 = 値  /  値 = st.871   (lpoke/lpeek も可)
; dwHangUpExtraSampleSeconds : DWORD (+3488, 4byte)  st.872 = 値  /  値 = st.872   (lpoke/lpeek も可)
; dwIdleDisconnectSeconds : DWORD (+3492, 4byte)  st.873 = 値  /  値 = st.873   (lpoke/lpeek も可)
; dwType : DWORD (+3496, 4byte)  st.874 = 値  /  値 = st.874   (lpoke/lpeek も可)
; dwEncryptionType : DWORD (+3500, 4byte)  st.875 = 値  /  値 = st.875   (lpoke/lpeek も可)
; dwCustomAuthKey : DWORD (+3504, 4byte)  st.876 = 値  /  値 = st.876   (lpoke/lpeek も可)
; guidId : GUID (+3508, 16byte)  varptr(st)+3508 を基点に操作(16byte:入れ子/配列)
; szCustomDialDll : WCHAR (+3524, 520byte)  varptr(st)+3524 を基点に操作(520byte:入れ子/配列)
; dwVpnStrategy : DWORD (+4044, 4byte)  st.1011 = 値  /  値 = st.1011   (lpoke/lpeek も可)
; dwfOptions2 : DWORD (+4048, 4byte)  st.1012 = 値  /  値 = st.1012   (lpoke/lpeek も可)
; dwfOptions3 : DWORD (+4052, 4byte)  st.1013 = 値  /  値 = st.1013   (lpoke/lpeek も可)
; szDnsSuffix : WCHAR (+4056, 512byte)  varptr(st)+4056 を基点に操作(512byte:入れ子/配列)
; dwTcpWindowSize : DWORD (+4568, 4byte)  st.1142 = 値  /  値 = st.1142   (lpoke/lpeek も可)
; szPrerequisitePbk : WCHAR (+4572, 520byte)  varptr(st)+4572 を基点に操作(520byte:入れ子/配列)
; szPrerequisiteEntry : WCHAR (+5092, 514byte)  varptr(st)+5092 を基点に操作(514byte:入れ子/配列)
; dwRedialCount : DWORD (+5608, 4byte)  st.1402 = 値  /  値 = st.1402   (lpoke/lpeek も可)
; dwRedialPause : DWORD (+5612, 4byte)  st.1403 = 値  /  値 = st.1403   (lpoke/lpeek も可)
; ipv6addrDns : IN6_ADDR (+5616, 16byte)  varptr(st)+5616 を基点に操作(16byte:入れ子/配列)
; ipv6addrDnsAlt : IN6_ADDR (+5632, 16byte)  varptr(st)+5632 を基点に操作(16byte:入れ子/配列)
; dwIPv4InterfaceMetric : DWORD (+5648, 4byte)  st.1412 = 値  /  値 = st.1412   (lpoke/lpeek も可)
; dwIPv6InterfaceMetric : DWORD (+5652, 4byte)  st.1413 = 値  /  値 = st.1413   (lpoke/lpeek も可)
; ipv6addr : IN6_ADDR (+5656, 16byte)  varptr(st)+5656 を基点に操作(16byte:入れ子/配列)
; dwIPv6PrefixLength : DWORD (+5672, 4byte)  st.1418 = 値  /  値 = st.1418   (lpoke/lpeek も可)
; dwNetworkOutageTime : DWORD (+5676, 4byte)  st.1419 = 値  /  値 = st.1419   (lpoke/lpeek も可)
; szIDi : WCHAR (+5680, 514byte)  varptr(st)+5680 を基点に操作(514byte:入れ子/配列)
; szIDr : WCHAR (+6194, 514byte)  varptr(st)+6194 を基点に操作(514byte:入れ子/配列)
; fIsImsConfig : BOOL (+6708, 4byte)  st.1677 = 値  /  値 = st.1677   (lpoke/lpeek も可)
; IdiType : IKEV2_ID_PAYLOAD_TYPE (+6712, 4byte)  st.1678 = 値  /  値 = st.1678   (lpoke/lpeek も可)
; IdrType : IKEV2_ID_PAYLOAD_TYPE (+6716, 4byte)  st.1679 = 値  /  値 = st.1679   (lpoke/lpeek も可)
; fDisableIKEv2Fragmentation : BOOL (+6720, 4byte)  st.1680 = 値  /  値 = st.1680   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global RASIPADDR
    #field byte a
    #field byte b
    #field byte c
    #field byte d
#endstruct

#defstruct global GUID, pack=1
    #field int Data1
    #field short Data2
    #field short Data3
    #field byte Data4 8
#endstruct

#defstruct global IN6_ADDR
    #field byte u 16
#endstruct

#defstruct global RASENTRYW
    #field int dwSize
    #field int dwfOptions
    #field int dwCountryID
    #field int dwCountryCode
    #field wchar szAreaCode 11
    #field wchar szLocalPhoneNumber 129
    #field int dwAlternateOffset
    #field RASIPADDR ipaddr
    #field RASIPADDR ipaddrDns
    #field RASIPADDR ipaddrDnsAlt
    #field RASIPADDR ipaddrWins
    #field RASIPADDR ipaddrWinsAlt
    #field int dwFrameSize
    #field int dwfNetProtocols
    #field int dwFramingProtocol
    #field wchar szScript 260
    #field wchar szAutodialDll 260
    #field wchar szAutodialFunc 260
    #field wchar szDeviceType 17
    #field wchar szDeviceName 129
    #field wchar szX25PadType 33
    #field wchar szX25Address 201
    #field wchar szX25Facilities 201
    #field wchar szX25UserData 201
    #field int dwChannels
    #field int dwReserved1
    #field int dwReserved2
    #field int dwSubEntries
    #field int dwDialMode
    #field int dwDialExtraPercent
    #field int dwDialExtraSampleSeconds
    #field int dwHangUpExtraPercent
    #field int dwHangUpExtraSampleSeconds
    #field int dwIdleDisconnectSeconds
    #field int dwType
    #field int dwEncryptionType
    #field int dwCustomAuthKey
    #field GUID guidId
    #field wchar szCustomDialDll 260
    #field int dwVpnStrategy
    #field int dwfOptions2
    #field int dwfOptions3
    #field wchar szDnsSuffix 256
    #field int dwTcpWindowSize
    #field wchar szPrerequisitePbk 260
    #field wchar szPrerequisiteEntry 257
    #field int dwRedialCount
    #field int dwRedialPause
    #field IN6_ADDR ipv6addrDns
    #field IN6_ADDR ipv6addrDnsAlt
    #field int dwIPv4InterfaceMetric
    #field int dwIPv6InterfaceMetric
    #field IN6_ADDR ipv6addr
    #field int dwIPv6PrefixLength
    #field int dwNetworkOutageTime
    #field wchar szIDi 257
    #field wchar szIDr 257
    #field bool fIsImsConfig
    #field int IdiType
    #field int IdrType
    #field bool fDisableIKEv2Fragmentation
#endstruct

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