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

NDIS_INTERFACE_INFORMATION

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

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

フィールド

フィールドサイズx64x86説明
ifOperStatusNET_IF_OPER_STATUS4+0+0インターフェイスの動作状態です。この状態は、OID_GEN_OPERATIONAL_STATUS OID が返す値と同じです。
ifOperStatusFlagsDWORD4+4+4インターフェイスの動作状態フラグです。このフィールドは NDIS プロキシ インターフェイス プロバイダー用に予約されています。その他のインターフェイス プロバイダーは、このメンバーを 0 に設定する必要があります。
MediaConnectStateNET_IF_MEDIA_CONNECT_STATE4+8+8NET_IF_MEDIA_CONNECT_STATE 接続状態の種類です。
MediaDuplexStateNET_IF_MEDIA_DUPLEX_STATE4+12+12インターフェイスのメディア デュプレックス状態です。この状態は、OID_GEN_MEDIA_DUPLEX_STATE OID が返す値と同じです。
ifMtuDWORD4+16+16インターフェイスの最大転送単位 (MTU) です。この MTU は、OID_GEN_MAXIMUM_FRAME_SIZE OID が返す値と同じです。
ifPromiscuousModeBOOLEAN1+20+20インターフェイスがプロミスキャス モードの場合は TRUE、そうでない場合は FALSE となるブール値です。この値は、OID_GEN_PROMISCUOUS_MODE OID クエリが返す値と同じです。
ifDeviceWakeUpEnableBOOLEAN1+21+21インターフェイスが Wake-on-LAN 機能をサポートし、その機能が有効になっている場合は TRUE、そうでない場合は FALSE となるブール値です。
XmitLinkSpeedULONGLONG8+24+24インターフェイスの送信リンク速度 (バイト/秒) です。この速度は、OID_GEN_XMIT_LINK_SPEED OID クエリが返す値と同じです。
RcvLinkSpeedULONGLONG8+32+32インターフェイスの受信リンク速度 (バイト/秒) です。この速度は、OID_GEN_RCV_LINK_SPEED OID クエリが返す値と同じです。
ifLastChangeULONGLONG8+40+40インターフェイスが現在の動作状態に入った時刻です。この時刻は、OID_GEN_LAST_CHANGE OID クエリが返す値と同じです。
ifCounterDiscontinuityTimeULONGLONG8+48+48インターフェイスのカウンターが最後に不連続になった時刻です。この時刻は、OID_GEN_DISCONTINUITY_TIME OID クエリが返す値と同じです。
ifInUnknownProtosULONGLONG8+56+56インターフェイスで受信されたパケットのうち、不明またはサポートされていないプロトコルのために破棄されたパケットの数です。この数は、OID_GEN_UNKNOWN_PROTOS OID クエリが返す値と同じです。
ifInDiscardsULONGLONG8+64+64上位層プロトコルへの配信を妨げるエラーが検出されていないにもかかわらず破棄された受信パケットの数です。この数は、OID_GEN_RCV_DISCARDS OID クエリが返す値と同じです。
ifInErrorsULONGLONG8+72+72上位層プロトコルへの配信を妨げるエラーを含んでいた受信パケットの数です。この数は、OID_GEN_RCV_ERROR OID クエリが返す値と同じです。
ifHCInOctetsULONGLONG8+80+80このインターフェイスで受信されたバイトの総数です。この数は、OID_GEN_BYTES_RCV OID が返す値と同じです。
ifHCInUcastPktsULONGLONG8+88+88インターフェイスでエラーなく受信されたダイレクト パケットの数です。この数は、OID_GEN_DIRECTED_FRAMES_RCV OID クエリが返す値と同じです。
ifHCInMulticastPktsULONGLONG8+96+96インターフェイスでエラーなく受信されたマルチキャスト/ファンクショナル パケットの数です。この数は、OID_GEN_MULTICAST_FRAMES_RCV OID クエリが返す値と同じです。
ifHCInBroadcastPktsULONGLONG8+104+104インターフェイスでエラーなく受信されたブロードキャスト パケットの数です。この数は、OID_GEN_BROADCAST_FRAMES_RCV OID クエリが返す値と同じです。
ifHCOutOctetsULONGLONG8+112+112インターフェイスでエラーなく送信されたバイト数です。この数は、OID_GEN_BYTES_XMIT OID クエリが返す値と同じです。
ifHCOutUcastPktsULONGLONG8+120+120インターフェイスでエラーなく送信されたダイレクト パケットの数です。この数は、OID_GEN_DIRECTED_FRAMES_XMIT OID クエリが返す値と同じです。
ifHCOutMulticastPktsULONGLONG8+128+128インターフェイスでエラーなく送信されたマルチキャスト/ファンクショナル パケットの数です。この数は、OID_GEN_MULTICAST_FRAMES_XMIT OID クエリが返す値と同じです。
ifHCOutBroadcastPktsULONGLONG8+136+136インターフェイスでエラーなく送信されたブロードキャスト パケットの数です。この数は、OID_GEN_BROADCAST_FRAMES_XMIT OID クエリが返す値と同じです。
ifOutErrorsULONGLONG8+144+144インターフェイスが送信に失敗したパケットの数です。この数は、OID_GEN_XMIT_ERROR OID クエリが返す値と同じです。
ifOutDiscardsULONGLONG8+152+152インターフェイスが破棄したパケットの数です。この数は、OID_GEN_XMIT_DISCARDS OID クエリが返す値と同じです。
ifHCInUcastOctetsULONGLONG8+160+160エラーなく受信されたダイレクト パケットのバイト数です。このカウントは、OID_GEN_DIRECTED_BYTES_RCV が返す値と同じです。
ifHCInMulticastOctetsULONGLONG8+168+168エラーなく受信されたマルチキャスト/ファンクショナル パケットのバイト数です。このカウントは、OID_GEN_MULTICAST_BYTES_RCV が返す値と同じです。
ifHCInBroadcastOctetsULONGLONG8+176+176エラーなく受信されたブロードキャスト パケットのバイト数です。このカウントは、OID_GEN_BROADCAST_BYTES_RCV が返す値と同じです。
ifHCOutUcastOctetsULONGLONG8+184+184エラーなく送信されたダイレクト パケットのバイト数です。このカウントは、OID_GEN_DIRECTED_BYTES_XMIT が返す値と同じです。
ifHCOutMulticastOctetsULONGLONG8+192+192エラーなく送信されたマルチキャスト/ファンクショナル パケットのバイト数です。このカウントは、OID_GEN_MULTICAST_BYTES_XMIT が返す値と同じです。
ifHCOutBroadcastOctetsULONGLONG8+200+200エラーなく送信されたブロードキャスト パケットのバイト数です。このカウントは、OID_GEN_BROADCAST_BYTES_XMIT が返す値と同じです。
CompartmentIdNET_IF_COMPARTMENT_ID4+208+208インターフェイスが属するコンパートメントです。インターフェイス プロバイダーがインターフェイスの属するコンパートメントの ID を提供できる場合に設定します。提供できない場合は NET_IF_COMPARTMENT_ID_UNSPECIFIED を返す必要があります。インターフェイス プロバイダーがコンパートメント ID として NET_IF_COMPARTMENT_ID_UNSPECIFIED を返した場合は、NDIS がこのインターフェイスの正しいコンパートメント ID を返します。
SupportedStatisticsDWORD4+212+212サポートされる統計情報です。詳細については、NDIS_MINIPORT_ADAPTER_GENERAL_ATTRIBUTES 構造体の SupportedStatistics メンバーを参照してください。

公式ドキュメント

NDIS_INTERFACE_INFORMATION 構造体は、OID_GEN_INTERFACE_INFO OID のためにネットワーク インターフェイスに関する情報を提供します。

解説(Remarks)

NDIS インターフェイス プロバイダーは、OID_GEN_INTERFACE_INFO OID のクエリに応答して NDIS_INTERFACE_INFORMATION 構造体を設定します。この構造体には、インターフェイスの存続期間中に変化する情報が含まれます。

インターフェイス プロバイダーとして登録するには、NDIS ドライバーが NdisIfRegisterProvider 関数を呼び出します。

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

各言語での定義

#include <windows.h>

// NDIS_INTERFACE_INFORMATION  (x64 216 / x86 216 バイト)
typedef struct NDIS_INTERFACE_INFORMATION {
    NET_IF_OPER_STATUS ifOperStatus;
    DWORD ifOperStatusFlags;
    NET_IF_MEDIA_CONNECT_STATE MediaConnectState;
    NET_IF_MEDIA_DUPLEX_STATE MediaDuplexState;
    DWORD ifMtu;
    BOOLEAN ifPromiscuousMode;
    BOOLEAN ifDeviceWakeUpEnable;
    ULONGLONG XmitLinkSpeed;
    ULONGLONG RcvLinkSpeed;
    ULONGLONG ifLastChange;
    ULONGLONG ifCounterDiscontinuityTime;
    ULONGLONG ifInUnknownProtos;
    ULONGLONG ifInDiscards;
    ULONGLONG ifInErrors;
    ULONGLONG ifHCInOctets;
    ULONGLONG ifHCInUcastPkts;
    ULONGLONG ifHCInMulticastPkts;
    ULONGLONG ifHCInBroadcastPkts;
    ULONGLONG ifHCOutOctets;
    ULONGLONG ifHCOutUcastPkts;
    ULONGLONG ifHCOutMulticastPkts;
    ULONGLONG ifHCOutBroadcastPkts;
    ULONGLONG ifOutErrors;
    ULONGLONG ifOutDiscards;
    ULONGLONG ifHCInUcastOctets;
    ULONGLONG ifHCInMulticastOctets;
    ULONGLONG ifHCInBroadcastOctets;
    ULONGLONG ifHCOutUcastOctets;
    ULONGLONG ifHCOutMulticastOctets;
    ULONGLONG ifHCOutBroadcastOctets;
    NET_IF_COMPARTMENT_ID CompartmentId;
    DWORD SupportedStatistics;
} NDIS_INTERFACE_INFORMATION;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NDIS_INTERFACE_INFORMATION
{
    public int ifOperStatus;
    public uint ifOperStatusFlags;
    public int MediaConnectState;
    public int MediaDuplexState;
    public uint ifMtu;
    [MarshalAs(UnmanagedType.U1)] public bool ifPromiscuousMode;
    [MarshalAs(UnmanagedType.U1)] public bool ifDeviceWakeUpEnable;
    public ulong XmitLinkSpeed;
    public ulong RcvLinkSpeed;
    public ulong ifLastChange;
    public ulong ifCounterDiscontinuityTime;
    public ulong ifInUnknownProtos;
    public ulong ifInDiscards;
    public ulong ifInErrors;
    public ulong ifHCInOctets;
    public ulong ifHCInUcastPkts;
    public ulong ifHCInMulticastPkts;
    public ulong ifHCInBroadcastPkts;
    public ulong ifHCOutOctets;
    public ulong ifHCOutUcastPkts;
    public ulong ifHCOutMulticastPkts;
    public ulong ifHCOutBroadcastPkts;
    public ulong ifOutErrors;
    public ulong ifOutDiscards;
    public ulong ifHCInUcastOctets;
    public ulong ifHCInMulticastOctets;
    public ulong ifHCInBroadcastOctets;
    public ulong ifHCOutUcastOctets;
    public ulong ifHCOutMulticastOctets;
    public ulong ifHCOutBroadcastOctets;
    public uint CompartmentId;
    public uint SupportedStatistics;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NDIS_INTERFACE_INFORMATION
    Public ifOperStatus As Integer
    Public ifOperStatusFlags As UInteger
    Public MediaConnectState As Integer
    Public MediaDuplexState As Integer
    Public ifMtu As UInteger
    <MarshalAs(UnmanagedType.U1)> Public ifPromiscuousMode As Boolean
    <MarshalAs(UnmanagedType.U1)> Public ifDeviceWakeUpEnable As Boolean
    Public XmitLinkSpeed As ULong
    Public RcvLinkSpeed As ULong
    Public ifLastChange As ULong
    Public ifCounterDiscontinuityTime As ULong
    Public ifInUnknownProtos As ULong
    Public ifInDiscards As ULong
    Public ifInErrors As ULong
    Public ifHCInOctets As ULong
    Public ifHCInUcastPkts As ULong
    Public ifHCInMulticastPkts As ULong
    Public ifHCInBroadcastPkts As ULong
    Public ifHCOutOctets As ULong
    Public ifHCOutUcastPkts As ULong
    Public ifHCOutMulticastPkts As ULong
    Public ifHCOutBroadcastPkts As ULong
    Public ifOutErrors As ULong
    Public ifOutDiscards As ULong
    Public ifHCInUcastOctets As ULong
    Public ifHCInMulticastOctets As ULong
    Public ifHCInBroadcastOctets As ULong
    Public ifHCOutUcastOctets As ULong
    Public ifHCOutMulticastOctets As ULong
    Public ifHCOutBroadcastOctets As ULong
    Public CompartmentId As UInteger
    Public SupportedStatistics As UInteger
End Structure
import ctypes
from ctypes import wintypes

class NDIS_INTERFACE_INFORMATION(ctypes.Structure):
    _fields_ = [
        ("ifOperStatus", ctypes.c_int),
        ("ifOperStatusFlags", wintypes.DWORD),
        ("MediaConnectState", ctypes.c_int),
        ("MediaDuplexState", ctypes.c_int),
        ("ifMtu", wintypes.DWORD),
        ("ifPromiscuousMode", ctypes.c_byte),
        ("ifDeviceWakeUpEnable", ctypes.c_byte),
        ("XmitLinkSpeed", ctypes.c_ulonglong),
        ("RcvLinkSpeed", ctypes.c_ulonglong),
        ("ifLastChange", ctypes.c_ulonglong),
        ("ifCounterDiscontinuityTime", ctypes.c_ulonglong),
        ("ifInUnknownProtos", ctypes.c_ulonglong),
        ("ifInDiscards", ctypes.c_ulonglong),
        ("ifInErrors", ctypes.c_ulonglong),
        ("ifHCInOctets", ctypes.c_ulonglong),
        ("ifHCInUcastPkts", ctypes.c_ulonglong),
        ("ifHCInMulticastPkts", ctypes.c_ulonglong),
        ("ifHCInBroadcastPkts", ctypes.c_ulonglong),
        ("ifHCOutOctets", ctypes.c_ulonglong),
        ("ifHCOutUcastPkts", ctypes.c_ulonglong),
        ("ifHCOutMulticastPkts", ctypes.c_ulonglong),
        ("ifHCOutBroadcastPkts", ctypes.c_ulonglong),
        ("ifOutErrors", ctypes.c_ulonglong),
        ("ifOutDiscards", ctypes.c_ulonglong),
        ("ifHCInUcastOctets", ctypes.c_ulonglong),
        ("ifHCInMulticastOctets", ctypes.c_ulonglong),
        ("ifHCInBroadcastOctets", ctypes.c_ulonglong),
        ("ifHCOutUcastOctets", ctypes.c_ulonglong),
        ("ifHCOutMulticastOctets", ctypes.c_ulonglong),
        ("ifHCOutBroadcastOctets", ctypes.c_ulonglong),
        ("CompartmentId", wintypes.DWORD),
        ("SupportedStatistics", wintypes.DWORD),
    ]
#[repr(C)]
pub struct NDIS_INTERFACE_INFORMATION {
    pub ifOperStatus: i32,
    pub ifOperStatusFlags: u32,
    pub MediaConnectState: i32,
    pub MediaDuplexState: i32,
    pub ifMtu: u32,
    pub ifPromiscuousMode: u8,
    pub ifDeviceWakeUpEnable: u8,
    pub XmitLinkSpeed: u64,
    pub RcvLinkSpeed: u64,
    pub ifLastChange: u64,
    pub ifCounterDiscontinuityTime: u64,
    pub ifInUnknownProtos: u64,
    pub ifInDiscards: u64,
    pub ifInErrors: u64,
    pub ifHCInOctets: u64,
    pub ifHCInUcastPkts: u64,
    pub ifHCInMulticastPkts: u64,
    pub ifHCInBroadcastPkts: u64,
    pub ifHCOutOctets: u64,
    pub ifHCOutUcastPkts: u64,
    pub ifHCOutMulticastPkts: u64,
    pub ifHCOutBroadcastPkts: u64,
    pub ifOutErrors: u64,
    pub ifOutDiscards: u64,
    pub ifHCInUcastOctets: u64,
    pub ifHCInMulticastOctets: u64,
    pub ifHCInBroadcastOctets: u64,
    pub ifHCOutUcastOctets: u64,
    pub ifHCOutMulticastOctets: u64,
    pub ifHCOutBroadcastOctets: u64,
    pub CompartmentId: u32,
    pub SupportedStatistics: u32,
}
import "golang.org/x/sys/windows"

type NDIS_INTERFACE_INFORMATION struct {
	ifOperStatus int32
	ifOperStatusFlags uint32
	MediaConnectState int32
	MediaDuplexState int32
	ifMtu uint32
	ifPromiscuousMode byte
	ifDeviceWakeUpEnable byte
	XmitLinkSpeed uint64
	RcvLinkSpeed uint64
	ifLastChange uint64
	ifCounterDiscontinuityTime uint64
	ifInUnknownProtos uint64
	ifInDiscards uint64
	ifInErrors uint64
	ifHCInOctets uint64
	ifHCInUcastPkts uint64
	ifHCInMulticastPkts uint64
	ifHCInBroadcastPkts uint64
	ifHCOutOctets uint64
	ifHCOutUcastPkts uint64
	ifHCOutMulticastPkts uint64
	ifHCOutBroadcastPkts uint64
	ifOutErrors uint64
	ifOutDiscards uint64
	ifHCInUcastOctets uint64
	ifHCInMulticastOctets uint64
	ifHCInBroadcastOctets uint64
	ifHCOutUcastOctets uint64
	ifHCOutMulticastOctets uint64
	ifHCOutBroadcastOctets uint64
	CompartmentId uint32
	SupportedStatistics uint32
}
type
  NDIS_INTERFACE_INFORMATION = record
    ifOperStatus: Integer;
    ifOperStatusFlags: DWORD;
    MediaConnectState: Integer;
    MediaDuplexState: Integer;
    ifMtu: DWORD;
    ifPromiscuousMode: ByteBool;
    ifDeviceWakeUpEnable: ByteBool;
    XmitLinkSpeed: UInt64;
    RcvLinkSpeed: UInt64;
    ifLastChange: UInt64;
    ifCounterDiscontinuityTime: UInt64;
    ifInUnknownProtos: UInt64;
    ifInDiscards: UInt64;
    ifInErrors: UInt64;
    ifHCInOctets: UInt64;
    ifHCInUcastPkts: UInt64;
    ifHCInMulticastPkts: UInt64;
    ifHCInBroadcastPkts: UInt64;
    ifHCOutOctets: UInt64;
    ifHCOutUcastPkts: UInt64;
    ifHCOutMulticastPkts: UInt64;
    ifHCOutBroadcastPkts: UInt64;
    ifOutErrors: UInt64;
    ifOutDiscards: UInt64;
    ifHCInUcastOctets: UInt64;
    ifHCInMulticastOctets: UInt64;
    ifHCInBroadcastOctets: UInt64;
    ifHCOutUcastOctets: UInt64;
    ifHCOutMulticastOctets: UInt64;
    ifHCOutBroadcastOctets: UInt64;
    CompartmentId: DWORD;
    SupportedStatistics: DWORD;
  end;
const NDIS_INTERFACE_INFORMATION = extern struct {
    ifOperStatus: i32,
    ifOperStatusFlags: u32,
    MediaConnectState: i32,
    MediaDuplexState: i32,
    ifMtu: u32,
    ifPromiscuousMode: u8,
    ifDeviceWakeUpEnable: u8,
    XmitLinkSpeed: u64,
    RcvLinkSpeed: u64,
    ifLastChange: u64,
    ifCounterDiscontinuityTime: u64,
    ifInUnknownProtos: u64,
    ifInDiscards: u64,
    ifInErrors: u64,
    ifHCInOctets: u64,
    ifHCInUcastPkts: u64,
    ifHCInMulticastPkts: u64,
    ifHCInBroadcastPkts: u64,
    ifHCOutOctets: u64,
    ifHCOutUcastPkts: u64,
    ifHCOutMulticastPkts: u64,
    ifHCOutBroadcastPkts: u64,
    ifOutErrors: u64,
    ifOutDiscards: u64,
    ifHCInUcastOctets: u64,
    ifHCInMulticastOctets: u64,
    ifHCInBroadcastOctets: u64,
    ifHCOutUcastOctets: u64,
    ifHCOutMulticastOctets: u64,
    ifHCOutBroadcastOctets: u64,
    CompartmentId: u32,
    SupportedStatistics: u32,
};
type
  NDIS_INTERFACE_INFORMATION {.bycopy.} = object
    ifOperStatus: int32
    ifOperStatusFlags: uint32
    MediaConnectState: int32
    MediaDuplexState: int32
    ifMtu: uint32
    ifPromiscuousMode: uint8
    ifDeviceWakeUpEnable: uint8
    XmitLinkSpeed: uint64
    RcvLinkSpeed: uint64
    ifLastChange: uint64
    ifCounterDiscontinuityTime: uint64
    ifInUnknownProtos: uint64
    ifInDiscards: uint64
    ifInErrors: uint64
    ifHCInOctets: uint64
    ifHCInUcastPkts: uint64
    ifHCInMulticastPkts: uint64
    ifHCInBroadcastPkts: uint64
    ifHCOutOctets: uint64
    ifHCOutUcastPkts: uint64
    ifHCOutMulticastPkts: uint64
    ifHCOutBroadcastPkts: uint64
    ifOutErrors: uint64
    ifOutDiscards: uint64
    ifHCInUcastOctets: uint64
    ifHCInMulticastOctets: uint64
    ifHCInBroadcastOctets: uint64
    ifHCOutUcastOctets: uint64
    ifHCOutMulticastOctets: uint64
    ifHCOutBroadcastOctets: uint64
    CompartmentId: uint32
    SupportedStatistics: uint32
struct NDIS_INTERFACE_INFORMATION
{
    int ifOperStatus;
    uint ifOperStatusFlags;
    int MediaConnectState;
    int MediaDuplexState;
    uint ifMtu;
    ubyte ifPromiscuousMode;
    ubyte ifDeviceWakeUpEnable;
    ulong XmitLinkSpeed;
    ulong RcvLinkSpeed;
    ulong ifLastChange;
    ulong ifCounterDiscontinuityTime;
    ulong ifInUnknownProtos;
    ulong ifInDiscards;
    ulong ifInErrors;
    ulong ifHCInOctets;
    ulong ifHCInUcastPkts;
    ulong ifHCInMulticastPkts;
    ulong ifHCInBroadcastPkts;
    ulong ifHCOutOctets;
    ulong ifHCOutUcastPkts;
    ulong ifHCOutMulticastPkts;
    ulong ifHCOutBroadcastPkts;
    ulong ifOutErrors;
    ulong ifOutDiscards;
    ulong ifHCInUcastOctets;
    ulong ifHCInMulticastOctets;
    ulong ifHCInBroadcastOctets;
    ulong ifHCOutUcastOctets;
    ulong ifHCOutMulticastOctets;
    ulong ifHCOutBroadcastOctets;
    uint CompartmentId;
    uint SupportedStatistics;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NDIS_INTERFACE_INFORMATION サイズ: 216 バイト(x64)
dim st, 54    ; 4byte整数×54(構造体サイズ 216 / 4 切り上げ)
; ifOperStatus : NET_IF_OPER_STATUS (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; ifOperStatusFlags : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; MediaConnectState : NET_IF_MEDIA_CONNECT_STATE (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; MediaDuplexState : NET_IF_MEDIA_DUPLEX_STATE (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; ifMtu : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ifPromiscuousMode : BOOLEAN (+20, 1byte)  poke st,20,値  /  値 = peek(st,20)
; ifDeviceWakeUpEnable : BOOLEAN (+21, 1byte)  poke st,21,値  /  値 = peek(st,21)
; XmitLinkSpeed : ULONGLONG (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; RcvLinkSpeed : ULONGLONG (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ifLastChange : ULONGLONG (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ifCounterDiscontinuityTime : ULONGLONG (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ifInUnknownProtos : ULONGLONG (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; ifInDiscards : ULONGLONG (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; ifInErrors : ULONGLONG (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; ifHCInOctets : ULONGLONG (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; ifHCInUcastPkts : ULONGLONG (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; ifHCInMulticastPkts : ULONGLONG (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; ifHCInBroadcastPkts : ULONGLONG (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; ifHCOutOctets : ULONGLONG (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; ifHCOutUcastPkts : ULONGLONG (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; ifHCOutMulticastPkts : ULONGLONG (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; ifHCOutBroadcastPkts : ULONGLONG (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; ifOutErrors : ULONGLONG (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; ifOutDiscards : ULONGLONG (+152, 8byte)  qpoke st,152,値 / qpeek(st,152)  ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; ifHCInUcastOctets : ULONGLONG (+160, 8byte)  qpoke st,160,値 / qpeek(st,160)  ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; ifHCInMulticastOctets : ULONGLONG (+168, 8byte)  qpoke st,168,値 / qpeek(st,168)  ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; ifHCInBroadcastOctets : ULONGLONG (+176, 8byte)  qpoke st,176,値 / qpeek(st,176)  ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; ifHCOutUcastOctets : ULONGLONG (+184, 8byte)  qpoke st,184,値 / qpeek(st,184)  ※IronHSPのみ。3.7/3.8は lpoke st,184,下位 : lpoke st,188,上位
; ifHCOutMulticastOctets : ULONGLONG (+192, 8byte)  qpoke st,192,値 / qpeek(st,192)  ※IronHSPのみ。3.7/3.8は lpoke st,192,下位 : lpoke st,196,上位
; ifHCOutBroadcastOctets : ULONGLONG (+200, 8byte)  qpoke st,200,値 / qpeek(st,200)  ※IronHSPのみ。3.7/3.8は lpoke st,200,下位 : lpoke st,204,上位
; CompartmentId : NET_IF_COMPARTMENT_ID (+208, 4byte)  st.52 = 値  /  値 = st.52   (lpoke/lpeek も可)
; SupportedStatistics : DWORD (+212, 4byte)  st.53 = 値  /  値 = st.53   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global NDIS_INTERFACE_INFORMATION
    #field int ifOperStatus
    #field int ifOperStatusFlags
    #field int MediaConnectState
    #field int MediaDuplexState
    #field int ifMtu
    #field bool1 ifPromiscuousMode
    #field bool1 ifDeviceWakeUpEnable
    #field int64 XmitLinkSpeed
    #field int64 RcvLinkSpeed
    #field int64 ifLastChange
    #field int64 ifCounterDiscontinuityTime
    #field int64 ifInUnknownProtos
    #field int64 ifInDiscards
    #field int64 ifInErrors
    #field int64 ifHCInOctets
    #field int64 ifHCInUcastPkts
    #field int64 ifHCInMulticastPkts
    #field int64 ifHCInBroadcastPkts
    #field int64 ifHCOutOctets
    #field int64 ifHCOutUcastPkts
    #field int64 ifHCOutMulticastPkts
    #field int64 ifHCOutBroadcastPkts
    #field int64 ifOutErrors
    #field int64 ifOutDiscards
    #field int64 ifHCInUcastOctets
    #field int64 ifHCInMulticastOctets
    #field int64 ifHCInBroadcastOctets
    #field int64 ifHCOutUcastOctets
    #field int64 ifHCOutMulticastOctets
    #field int64 ifHCOutBroadcastOctets
    #field int CompartmentId
    #field int SupportedStatistics
#endstruct

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