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

MIB_IPFORWARDROW

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

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

フィールド

フィールドサイズx64x86説明
dwForwardDestDWORD4+0+0ルートの宛先 IPv4 アドレスです。IPv4 アドレスが 0.0.0.0 のエントリは、既定のルートと見なされます。 このメンバーにマルチキャスト (クラス D) の IPv4 アドレスを設定することはできません。
dwForwardMaskDWORD4+4+4

宛先 IPv4 アドレスを dwForwardDest メンバーの値と比較する前に、その宛先 IPv4 アドレスに対して使用する IPv4 サブネット マスクです。

dwForwardMask の値は、dwForwardDest メンバーの値と比較する前に、宛先 IPv4 アドレスへ適用 (論理 AND 演算) する必要があります。

dwForwardPolicyDWORD4+8+8マルチパス ルート (指定された宛先に対するネクスト ホップの集合) の選択を引き起こす条件の集合です。このメンバーは通常 IP TOS 形式です。このメンバーのエンコードは RFC 1354 で説明されています。詳細については、 http://www.ietf.org/rfc/rfc1354.txt を参照してください。
dwForwardNextHopDWORD4+12+12リモート ルートの場合は、経路上の次のシステムの IPv4 アドレスです。それ以外の場合、このメンバーは IPv4 アドレス 0.0.0.0 でなければなりません。
dwForwardIfIndexDWORD4+16+16このルートのネクスト ホップに到達するために使用する、ローカル インターフェイスのインデックスです。
Anonymous1_Anonymous1_e__Union4+20+20経路の種別(直接/間接/無効等)を保持する無名共用体。
Anonymous2_Anonymous2_e__Union4+24+24経路を登録したプロトコル種別を保持する無名共用体。
dwForwardAgeDWORD4+28+28ネットワーク ルーティング テーブルにこのルートが追加または変更されてから経過した秒数です。
dwForwardNextHopASDWORD4+32+32ネクスト ホップの自律システム番号です。このメンバーが不明の場合、または dwForwardProto で指定されたプロトコルやルーティング機構に関係しない場合、この値は 0 に設定します。この値は RFC 1354 で規定されています。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください
dwForwardMetric1DWORD4+36+36このルートの主要なルーティング メトリック値です。このメトリックの意味は、dwForwardProto メンバーで指定されたルーティング プロトコルによって決まります。このメトリックを使用しない場合、その値は -1 に設定します。この値は RFC 1354 で規定されています。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください
dwForwardMetric2DWORD4+40+40このルートの代替のルーティング メトリック値です。このメトリックの意味は、dwForwardProto メンバーで指定されたルーティング プロトコルによって決まります。このメトリックを使用しない場合、その値は -1 に設定します。この値は RFC 1354 で規定されています。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください
dwForwardMetric3DWORD4+44+44このルートの代替のルーティング メトリック値です。このメトリックの意味は、dwForwardProto メンバーで指定されたルーティング プロトコルによって決まります。このメトリックを使用しない場合、その値は -1 に設定します。この値は RFC 1354 で規定されています。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください
dwForwardMetric4DWORD4+48+48このルートの代替のルーティング メトリック値です。このメトリックの意味は、dwForwardProto メンバーで指定されたルーティング プロトコルによって決まります。このメトリックを使用しない場合、その値は -1 に設定します。この値は RFC 1354 で規定されています。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください
dwForwardMetric5DWORD4+52+52このルートの代替のルーティング メトリック値です。このメトリックの意味は、dwForwardProto メンバーで指定されたルーティング プロトコルによって決まります。このメトリックを使用しない場合、その値は -1 に設定します。この値は RFC 1354 で規定されています。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください

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

フィールドサイズx64x86説明
dwForwardTypeDWORD4+0+0

RFC 1354 で説明されているルートの種類です。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください。

このメンバーには、Iprtmib.h ヘッダー ファイルで定義されている値のいずれかを指定できます。

Windows Vista 以降ではヘッダー ファイルが再編成されており、このメンバーには Ipmib.h ヘッダー ファイルで定義されている MIB_IPFORWARD_TYPE 列挙型の値のいずれかを指定できます。Ipmib.h ヘッダーは Iprtrmib.h ヘッダー ファイルによって自動的にインクルードされ、さらにそのヘッダー ファイルは Iphlpapi.h ヘッダーによって自動的にインクルードされる点に注意してください。Iprtrmib.h および Ipmib.h ヘッダー ファイルを直接使用しないでください。

次の一覧は、このメンバーに指定できる値を示します。

意味
MIB_IPROUTE_TYPE_OTHER
1
RFC 1354 で規定されていない、その他の種類です。
MIB_IPROUTE_TYPE_INVALID
2
無効なルートです。この値は、ICMP リダイレクトによって追加されたルートで生じることがあります。
MIB_IPROUTE_TYPE_DIRECT
3
ネクスト ホップが最終的な宛先 (ローカル インターフェイス) であるローカル ルートです。
MIB_IPROUTE_TYPE_INDIRECT
4
ネクスト ホップが最終的な宛先ではない (リモートの宛先である) リモート ルートです。
ForwardTypeMIB_IPFORWARD_TYPE4+0+0

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

フィールドサイズx64x86説明
dwForwardProtoDWORD4+0+0

RFC 1354 で説明されている、このルートを生成したプロトコルまたはルーティング機構です。詳細については、http://www.ietf.org/rfc/rfc1354.txt を参照してください。ルーティング プロトコルで使用されるプロトコル識別子の一覧については、 Protocol Identifiers を参照してください。

このメンバーには、Iprtmib.h ヘッダー ファイルで定義されている値のいずれかを指定できます。このメンバーの値には、Iprtmib.h ヘッダー ファイルで定義されている MIB_IPPROTO_xxx 値、または routprot.h ヘッダー ファイルで定義されている PROTO_IP_xxx 値のいずれかを指定できます。これらの値は同一です。

Windows Vista 以降ではヘッダー ファイルが再編成されており、このメンバーには Nldef.h ヘッダー ファイルで定義されている値のいずれかを指定できます。Nldef.h ヘッダーは Ipmib.h ヘッダー ファイルによって自動的にインクルードされ、さらにそのヘッダー ファイルは Iprtrmib.h ヘッダーによって自動的にインクルードされる点に注意してください。Iphlpapi.h ヘッダーは Iprtrmib.h ヘッダー ファイルを自動的にインクルードします。Iprtrmib.hIpmib.hNldef.h の各ヘッダー ファイルを直接使用しないでください。

次の一覧は、このメンバーに指定できる値を示します。

意味
MIB_IPPROTO_OTHER
1
RFC 1354 で規定されていない、その他のプロトコルです。
MIB_IPPROTO_LOCAL
2
ローカル インターフェイスです。
MIB_IPPROTO_NETMGMT
3
静的ルートです。この値は、動的ホスト構成プロトコル (DHCP) や簡易ネットワーク管理プロトコル (SNMP) などのネットワーク管理を通じて設定された IP ルーティング、あるいは CreateIpForwardEntryDeleteIpForwardEntrySetIpForwardEntry の各関数の呼び出しによって設定された IP ルーティングのルート情報を識別するために使用されます。
MIB_IPPROTO_ICMP
4
ICMP リダイレクトの結果です。
MIB_IPPROTO_EGP
5
動的ルーティング プロトコルである Exterior Gateway Protocol (EGP) です。
MIB_IPPROTO_GGP
6
動的ルーティング プロトコルである Gateway-to-Gateway Protocol (GGP) です。
MIB_IPPROTO_HELLO
7
動的ルーティング プロトコルである Hellospeak プロトコルです。これは既に使用されていない歴史的な項目であり、初期の ARPANET ルーターで使用された初期のルーティング プロトコルでした。これらのルーターは Fuzzball ルーティング プロトコル (Hellospeak と呼ばれることもあります) と呼ばれる特別なソフトウェアを実行していました。詳細は RFC 891 および RFC 1305 で説明されています。詳細については、http://www.ietf.org/rfc/rfc891.txt および http://www.ietf.org/rfc/rfc1305.txt を参照してください。
MIB_IPPROTO_RIP
8
動的ルーティング プロトコルである Berkeley Routing Information Protocol (RIP) または RIP-II です。
MIB_IPPROTO_IS_IS
9
動的ルーティング プロトコルである Intermediate System-to-Intermediate System (IS-IS) プロトコルです。IS-IS プロトコルは、Open Systems Interconnection (OSI) プロトコル スイートで使用するために開発されました。
MIB_IPPROTO_ES_IS
10
動的ルーティング プロトコルである End System-to-Intermediate System (ES-IS) プロトコルです。ES-IS プロトコルは、Open Systems Interconnection (OSI) プロトコル スイートで使用するために開発されました。
MIB_IPPROTO_CISCO
11
動的ルーティング プロトコルである Cisco Interior Gateway Routing Protocol (IGRP) です。
MIB_IPPROTO_BBN
12
Shortest Path First (SPF) アルゴリズムを使用していた Bolt, Beranek, and Newman (BBN) の Interior Gateway Protocol (IGP) です。これは初期の動的ルーティング プロトコルでした。
MIB_IPPROTO_OSPF
13
動的ルーティング プロトコルである Open Shortest Path First (OSPF) プロトコルです。
MIB_IPPROTO_BGP
14
動的ルーティング プロトコルである Border Gateway Protocol (BGP) です。
MIB_IPPROTO_NT_AUTOSTATIC
10002
元々はルーティング プロトコルによって追加されたものの、現在は静的になっている Windows 固有のエントリです。
MIB_IPPROTO_NT_STATIC
10006
ルーティングのユーザー インターフェイスまたはルーティング コマンドから静的ルートとして追加された Windows 固有のエントリです。
MIB_IPPROTO_NT_STATIC_NON_DOD
10007
ルーティングのユーザー インターフェイスまたはルーティング コマンドから静的ルートとして追加された Windows 固有のエントリです。ただし、これらのルートはダイヤル オン デマンド (DOD) を発生させません。
ForwardProtoNL_ROUTE_PROTOCOL4+0+0

公式ドキュメント

MIB_IPFORWARDROW 構造体は、IPv4 ネットワーク ルートを記述する情報を格納します。

解説(Remarks)

GetIpForwardTable 関数は、ローカル システム上の IPv4 ルート エントリを列挙し、MIB_IPFORWARDROW 構造体エントリの配列を含む MIB_IPFORWARDTABLE 構造体としてその情報を返します。

MIB_IPFORWARDROW 構造体の dwForwardDestdwForwardMaskdwForwardNextHop の各メンバーは、ネットワーク バイト オーダーの IPv4 アドレスを表します。

MIB_IPFORWARDROW 構造体の dwForwardProto メンバーは、このルートを生成したプロトコルまたはルーティング機構を指定します。ルーティング プロトコル識別子は、指定されたルーティング プロトコルのルート情報を識別するために使用されます。たとえば MIB_IPPROTO_NETMGMT は、動的ホスト構成プロトコル (DHCP) や簡易ネットワーク管理プロトコル (SNMP) などのネットワーク管理を通じて設定された IP ルーティング、あるいは CreateIpForwardEntryDeleteIpForwardEntrySetIpForwardEntry の各関数の呼び出しによって設定された IP ルーティングのルート情報を識別するために使用されます。指定できるプロトコルおよびルーティング機構の一覧については、 Protocol Identifiers を参照してください。

MIB_IPFORWARDROW 構造体の dwForwardDest メンバーが IPv4 アドレス 0.0.0.0 の場合、そのエントリは既定のルートと見なされます。複数のネットワーク アダプターがインストールされている場合、MIB_IPFORWARDTABLE には dwForwardDest メンバーが 0.0.0.0 に設定された MIB_IPFORWARDROW エントリが複数含まれることがあります。

dwForwardAgeINFINITE が設定されている場合、そのルートはタイムアウト値に基づいて削除されることはありません。

dwForwardAge にそれ以外の値が設定されている場合は、ネットワーク ルーティング テーブルにこのルートが追加または変更されてから経過した秒数を示します。

Windows Server 2003 または Windows 2000 Server でルーティングとリモート アクセス サービス (RRAS) が実行されている場合、返される MIB_IPFORWARDROW エントリの dwForwardType メンバーと dwForwardAge メンバーは 0 に設定されます。

Windows Vista および Windows Server 2008 では、MIB_IPFORWARDROW 構造体の dwForwardMetric1 メンバーで指定されるルート メトリックは、ルート メトリックに、対応するインターフェイスの MIB_IPINTERFACE_ROW 構造体の Metric メンバーで指定されるインターフェイス メトリックを加算した値を表します。したがって、MIB_IPFORWARDROW 構造体の dwForwardMetric1 メンバーは、対応する MIB_IPINTERFACE_ROW 構造体の Metric メンバー以上の値になります。アプリケーションでルート メトリックを 0 に設定したい場合は、MIB_IPFORWARDROW 構造体の dwForwardMetric1 メンバーに、対応する MIB_IPINTERFACE_ROW 構造体の Metric メンバーで指定されているインターフェイス メトリックと同じ値を設定します。アプリケーションは GetIpInterfaceEntry 関数を呼び出すことで、インターフェイス メトリックを取得できます。

MIB_IPFORWARDROW 構造体の一部のメンバーは、現在の IPv4 ルーティングでは使用されていません。これらのメンバーには、dwForwardPolicydwForwardNextHopASdwForwardMetric2dwForwardMetric3dwForwardMetric4dwForwardMetric5 が含まれます。

Windows Vista 以降向けにリリースされた Microsoft Windows Software Development Kit (SDK) では、ヘッダー ファイルの構成が変更されています。この構造体は Iprtrmib.h ヘッダー ファイルではなく、Ipmib.h ヘッダー ファイルで定義されています。Ipmib.h ヘッダー ファイルは Iprtrmib.h に自動的にインクルードされ、さらにそれは Iphlpapi.h ヘッダー ファイルに自動的にインクルードされる点に注意してください。Ipmib.h および Iprtrmib.h ヘッダー ファイルを直接使用しないでください。

MIB_IPFORWARDTABLE 構造体を取得し、そのテーブル内の MIB_IPFORWARDROW 構造体エントリを出力する例については、GetIpForwardTable 関数を参照してください。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// MIB_IPFORWARDROW  (x64 56 / x86 56 バイト)
typedef struct MIB_IPFORWARDROW {
    DWORD dwForwardDest;
    DWORD dwForwardMask;
    DWORD dwForwardPolicy;
    DWORD dwForwardNextHop;
    DWORD dwForwardIfIndex;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
    DWORD dwForwardAge;
    DWORD dwForwardNextHopAS;
    DWORD dwForwardMetric1;
    DWORD dwForwardMetric2;
    DWORD dwForwardMetric3;
    DWORD dwForwardMetric4;
    DWORD dwForwardMetric5;
} MIB_IPFORWARDROW;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MIB_IPFORWARDROW
{
    public uint dwForwardDest;
    public uint dwForwardMask;
    public uint dwForwardPolicy;
    public uint dwForwardNextHop;
    public uint dwForwardIfIndex;
    public _Anonymous1_e__Union Anonymous1;
    public _Anonymous2_e__Union Anonymous2;
    public uint dwForwardAge;
    public uint dwForwardNextHopAS;
    public uint dwForwardMetric1;
    public uint dwForwardMetric2;
    public uint dwForwardMetric3;
    public uint dwForwardMetric4;
    public uint dwForwardMetric5;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MIB_IPFORWARDROW
    Public dwForwardDest As UInteger
    Public dwForwardMask As UInteger
    Public dwForwardPolicy As UInteger
    Public dwForwardNextHop As UInteger
    Public dwForwardIfIndex As UInteger
    Public Anonymous1 As _Anonymous1_e__Union
    Public Anonymous2 As _Anonymous2_e__Union
    Public dwForwardAge As UInteger
    Public dwForwardNextHopAS As UInteger
    Public dwForwardMetric1 As UInteger
    Public dwForwardMetric2 As UInteger
    Public dwForwardMetric3 As UInteger
    Public dwForwardMetric4 As UInteger
    Public dwForwardMetric5 As UInteger
End Structure
import ctypes
from ctypes import wintypes

class MIB_IPFORWARDROW(ctypes.Structure):
    _fields_ = [
        ("dwForwardDest", wintypes.DWORD),
        ("dwForwardMask", wintypes.DWORD),
        ("dwForwardPolicy", wintypes.DWORD),
        ("dwForwardNextHop", wintypes.DWORD),
        ("dwForwardIfIndex", wintypes.DWORD),
        ("Anonymous1", _Anonymous1_e__Union),
        ("Anonymous2", _Anonymous2_e__Union),
        ("dwForwardAge", wintypes.DWORD),
        ("dwForwardNextHopAS", wintypes.DWORD),
        ("dwForwardMetric1", wintypes.DWORD),
        ("dwForwardMetric2", wintypes.DWORD),
        ("dwForwardMetric3", wintypes.DWORD),
        ("dwForwardMetric4", wintypes.DWORD),
        ("dwForwardMetric5", wintypes.DWORD),
    ]
#[repr(C)]
pub struct MIB_IPFORWARDROW {
    pub dwForwardDest: u32,
    pub dwForwardMask: u32,
    pub dwForwardPolicy: u32,
    pub dwForwardNextHop: u32,
    pub dwForwardIfIndex: u32,
    pub Anonymous1: _Anonymous1_e__Union,
    pub Anonymous2: _Anonymous2_e__Union,
    pub dwForwardAge: u32,
    pub dwForwardNextHopAS: u32,
    pub dwForwardMetric1: u32,
    pub dwForwardMetric2: u32,
    pub dwForwardMetric3: u32,
    pub dwForwardMetric4: u32,
    pub dwForwardMetric5: u32,
}
import "golang.org/x/sys/windows"

type MIB_IPFORWARDROW struct {
	dwForwardDest uint32
	dwForwardMask uint32
	dwForwardPolicy uint32
	dwForwardNextHop uint32
	dwForwardIfIndex uint32
	Anonymous1 _Anonymous1_e__Union
	Anonymous2 _Anonymous2_e__Union
	dwForwardAge uint32
	dwForwardNextHopAS uint32
	dwForwardMetric1 uint32
	dwForwardMetric2 uint32
	dwForwardMetric3 uint32
	dwForwardMetric4 uint32
	dwForwardMetric5 uint32
}
type
  MIB_IPFORWARDROW = record
    dwForwardDest: DWORD;
    dwForwardMask: DWORD;
    dwForwardPolicy: DWORD;
    dwForwardNextHop: DWORD;
    dwForwardIfIndex: DWORD;
    Anonymous1: _Anonymous1_e__Union;
    Anonymous2: _Anonymous2_e__Union;
    dwForwardAge: DWORD;
    dwForwardNextHopAS: DWORD;
    dwForwardMetric1: DWORD;
    dwForwardMetric2: DWORD;
    dwForwardMetric3: DWORD;
    dwForwardMetric4: DWORD;
    dwForwardMetric5: DWORD;
  end;
const MIB_IPFORWARDROW = extern struct {
    dwForwardDest: u32,
    dwForwardMask: u32,
    dwForwardPolicy: u32,
    dwForwardNextHop: u32,
    dwForwardIfIndex: u32,
    Anonymous1: _Anonymous1_e__Union,
    Anonymous2: _Anonymous2_e__Union,
    dwForwardAge: u32,
    dwForwardNextHopAS: u32,
    dwForwardMetric1: u32,
    dwForwardMetric2: u32,
    dwForwardMetric3: u32,
    dwForwardMetric4: u32,
    dwForwardMetric5: u32,
};
type
  MIB_IPFORWARDROW {.bycopy.} = object
    dwForwardDest: uint32
    dwForwardMask: uint32
    dwForwardPolicy: uint32
    dwForwardNextHop: uint32
    dwForwardIfIndex: uint32
    Anonymous1: _Anonymous1_e__Union
    Anonymous2: _Anonymous2_e__Union
    dwForwardAge: uint32
    dwForwardNextHopAS: uint32
    dwForwardMetric1: uint32
    dwForwardMetric2: uint32
    dwForwardMetric3: uint32
    dwForwardMetric4: uint32
    dwForwardMetric5: uint32
struct MIB_IPFORWARDROW
{
    uint dwForwardDest;
    uint dwForwardMask;
    uint dwForwardPolicy;
    uint dwForwardNextHop;
    uint dwForwardIfIndex;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
    uint dwForwardAge;
    uint dwForwardNextHopAS;
    uint dwForwardMetric1;
    uint dwForwardMetric2;
    uint dwForwardMetric3;
    uint dwForwardMetric4;
    uint dwForwardMetric5;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MIB_IPFORWARDROW サイズ: 56 バイト(x64)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; dwForwardDest : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwForwardMask : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwForwardPolicy : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwForwardNextHop : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwForwardIfIndex : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; Anonymous1 : _Anonymous1_e__Union (+20, 4byte)  varptr(st)+20 を基点に操作(4byte:入れ子/配列)
; Anonymous2 : _Anonymous2_e__Union (+24, 4byte)  varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; dwForwardAge : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwForwardNextHopAS : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwForwardMetric1 : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwForwardMetric2 : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwForwardMetric3 : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwForwardMetric4 : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwForwardMetric5 : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MIB_IPFORWARDROW
    #field int dwForwardDest
    #field int dwForwardMask
    #field int dwForwardPolicy
    #field int dwForwardNextHop
    #field int dwForwardIfIndex
    #field byte Anonymous1 4
    #field byte Anonymous2 4
    #field int dwForwardAge
    #field int dwForwardNextHopAS
    #field int dwForwardMetric1
    #field int dwForwardMetric2
    #field int dwForwardMetric3
    #field int dwForwardMetric4
    #field int dwForwardMetric5
#endstruct

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