ホーム › NetworkManagement.NetManagement › RASCON_IPUI
RASCON_IPUI
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| guidConnection | GUID | 16 | +0 | +0 | 対象RAS接続を識別するGUIDを示す。 |
| fIPv6Cfg | BOOL | 4 | +16 | +16 | IPv6構成を扱うかを示すフラグ。TRUEでIPv6設定が有効となる。 |
| dwFlags | DWORD | 4 | +20 | +20 | IP設定の動作を制御するフラグを示す。 |
| pszwIpAddr | WCHAR | 32 | +24 | +24 | IPv4アドレスを表す文字列バッファを示す。 |
| pszwDnsAddr | WCHAR | 32 | +56 | +56 | プライマリDNSサーバーアドレスを表す文字列バッファを示す。 |
| pszwDns2Addr | WCHAR | 32 | +88 | +88 | セカンダリDNSサーバーアドレスを表す文字列バッファを示す。 |
| pszwWinsAddr | WCHAR | 32 | +120 | +120 | プライマリWINSサーバーアドレスを表す文字列バッファを示す。 |
| pszwWins2Addr | WCHAR | 32 | +152 | +152 | セカンダリWINSサーバーアドレスを表す文字列バッファを示す。 |
| pszwDnsSuffix | WCHAR | 512 | +184 | +184 | DNSサフィックスを表す文字列バッファを示す。 |
| pszwIpv6Addr | WCHAR | 130 | +696 | +696 | IPv6アドレスを表す文字列バッファを示す。 |
| dwIpv6PrefixLength | DWORD | 4 | +828 | +828 | IPv6アドレスのプレフィックス長を示す。 |
| pszwIpv6DnsAddr | WCHAR | 130 | +832 | +832 | プライマリIPv6 DNSサーバーアドレスを表す文字列バッファを示す。 |
| pszwIpv6Dns2Addr | WCHAR | 130 | +962 | +962 | セカンダリIPv6 DNSサーバーアドレスを表す文字列バッファを示す。 |
| dwIPv4InfMetric | DWORD | 4 | +1092 | +1092 | IPv4インターフェイスのメトリック値を示す。経路選択に用いる。 |
| dwIPv6InfMetric | DWORD | 4 | +1096 | +1096 | IPv6インターフェイスのメトリック値を示す。経路選択に用いる。 |
各言語での定義
#include <windows.h>
// RASCON_IPUI (x64 1100 / x86 1100 バイト)
typedef struct RASCON_IPUI {
GUID guidConnection;
BOOL fIPv6Cfg;
DWORD dwFlags;
WCHAR pszwIpAddr[16];
WCHAR pszwDnsAddr[16];
WCHAR pszwDns2Addr[16];
WCHAR pszwWinsAddr[16];
WCHAR pszwWins2Addr[16];
WCHAR pszwDnsSuffix[256];
WCHAR pszwIpv6Addr[65];
DWORD dwIpv6PrefixLength;
WCHAR pszwIpv6DnsAddr[65];
WCHAR pszwIpv6Dns2Addr[65];
DWORD dwIPv4InfMetric;
DWORD dwIPv6InfMetric;
} RASCON_IPUI;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RASCON_IPUI
{
public Guid guidConnection;
[MarshalAs(UnmanagedType.Bool)] public bool fIPv6Cfg;
public uint dwFlags;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string pszwIpAddr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string pszwDnsAddr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string pszwDns2Addr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string pszwWinsAddr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string pszwWins2Addr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 256)] public string pszwDnsSuffix;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 65)] public string pszwIpv6Addr;
public uint dwIpv6PrefixLength;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 65)] public string pszwIpv6DnsAddr;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 65)] public string pszwIpv6Dns2Addr;
public uint dwIPv4InfMetric;
public uint dwIPv6InfMetric;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RASCON_IPUI
Public guidConnection As Guid
<MarshalAs(UnmanagedType.Bool)> Public fIPv6Cfg As Boolean
Public dwFlags As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> Public pszwIpAddr As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> Public pszwDnsAddr As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> Public pszwDns2Addr As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> Public pszwWinsAddr As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> Public pszwWins2Addr As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=256)> Public pszwDnsSuffix As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=65)> Public pszwIpv6Addr As String
Public dwIpv6PrefixLength As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=65)> Public pszwIpv6DnsAddr As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=65)> Public pszwIpv6Dns2Addr As String
Public dwIPv4InfMetric As UInteger
Public dwIPv6InfMetric As UInteger
End Structureimport ctypes
from ctypes import wintypes
class RASCON_IPUI(ctypes.Structure):
_fields_ = [
("guidConnection", GUID),
("fIPv6Cfg", wintypes.BOOL),
("dwFlags", wintypes.DWORD),
("pszwIpAddr", ctypes.c_wchar * 16),
("pszwDnsAddr", ctypes.c_wchar * 16),
("pszwDns2Addr", ctypes.c_wchar * 16),
("pszwWinsAddr", ctypes.c_wchar * 16),
("pszwWins2Addr", ctypes.c_wchar * 16),
("pszwDnsSuffix", ctypes.c_wchar * 256),
("pszwIpv6Addr", ctypes.c_wchar * 65),
("dwIpv6PrefixLength", wintypes.DWORD),
("pszwIpv6DnsAddr", ctypes.c_wchar * 65),
("pszwIpv6Dns2Addr", ctypes.c_wchar * 65),
("dwIPv4InfMetric", wintypes.DWORD),
("dwIPv6InfMetric", wintypes.DWORD),
]#[repr(C)]
pub struct RASCON_IPUI {
pub guidConnection: GUID,
pub fIPv6Cfg: i32,
pub dwFlags: u32,
pub pszwIpAddr: [u16; 16],
pub pszwDnsAddr: [u16; 16],
pub pszwDns2Addr: [u16; 16],
pub pszwWinsAddr: [u16; 16],
pub pszwWins2Addr: [u16; 16],
pub pszwDnsSuffix: [u16; 256],
pub pszwIpv6Addr: [u16; 65],
pub dwIpv6PrefixLength: u32,
pub pszwIpv6DnsAddr: [u16; 65],
pub pszwIpv6Dns2Addr: [u16; 65],
pub dwIPv4InfMetric: u32,
pub dwIPv6InfMetric: u32,
}import "golang.org/x/sys/windows"
type RASCON_IPUI struct {
guidConnection windows.GUID
fIPv6Cfg int32
dwFlags uint32
pszwIpAddr [16]uint16
pszwDnsAddr [16]uint16
pszwDns2Addr [16]uint16
pszwWinsAddr [16]uint16
pszwWins2Addr [16]uint16
pszwDnsSuffix [256]uint16
pszwIpv6Addr [65]uint16
dwIpv6PrefixLength uint32
pszwIpv6DnsAddr [65]uint16
pszwIpv6Dns2Addr [65]uint16
dwIPv4InfMetric uint32
dwIPv6InfMetric uint32
}type
RASCON_IPUI = record
guidConnection: TGUID;
fIPv6Cfg: BOOL;
dwFlags: DWORD;
pszwIpAddr: array[0..15] of WideChar;
pszwDnsAddr: array[0..15] of WideChar;
pszwDns2Addr: array[0..15] of WideChar;
pszwWinsAddr: array[0..15] of WideChar;
pszwWins2Addr: array[0..15] of WideChar;
pszwDnsSuffix: array[0..255] of WideChar;
pszwIpv6Addr: array[0..64] of WideChar;
dwIpv6PrefixLength: DWORD;
pszwIpv6DnsAddr: array[0..64] of WideChar;
pszwIpv6Dns2Addr: array[0..64] of WideChar;
dwIPv4InfMetric: DWORD;
dwIPv6InfMetric: DWORD;
end;const RASCON_IPUI = extern struct {
guidConnection: GUID,
fIPv6Cfg: i32,
dwFlags: u32,
pszwIpAddr: [16]u16,
pszwDnsAddr: [16]u16,
pszwDns2Addr: [16]u16,
pszwWinsAddr: [16]u16,
pszwWins2Addr: [16]u16,
pszwDnsSuffix: [256]u16,
pszwIpv6Addr: [65]u16,
dwIpv6PrefixLength: u32,
pszwIpv6DnsAddr: [65]u16,
pszwIpv6Dns2Addr: [65]u16,
dwIPv4InfMetric: u32,
dwIPv6InfMetric: u32,
};type
RASCON_IPUI {.bycopy.} = object
guidConnection: GUID
fIPv6Cfg: int32
dwFlags: uint32
pszwIpAddr: array[16, uint16]
pszwDnsAddr: array[16, uint16]
pszwDns2Addr: array[16, uint16]
pszwWinsAddr: array[16, uint16]
pszwWins2Addr: array[16, uint16]
pszwDnsSuffix: array[256, uint16]
pszwIpv6Addr: array[65, uint16]
dwIpv6PrefixLength: uint32
pszwIpv6DnsAddr: array[65, uint16]
pszwIpv6Dns2Addr: array[65, uint16]
dwIPv4InfMetric: uint32
dwIPv6InfMetric: uint32struct RASCON_IPUI
{
GUID guidConnection;
int fIPv6Cfg;
uint dwFlags;
wchar[16] pszwIpAddr;
wchar[16] pszwDnsAddr;
wchar[16] pszwDns2Addr;
wchar[16] pszwWinsAddr;
wchar[16] pszwWins2Addr;
wchar[256] pszwDnsSuffix;
wchar[65] pszwIpv6Addr;
uint dwIpv6PrefixLength;
wchar[65] pszwIpv6DnsAddr;
wchar[65] pszwIpv6Dns2Addr;
uint dwIPv4InfMetric;
uint dwIPv6InfMetric;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RASCON_IPUI サイズ: 1100 バイト(x64)
dim st, 275 ; 4byte整数×275(構造体サイズ 1100 / 4 切り上げ)
; guidConnection : GUID (+0, 16byte) varptr(st)+0 を基点に操作(16byte:入れ子/配列)
; fIPv6Cfg : BOOL (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwFlags : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; pszwIpAddr : WCHAR (+24, 32byte) varptr(st)+24 を基点に操作(32byte:入れ子/配列)
; pszwDnsAddr : WCHAR (+56, 32byte) varptr(st)+56 を基点に操作(32byte:入れ子/配列)
; pszwDns2Addr : WCHAR (+88, 32byte) varptr(st)+88 を基点に操作(32byte:入れ子/配列)
; pszwWinsAddr : WCHAR (+120, 32byte) varptr(st)+120 を基点に操作(32byte:入れ子/配列)
; pszwWins2Addr : WCHAR (+152, 32byte) varptr(st)+152 を基点に操作(32byte:入れ子/配列)
; pszwDnsSuffix : WCHAR (+184, 512byte) varptr(st)+184 を基点に操作(512byte:入れ子/配列)
; pszwIpv6Addr : WCHAR (+696, 130byte) varptr(st)+696 を基点に操作(130byte:入れ子/配列)
; dwIpv6PrefixLength : DWORD (+828, 4byte) st.207 = 値 / 値 = st.207 (lpoke/lpeek も可)
; pszwIpv6DnsAddr : WCHAR (+832, 130byte) varptr(st)+832 を基点に操作(130byte:入れ子/配列)
; pszwIpv6Dns2Addr : WCHAR (+962, 130byte) varptr(st)+962 を基点に操作(130byte:入れ子/配列)
; dwIPv4InfMetric : DWORD (+1092, 4byte) st.273 = 値 / 値 = st.273 (lpoke/lpeek も可)
; dwIPv6InfMetric : DWORD (+1096, 4byte) st.274 = 値 / 値 = st.274 (lpoke/lpeek も可)
; ※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 RASCON_IPUI
#field GUID guidConnection
#field bool fIPv6Cfg
#field int dwFlags
#field wchar pszwIpAddr 16
#field wchar pszwDnsAddr 16
#field wchar pszwDns2Addr 16
#field wchar pszwWinsAddr 16
#field wchar pszwWins2Addr 16
#field wchar pszwDnsSuffix 256
#field wchar pszwIpv6Addr 65
#field int dwIpv6PrefixLength
#field wchar pszwIpv6DnsAddr 65
#field wchar pszwIpv6Dns2Addr 65
#field int dwIPv4InfMetric
#field int dwIPv6InfMetric
#endstruct
stdim st, RASCON_IPUI ; NSTRUCT 変数を確保
st->fIPv6Cfg = 100
mes "fIPv6Cfg=" + st->fIPv6Cfg