RASPPP_PROJECTION_INFO
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| dwIPv4NegotiationError | DWORD | 4 | +0 | +0 | PPP IPv4 ネットワーク制御プロトコルのネゴシエーション結果を指定する値です。値が 0 の場合、IPv4 のネゴシエーションが正常に完了したことを示します。0 以外の値は失敗を示し、制御プロトコルのネゴシエーション中に発生した致命的なエラーを表します。 | ||||||||||||
| ipv4Address | IN_ADDR | 8/4 | +8 | +4 | ローカルクライアントの IPv4 アドレスを指定する、null で終わる Unicode 文字列を格納した RASIPV4ADDR です。この文字列は "a.b.c.d" の形式です。ipv4Address は dwIPv4NegotiationError が 0 の場合にのみ有効です。 | ||||||||||||
| ipv4ServerAddress | IN_ADDR | 8/4 | +16 | +8 | リモートサーバーの IPv4 アドレスを指定する Unicode 文字列を格納した RASIPV4ADDR 構造体です。この文字列は "a.b.c.d" の形式です。ipv4ServerAddress は dwIPv4NegotiationError が 0 の場合にのみ有効です。アドレスが利用できない場合、このメンバーは空の文字列になります。 | ||||||||||||
| dwIPv4Options | DWORD | 4 | +24 | +12 | ローカルクライアントの Internet Protocol Control Protocol (IPCP) オプションを指定する値です。
| ||||||||||||
| dwIPv4ServerOptions | DWORD | 4 | +28 | +16 | リモートサーバーの IPCP オプションを指定する値です。
| ||||||||||||
| dwIPv6NegotiationError | DWORD | 4 | +32 | +20 | PPP IPv6 ネットワーク制御プロトコルのネゴシエーション結果を指定する値です。値が 0 の場合、IPv6 のネゴシエーションが正常に完了したことを示します。0 以外の値は失敗を示し、制御プロトコルのネゴシエーション中に発生した致命的なエラーを表します。 | ||||||||||||
| bInterfaceIdentifier | BYTE | 8 | +36 | +24 | クライアントの 64 ビット IPv6 インターフェイス識別子を指定する配列です。128 ビットの IPv6 インターネットアドレスの下位 64 ビットは「インターフェイス識別子」と見なされ、先行する 64 ビットに対して高い一意性を提供します。bInterfaceIdentifier は 0 であってはならず、dwIPv6NegotiationError が 0 の場合にのみ有効です。 | ||||||||||||
| bServerInterfaceIdentifier | BYTE | 8 | +44 | +32 | サーバーの 64 ビット IPv6 インターフェイス識別子を指定する配列です。128 ビットの IPv6 インターネットアドレスの下位 64 ビットは「インターフェイス識別子」と見なされ、先行する 64 ビットに対して高い一意性を提供します。bServerInterfaceIdentifier は 0 であってはならず、dwIPv6NegotiationError が 0 の場合にのみ有効です。 | ||||||||||||
| fBundled | BOOL | 4 | +52 | +40 | 接続が複数のリンクで構成されている場合は TRUE、それ以外の場合は FALSE となる BOOL です。 | ||||||||||||
| fMultilink | BOOL | 4 | +56 | +44 | 接続が複数のリンクをサポートしている場合は TRUE、それ以外の場合は FALSE となる BOOL です。 | ||||||||||||
| dwAuthenticationProtocol | RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL | 4 | +60 | +48 | ローカルクライアントの認証に使用された認証プロトコルを指定する値です。このメンバーには次のいずれかの値を指定できます。 | ||||||||||||
| dwAuthenticationData | RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA | 4 | +64 | +52 | dwAuthenticationProtocol で指定された認証プロトコルに関する追加情報を指定する値です。クライアントとサーバーで異なる認証プロトコルが使用される場合、dwAuthenticationData と dwServerAuthenticationData は異なる値になります。このメンバーには次のいずれかの値を指定できます:
| ||||||||||||
| dwServerAuthenticationProtocol | RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL | 4 | +68 | +56 | リモートサーバーの認証に使用された認証プロトコルを指定する値です。このメンバーには次のいずれかの値を指定できます: | ||||||||||||
| dwServerAuthenticationData | RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA | 4 | +72 | +60 | dwServerAuthenticationProtocol で指定された認証プロトコルに関する追加情報を指定する値です。 クライアントとサーバーで異なる認証プロトコルが使用される場合、dwAuthenticationData と dwServerAuthenticationData は異なる値になります。このメンバーには次のいずれかの値を指定できます:
| ||||||||||||
| dwEapTypeId | DWORD | 4 | +76 | +64 | ローカルクライアントの認証に使用された Extensible Authentication Protocol (EAP) の種類識別子を指定する値です。このメンバーの値は、dwAuthenticationProtocol が RASLCPAPP_EAP. の場合にのみ有効です。 | ||||||||||||
| dwServerEapTypeId | DWORD | 4 | +80 | +68 | リモートサーバーの認証に使用された Extensible Authentication Protocol (EAP) の種類識別子を指定する値です。このメンバーの値は、dwRemoteAuthenticationProtocol が RASLCPAPP_EAP. の場合にのみ有効です。 | ||||||||||||
| dwLcpOptions | DWORD | 4 | +84 | +72 | ローカルクライアントが使用している LCP オプションに関する情報を指定する値です。このメンバーは次のフラグの組み合わせです:
| ||||||||||||
| dwLcpServerOptions | DWORD | 4 | +88 | +76 | リモートサーバーが使用している LCP オプションに関する情報を指定する値です。このメンバーは次のフラグの組み合わせです:
| ||||||||||||
| dwCcpError | DWORD | 4 | +92 | +80 | CCP圧縮制御のエラーコード。0なら正常。 | ||||||||||||
| dwCcpCompressionAlgorithm | DWORD | 4 | +96 | +84 | ローカルクライアントが使用する圧縮アルゴリズムを指定する値です。次の表に、このメンバーに指定できる値を示します。
| ||||||||||||
| dwCcpServerCompressionAlgorithm | DWORD | 4 | +100 | +88 | リモートサーバーが使用する圧縮アルゴリズムを指定する値です。次のアルゴリズムがサポートされます:
| ||||||||||||
| dwCcpOptions | DWORD | 4 | +104 | +92 | ローカルクライアントで利用可能な圧縮の種類を指定する値です。次の種類がサポートされます: | ||||||||||||
| dwCcpServerOptions | DWORD | 4 | +108 | +96 | リモートサーバーで利用可能な圧縮の種類を指定する値です。次の種類がサポートされます: |
公式ドキュメント
RASPPP_PROJECTION_INFO 構造体は、Point-to-Point (PPP) による Internet Protocol version 4 (IPv4) および IPv6 のプロジェクション操作のネゴシエーション、PPP Link Control Protocol (LCP)/マルチリンクのネゴシエーション、および Compression Control Protocol (CCP) のネゴシエーション中に取得された情報を格納します。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// IN_ADDR (x64 8 / x86 4 バイト)
typedef struct IN_ADDR {
_S_un_e__Union S_un;
} IN_ADDR;
// RASPPP_PROJECTION_INFO (x64 112 / x86 100 バイト)
typedef struct RASPPP_PROJECTION_INFO {
DWORD dwIPv4NegotiationError;
IN_ADDR ipv4Address;
IN_ADDR ipv4ServerAddress;
DWORD dwIPv4Options;
DWORD dwIPv4ServerOptions;
DWORD dwIPv6NegotiationError;
BYTE bInterfaceIdentifier[8];
BYTE bServerInterfaceIdentifier[8];
BOOL fBundled;
BOOL fMultilink;
RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL dwAuthenticationProtocol;
RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA dwAuthenticationData;
RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL dwServerAuthenticationProtocol;
RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA dwServerAuthenticationData;
DWORD dwEapTypeId;
DWORD dwServerEapTypeId;
DWORD dwLcpOptions;
DWORD dwLcpServerOptions;
DWORD dwCcpError;
DWORD dwCcpCompressionAlgorithm;
DWORD dwCcpServerCompressionAlgorithm;
DWORD dwCcpOptions;
DWORD dwCcpServerOptions;
} RASPPP_PROJECTION_INFO;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IN_ADDR
{
public _S_un_e__Union S_un;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RASPPP_PROJECTION_INFO
{
public uint dwIPv4NegotiationError;
public IN_ADDR ipv4Address;
public IN_ADDR ipv4ServerAddress;
public uint dwIPv4Options;
public uint dwIPv4ServerOptions;
public uint dwIPv6NegotiationError;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] bInterfaceIdentifier;
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 8)] public byte[] bServerInterfaceIdentifier;
[MarshalAs(UnmanagedType.Bool)] public bool fBundled;
[MarshalAs(UnmanagedType.Bool)] public bool fMultilink;
public uint dwAuthenticationProtocol;
public uint dwAuthenticationData;
public uint dwServerAuthenticationProtocol;
public uint dwServerAuthenticationData;
public uint dwEapTypeId;
public uint dwServerEapTypeId;
public uint dwLcpOptions;
public uint dwLcpServerOptions;
public uint dwCcpError;
public uint dwCcpCompressionAlgorithm;
public uint dwCcpServerCompressionAlgorithm;
public uint dwCcpOptions;
public uint dwCcpServerOptions;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IN_ADDR
Public S_un As _S_un_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RASPPP_PROJECTION_INFO
Public dwIPv4NegotiationError As UInteger
Public ipv4Address As IN_ADDR
Public ipv4ServerAddress As IN_ADDR
Public dwIPv4Options As UInteger
Public dwIPv4ServerOptions As UInteger
Public dwIPv6NegotiationError As UInteger
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public bInterfaceIdentifier() As Byte
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=8)> Public bServerInterfaceIdentifier() As Byte
<MarshalAs(UnmanagedType.Bool)> Public fBundled As Boolean
<MarshalAs(UnmanagedType.Bool)> Public fMultilink As Boolean
Public dwAuthenticationProtocol As UInteger
Public dwAuthenticationData As UInteger
Public dwServerAuthenticationProtocol As UInteger
Public dwServerAuthenticationData As UInteger
Public dwEapTypeId As UInteger
Public dwServerEapTypeId As UInteger
Public dwLcpOptions As UInteger
Public dwLcpServerOptions As UInteger
Public dwCcpError As UInteger
Public dwCcpCompressionAlgorithm As UInteger
Public dwCcpServerCompressionAlgorithm As UInteger
Public dwCcpOptions As UInteger
Public dwCcpServerOptions As UInteger
End Structureimport ctypes
from ctypes import wintypes
class IN_ADDR(ctypes.Structure):
_fields_ = [
("S_un", _S_un_e__Union),
]
class RASPPP_PROJECTION_INFO(ctypes.Structure):
_fields_ = [
("dwIPv4NegotiationError", wintypes.DWORD),
("ipv4Address", IN_ADDR),
("ipv4ServerAddress", IN_ADDR),
("dwIPv4Options", wintypes.DWORD),
("dwIPv4ServerOptions", wintypes.DWORD),
("dwIPv6NegotiationError", wintypes.DWORD),
("bInterfaceIdentifier", ctypes.c_ubyte * 8),
("bServerInterfaceIdentifier", ctypes.c_ubyte * 8),
("fBundled", wintypes.BOOL),
("fMultilink", wintypes.BOOL),
("dwAuthenticationProtocol", wintypes.DWORD),
("dwAuthenticationData", wintypes.DWORD),
("dwServerAuthenticationProtocol", wintypes.DWORD),
("dwServerAuthenticationData", wintypes.DWORD),
("dwEapTypeId", wintypes.DWORD),
("dwServerEapTypeId", wintypes.DWORD),
("dwLcpOptions", wintypes.DWORD),
("dwLcpServerOptions", wintypes.DWORD),
("dwCcpError", wintypes.DWORD),
("dwCcpCompressionAlgorithm", wintypes.DWORD),
("dwCcpServerCompressionAlgorithm", wintypes.DWORD),
("dwCcpOptions", wintypes.DWORD),
("dwCcpServerOptions", wintypes.DWORD),
]#[repr(C)]
pub struct IN_ADDR {
pub S_un: _S_un_e__Union,
}
#[repr(C)]
pub struct RASPPP_PROJECTION_INFO {
pub dwIPv4NegotiationError: u32,
pub ipv4Address: IN_ADDR,
pub ipv4ServerAddress: IN_ADDR,
pub dwIPv4Options: u32,
pub dwIPv4ServerOptions: u32,
pub dwIPv6NegotiationError: u32,
pub bInterfaceIdentifier: [u8; 8],
pub bServerInterfaceIdentifier: [u8; 8],
pub fBundled: i32,
pub fMultilink: i32,
pub dwAuthenticationProtocol: u32,
pub dwAuthenticationData: u32,
pub dwServerAuthenticationProtocol: u32,
pub dwServerAuthenticationData: u32,
pub dwEapTypeId: u32,
pub dwServerEapTypeId: u32,
pub dwLcpOptions: u32,
pub dwLcpServerOptions: u32,
pub dwCcpError: u32,
pub dwCcpCompressionAlgorithm: u32,
pub dwCcpServerCompressionAlgorithm: u32,
pub dwCcpOptions: u32,
pub dwCcpServerOptions: u32,
}import "golang.org/x/sys/windows"
type IN_ADDR struct {
S_un _S_un_e__Union
}
type RASPPP_PROJECTION_INFO struct {
dwIPv4NegotiationError uint32
ipv4Address IN_ADDR
ipv4ServerAddress IN_ADDR
dwIPv4Options uint32
dwIPv4ServerOptions uint32
dwIPv6NegotiationError uint32
bInterfaceIdentifier [8]byte
bServerInterfaceIdentifier [8]byte
fBundled int32
fMultilink int32
dwAuthenticationProtocol uint32
dwAuthenticationData uint32
dwServerAuthenticationProtocol uint32
dwServerAuthenticationData uint32
dwEapTypeId uint32
dwServerEapTypeId uint32
dwLcpOptions uint32
dwLcpServerOptions uint32
dwCcpError uint32
dwCcpCompressionAlgorithm uint32
dwCcpServerCompressionAlgorithm uint32
dwCcpOptions uint32
dwCcpServerOptions uint32
}type
IN_ADDR = record
S_un: _S_un_e__Union;
end;
RASPPP_PROJECTION_INFO = record
dwIPv4NegotiationError: DWORD;
ipv4Address: IN_ADDR;
ipv4ServerAddress: IN_ADDR;
dwIPv4Options: DWORD;
dwIPv4ServerOptions: DWORD;
dwIPv6NegotiationError: DWORD;
bInterfaceIdentifier: array[0..7] of Byte;
bServerInterfaceIdentifier: array[0..7] of Byte;
fBundled: BOOL;
fMultilink: BOOL;
dwAuthenticationProtocol: DWORD;
dwAuthenticationData: DWORD;
dwServerAuthenticationProtocol: DWORD;
dwServerAuthenticationData: DWORD;
dwEapTypeId: DWORD;
dwServerEapTypeId: DWORD;
dwLcpOptions: DWORD;
dwLcpServerOptions: DWORD;
dwCcpError: DWORD;
dwCcpCompressionAlgorithm: DWORD;
dwCcpServerCompressionAlgorithm: DWORD;
dwCcpOptions: DWORD;
dwCcpServerOptions: DWORD;
end;const IN_ADDR = extern struct {
S_un: _S_un_e__Union,
};
const RASPPP_PROJECTION_INFO = extern struct {
dwIPv4NegotiationError: u32,
ipv4Address: IN_ADDR,
ipv4ServerAddress: IN_ADDR,
dwIPv4Options: u32,
dwIPv4ServerOptions: u32,
dwIPv6NegotiationError: u32,
bInterfaceIdentifier: [8]u8,
bServerInterfaceIdentifier: [8]u8,
fBundled: i32,
fMultilink: i32,
dwAuthenticationProtocol: u32,
dwAuthenticationData: u32,
dwServerAuthenticationProtocol: u32,
dwServerAuthenticationData: u32,
dwEapTypeId: u32,
dwServerEapTypeId: u32,
dwLcpOptions: u32,
dwLcpServerOptions: u32,
dwCcpError: u32,
dwCcpCompressionAlgorithm: u32,
dwCcpServerCompressionAlgorithm: u32,
dwCcpOptions: u32,
dwCcpServerOptions: u32,
};type
IN_ADDR {.bycopy.} = object
S_un: _S_un_e__Union
RASPPP_PROJECTION_INFO {.bycopy.} = object
dwIPv4NegotiationError: uint32
ipv4Address: IN_ADDR
ipv4ServerAddress: IN_ADDR
dwIPv4Options: uint32
dwIPv4ServerOptions: uint32
dwIPv6NegotiationError: uint32
bInterfaceIdentifier: array[8, uint8]
bServerInterfaceIdentifier: array[8, uint8]
fBundled: int32
fMultilink: int32
dwAuthenticationProtocol: uint32
dwAuthenticationData: uint32
dwServerAuthenticationProtocol: uint32
dwServerAuthenticationData: uint32
dwEapTypeId: uint32
dwServerEapTypeId: uint32
dwLcpOptions: uint32
dwLcpServerOptions: uint32
dwCcpError: uint32
dwCcpCompressionAlgorithm: uint32
dwCcpServerCompressionAlgorithm: uint32
dwCcpOptions: uint32
dwCcpServerOptions: uint32struct IN_ADDR
{
_S_un_e__Union S_un;
}
struct RASPPP_PROJECTION_INFO
{
uint dwIPv4NegotiationError;
IN_ADDR ipv4Address;
IN_ADDR ipv4ServerAddress;
uint dwIPv4Options;
uint dwIPv4ServerOptions;
uint dwIPv6NegotiationError;
ubyte[8] bInterfaceIdentifier;
ubyte[8] bServerInterfaceIdentifier;
int fBundled;
int fMultilink;
uint dwAuthenticationProtocol;
uint dwAuthenticationData;
uint dwServerAuthenticationProtocol;
uint dwServerAuthenticationData;
uint dwEapTypeId;
uint dwServerEapTypeId;
uint dwLcpOptions;
uint dwLcpServerOptions;
uint dwCcpError;
uint dwCcpCompressionAlgorithm;
uint dwCcpServerCompressionAlgorithm;
uint dwCcpOptions;
uint dwCcpServerOptions;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; RASPPP_PROJECTION_INFO サイズ: 100 バイト(x86)
dim st, 25 ; 4byte整数×25(構造体サイズ 100 / 4 切り上げ)
; dwIPv4NegotiationError : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ipv4Address : IN_ADDR (+4, 4byte) varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; ipv4ServerAddress : IN_ADDR (+8, 4byte) varptr(st)+8 を基点に操作(4byte:入れ子/配列)
; dwIPv4Options : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwIPv4ServerOptions : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwIPv6NegotiationError : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; bInterfaceIdentifier : BYTE (+24, 8byte) varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; bServerInterfaceIdentifier : BYTE (+32, 8byte) varptr(st)+32 を基点に操作(8byte:入れ子/配列)
; fBundled : BOOL (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; fMultilink : BOOL (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwAuthenticationProtocol : RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwAuthenticationData : RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwServerAuthenticationProtocol : RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; dwServerAuthenticationData : RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwEapTypeId : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; dwServerEapTypeId : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; dwLcpOptions : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; dwLcpServerOptions : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; dwCcpError : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; dwCcpCompressionAlgorithm : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; dwCcpServerCompressionAlgorithm : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; dwCcpOptions : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; dwCcpServerOptions : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RASPPP_PROJECTION_INFO サイズ: 112 バイト(x64)
dim st, 28 ; 4byte整数×28(構造体サイズ 112 / 4 切り上げ)
; dwIPv4NegotiationError : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ipv4Address : IN_ADDR (+8, 8byte) varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; ipv4ServerAddress : IN_ADDR (+16, 8byte) varptr(st)+16 を基点に操作(8byte:入れ子/配列)
; dwIPv4Options : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwIPv4ServerOptions : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwIPv6NegotiationError : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; bInterfaceIdentifier : BYTE (+36, 8byte) varptr(st)+36 を基点に操作(8byte:入れ子/配列)
; bServerInterfaceIdentifier : BYTE (+44, 8byte) varptr(st)+44 を基点に操作(8byte:入れ子/配列)
; fBundled : BOOL (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; fMultilink : BOOL (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; dwAuthenticationProtocol : RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwAuthenticationData : RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; dwServerAuthenticationProtocol : RASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; dwServerAuthenticationData : RASPPP_PROJECTION_INFO_SERVER_AUTH_DATA (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; dwEapTypeId : DWORD (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; dwServerEapTypeId : DWORD (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; dwLcpOptions : DWORD (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; dwLcpServerOptions : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; dwCcpError : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; dwCcpCompressionAlgorithm : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; dwCcpServerCompressionAlgorithm : DWORD (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; dwCcpOptions : DWORD (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; dwCcpServerOptions : DWORD (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global IN_ADDR
#field byte S_un 8
#endstruct
#defstruct global RASPPP_PROJECTION_INFO
#field int dwIPv4NegotiationError
#field IN_ADDR ipv4Address
#field IN_ADDR ipv4ServerAddress
#field int dwIPv4Options
#field int dwIPv4ServerOptions
#field int dwIPv6NegotiationError
#field byte bInterfaceIdentifier 8
#field byte bServerInterfaceIdentifier 8
#field bool fBundled
#field bool fMultilink
#field int dwAuthenticationProtocol
#field int dwAuthenticationData
#field int dwServerAuthenticationProtocol
#field int dwServerAuthenticationData
#field int dwEapTypeId
#field int dwServerEapTypeId
#field int dwLcpOptions
#field int dwLcpServerOptions
#field int dwCcpError
#field int dwCcpCompressionAlgorithm
#field int dwCcpServerCompressionAlgorithm
#field int dwCcpOptions
#field int dwCcpServerOptions
#endstruct
stdim st, RASPPP_PROJECTION_INFO ; NSTRUCT 変数を確保
st->dwIPv4NegotiationError = 100
mes "dwIPv4NegotiationError=" + st->dwIPv4NegotiationError