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

RASPPP_PROJECTION_INFO

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

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

フィールド

フィールドサイズx64x86説明
dwIPv4NegotiationErrorDWORD4+0+0PPP IPv4 ネットワーク制御プロトコルのネゴシエーション結果を指定する値です。値が 0 の場合、IPv4 のネゴシエーションが正常に完了したことを示します。0 以外の値は失敗を示し、制御プロトコルのネゴシエーション中に発生した致命的なエラーを表します。
ipv4AddressIN_ADDR8/4+8+4ローカルクライアントの IPv4 アドレスを指定する、null で終わる Unicode 文字列を格納した RASIPV4ADDR です。この文字列は "a.b.c.d" の形式です。ipv4AddressdwIPv4NegotiationError が 0 の場合にのみ有効です。
ipv4ServerAddressIN_ADDR8/4+16+8リモートサーバーの IPv4 アドレスを指定する Unicode 文字列を格納した RASIPV4ADDR 構造体です。この文字列は "a.b.c.d" の形式です。ipv4ServerAddressdwIPv4NegotiationError が 0 の場合にのみ有効です。アドレスが利用できない場合、このメンバーは空の文字列になります。
dwIPv4OptionsDWORD4+24+12

ローカルクライアントの Internet Protocol Control Protocol (IPCP) オプションを指定する値です。

意味
RASIPO_VJ
ローカルクライアントが送信する IP データグラムが Van Jacobson 圧縮によって圧縮されることを示します。
dwIPv4ServerOptionsDWORD4+28+16

リモートサーバーの IPCP オプションを指定する値です。

意味
RASIPO_VJ
リモートサーバーが送信する (つまりローカルコンピューターが受信する) IP データグラムが Van Jacobson 圧縮によって圧縮されることを示します。
dwIPv6NegotiationErrorDWORD4+32+20PPP IPv6 ネットワーク制御プロトコルのネゴシエーション結果を指定する値です。値が 0 の場合、IPv6 のネゴシエーションが正常に完了したことを示します。0 以外の値は失敗を示し、制御プロトコルのネゴシエーション中に発生した致命的なエラーを表します。
bInterfaceIdentifierBYTE8+36+24クライアントの 64 ビット IPv6 インターフェイス識別子を指定する配列です。128 ビットの IPv6 インターネットアドレスの下位 64 ビットは「インターフェイス識別子」と見なされ、先行する 64 ビットに対して高い一意性を提供します。bInterfaceIdentifier は 0 であってはならず、dwIPv6NegotiationError が 0 の場合にのみ有効です。
bServerInterfaceIdentifierBYTE8+44+32サーバーの 64 ビット IPv6 インターフェイス識別子を指定する配列です。128 ビットの IPv6 インターネットアドレスの下位 64 ビットは「インターフェイス識別子」と見なされ、先行する 64 ビットに対して高い一意性を提供します。bServerInterfaceIdentifier は 0 であってはならず、dwIPv6NegotiationError が 0 の場合にのみ有効です。
fBundledBOOL4+52+40接続が複数のリンクで構成されている場合は TRUE、それ以外の場合は FALSE となる BOOL です。
fMultilinkBOOL4+56+44接続が複数のリンクをサポートしている場合は TRUE、それ以外の場合は FALSE となる BOOL です。
dwAuthenticationProtocolRASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL4+60+48

ローカルクライアントの認証に使用された認証プロトコルを指定する値です。このメンバーには次のいずれかの値を指定できます。

意味
RASLCPAP_PAP
Password Authentication Protocol (パスワード認証プロトコル)。
RASLCPAP_SPAP
Shiva Password Authentication Protocol (Shiva パスワード認証プロトコル)。
RASLCPAP_CHAP
Challenge Handshake Authentication Protocol (チャレンジハンドシェイク認証プロトコル)。
RASLCPAP_EAP
Extensible Authentication Protocol (拡張認証プロトコル)。
dwAuthenticationDataRASPPP_PROJECTION_INFO_SERVER_AUTH_DATA4+64+52

dwAuthenticationProtocol で指定された認証プロトコルに関する追加情報を指定する値です。クライアントとサーバーで異なる認証プロトコルが使用される場合、dwAuthenticationDatadwServerAuthenticationData は異なる値になります。このメンバーには次のいずれかの値を指定できます:

意味
RASLCPAD_CHAP_MD5
MD5 CHAP。
RASLCPAD_CHAP_MS
Microsoft CHAP。
RASLCPAD_CHAP_MSV2
Microsoft CHAP バージョン 2。
dwServerAuthenticationProtocolRASPPP_PROJECTION_INFO_SERVER_AUTH_PROTOCOL4+68+56

リモートサーバーの認証に使用された認証プロトコルを指定する値です。このメンバーには次のいずれかの値を指定できます:

意味
RASLCPAP_PAP
Password Authentication Protocol (パスワード認証プロトコル)。
RASLCPAP_SPAP
Shiva Password Authentication Protocol (Shiva パスワード認証プロトコル)。
RASLCPAP_CHAP
Challenge Handshake Authentication Protocol (チャレンジハンドシェイク認証プロトコル)。
RASLCPAP_EAP
Extensible Authentication Protocol (拡張認証プロトコル)。
dwServerAuthenticationDataRASPPP_PROJECTION_INFO_SERVER_AUTH_DATA4+72+60

dwServerAuthenticationProtocol で指定された認証プロトコルに関する追加情報を指定する値です。 クライアントとサーバーで異なる認証プロトコルが使用される場合、dwAuthenticationDatadwServerAuthenticationData は異なる値になります。このメンバーには次のいずれかの値を指定できます:

意味
RASLCPAD_CHAP_MD5
MD5 CHAP。
RASLCPAD_CHAP_MS
Microsoft CHAP。
RASLCPAD_CHAP_MSV2
Microsoft CHAP バージョン 2。
dwEapTypeIdDWORD4+76+64ローカルクライアントの認証に使用された Extensible Authentication Protocol (EAP) の種類識別子を指定する値です。このメンバーの値は、dwAuthenticationProtocolRASLCPAPP_EAP. の場合にのみ有効です。
dwServerEapTypeIdDWORD4+80+68リモートサーバーの認証に使用された Extensible Authentication Protocol (EAP) の種類識別子を指定する値です。このメンバーの値は、dwRemoteAuthenticationProtocolRASLCPAPP_EAP. の場合にのみ有効です。
dwLcpOptionsDWORD4+84+72

ローカルクライアントが使用している LCP オプションに関する情報を指定する値です。このメンバーは次のフラグの組み合わせです:

意味
RASLCPO_PFC
接続は Protocol Field Compression (RFC 1172) を使用しています。
RASLCPO_ACFC
接続は Address and Control Field Compression (RFC 1172) を使用しています。
RASLCPO_SSHF
接続は Short Sequence Number Header Format を使用しています (RFC 1990 を参照)。
RASLCPO_DES_56
接続は DES 56 ビット暗号化を使用しています。
RASLCPO_3_DES
接続は Triple DES 暗号化を使用しています。
dwLcpServerOptionsDWORD4+88+76

リモートサーバーが使用している LCP オプションに関する情報を指定する値です。このメンバーは次のフラグの組み合わせです:

意味
RASLCPO_PFC
接続は Protocol Field Compression (RFC 1172) を使用しています。
RASLCPO_ACFC
接続は Address and Control Field Compression (RFC 1172) を使用しています。
RASLCPO_SSHF
接続は Short Sequence Number Header Format を使用しています (RFC 1990 を参照)。
RASLCPO_DES_56
接続は DES 56 ビット暗号化を使用しています。
RASLCPO_3_DES
接続は Triple DES 暗号化を使用しています。
dwCcpErrorDWORD4+92+80CCP圧縮制御のエラーコード。0なら正常。
dwCcpCompressionAlgorithmDWORD4+96+84

ローカルクライアントが使用する圧縮アルゴリズムを指定する値です。次の表に、このメンバーに指定できる値を示します。

意味
RASCCPCA_MPPC
Microsoft Point-to-Point Compression (MPPC) プロトコル (RFC 2118)。
RASCCPCA_STAC
STAC option 4 (RFC 1974)。
dwCcpServerCompressionAlgorithmDWORD4+100+88

リモートサーバーが使用する圧縮アルゴリズムを指定する値です。次のアルゴリズムがサポートされます:

意味
RASCCPCA_MPPC
Microsoft Point-to-Point Compression (MPPC) プロトコル ( RFC 2118)。
RASCCPCA_STAC
STAC option 4 ( RFC 1974)。
dwCcpOptionsDWORD4+104+92

ローカルクライアントで利用可能な圧縮の種類を指定する値です。次の種類がサポートされます:

意味
RASCCPO_COMPRESSION
暗号化を伴わない圧縮です。
RASCCPO_HISTORYLESS
ステートレスモードの Microsoft Point-to-Point Encryption (MPPE) です。セッションキーはパケットごとに変更されます。このモードは、待ち時間の長いネットワークや、パケット損失が著しいネットワークでのパフォーマンスを向上させます。
RASCCPO_ENCRYPTION40BITOLD
40 ビットキーを使用する MPPE 圧縮です。
RASCCPO_ENCRYPTION40BIT
40 ビットキーを使用する MPPE 圧縮です。
RASCCPO_ENCRYPTION56BIT
56 ビットキーを使用する MPPE 圧縮です。
RASCCPO_ENCRYPTION128BIT
128 ビットキーを使用する MPPE 圧縮です。
dwCcpServerOptionsDWORD4+108+96

リモートサーバーで利用可能な圧縮の種類を指定する値です。次の種類がサポートされます:

意味
RASCCPO_COMPRESSION
暗号化を伴わない圧縮です。
RASCCPO_HISTORYLESS
ステートレスモードの Microsoft Point-to-Point Encryption (MPPE) です。セッションキーはパケットごとに変更されます。このモードは、待ち時間の長いネットワークや、パケット損失が著しいネットワークでのパフォーマンスを向上させます。
RASCCPO_ENCRYPTION40BITOLD
40 ビットキーを使用する MPPE 圧縮です。
RASCCPO_ENCRYPTION40BIT
40 ビットキーを使用する MPPE 圧縮です。
RASCCPO_ENCRYPTION56BIT
56 ビットキーを使用する MPPE 圧縮です。
RASCCPO_ENCRYPTION128BIT
128 ビットキーを使用する MPPE 圧縮です。

公式ドキュメント

RASPPP_PROJECTION_INFO 構造体は、Point-to-Point (PPP) による Internet Protocol version 4 (IPv4) および IPv6 のプロジェクション操作のネゴシエーション、PPP Link Control Protocol (LCP)/マルチリンクのネゴシエーション、および Compression Control Protocol (CCP) のネゴシエーション中に取得された情報を格納します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
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 Structure
import 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: uint32
struct 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