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

MIB_IPSTATS_LH

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

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

フィールド

フィールドサイズx64x86説明
Anonymous_Anonymous_e__Union4+0+0IP転送が有効か否かを示す無名共用体(dwForwarding相当)。
dwDefaultTTLDWORD4+4+4送出IPデータグラムの既定TTL値を示す。
dwInReceivesDWORD4+8+8受信したIPデータグラムの総数を保持する。
dwInHdrErrorsDWORD4+12+12ヘッダエラーにより破棄した受信データグラム数を保持する。
dwInAddrErrorsDWORD4+16+16アドレスエラーにより破棄した受信データグラム数を保持する。
dwForwDatagramsDWORD4+20+20転送したデータグラム数を保持する。
dwInUnknownProtosDWORD4+24+24プロトコル未知のため破棄した受信データグラム数を保持する。
dwInDiscardsDWORD4+28+28破棄した受信データグラム数(エラー以外)を保持する。
dwInDeliversDWORD4+32+32上位プロトコルへ配送した受信データグラム数を保持する。
dwOutRequestsDWORD4+36+36上位プロトコルが送信要求したデータグラム数を保持する。
dwRoutingDiscardsDWORD4+40+40ルーティング上の理由で破棄したデータグラム数を保持する。
dwOutDiscardsDWORD4+44+44破棄した送信データグラム数を保持する。
dwOutNoRoutesDWORD4+48+48経路不明により破棄した送信データグラム数を保持する。
dwReasmTimeoutDWORD4+52+52フラグメント再構成のタイムアウト秒数を示す。
dwReasmReqdsDWORD4+56+56再構成を要したフラグメント受信数を保持する。
dwReasmOksDWORD4+60+60正常に再構成したデータグラム数を保持する。
dwReasmFailsDWORD4+64+64再構成に失敗した回数を保持する。
dwFragOksDWORD4+68+68正常に分割したデータグラム数を保持する。
dwFragFailsDWORD4+72+72分割に失敗したデータグラム数を保持する。
dwFragCreatesDWORD4+76+76生成したフラグメント数を保持する。
dwNumIfDWORD4+80+80システム上のインターフェース数を示す。
dwNumAddrDWORD4+84+84システムに割り当てられたIPアドレス数を示す。
dwNumRoutesDWORD4+88+88ルーティングテーブルのエントリ数を示す。

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

フィールドサイズx64x86
dwForwardingDWORD4+0+0
ForwardingMIB_IPSTATS_FORWARDING4+0+0

各言語での定義

#include <windows.h>

// MIB_IPSTATS_LH  (x64 92 / x86 92 バイト)
typedef struct MIB_IPSTATS_LH {
    _Anonymous_e__Union Anonymous;
    DWORD dwDefaultTTL;
    DWORD dwInReceives;
    DWORD dwInHdrErrors;
    DWORD dwInAddrErrors;
    DWORD dwForwDatagrams;
    DWORD dwInUnknownProtos;
    DWORD dwInDiscards;
    DWORD dwInDelivers;
    DWORD dwOutRequests;
    DWORD dwRoutingDiscards;
    DWORD dwOutDiscards;
    DWORD dwOutNoRoutes;
    DWORD dwReasmTimeout;
    DWORD dwReasmReqds;
    DWORD dwReasmOks;
    DWORD dwReasmFails;
    DWORD dwFragOks;
    DWORD dwFragFails;
    DWORD dwFragCreates;
    DWORD dwNumIf;
    DWORD dwNumAddr;
    DWORD dwNumRoutes;
} MIB_IPSTATS_LH;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MIB_IPSTATS_LH
{
    public _Anonymous_e__Union Anonymous;
    public uint dwDefaultTTL;
    public uint dwInReceives;
    public uint dwInHdrErrors;
    public uint dwInAddrErrors;
    public uint dwForwDatagrams;
    public uint dwInUnknownProtos;
    public uint dwInDiscards;
    public uint dwInDelivers;
    public uint dwOutRequests;
    public uint dwRoutingDiscards;
    public uint dwOutDiscards;
    public uint dwOutNoRoutes;
    public uint dwReasmTimeout;
    public uint dwReasmReqds;
    public uint dwReasmOks;
    public uint dwReasmFails;
    public uint dwFragOks;
    public uint dwFragFails;
    public uint dwFragCreates;
    public uint dwNumIf;
    public uint dwNumAddr;
    public uint dwNumRoutes;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MIB_IPSTATS_LH
    Public Anonymous As _Anonymous_e__Union
    Public dwDefaultTTL As UInteger
    Public dwInReceives As UInteger
    Public dwInHdrErrors As UInteger
    Public dwInAddrErrors As UInteger
    Public dwForwDatagrams As UInteger
    Public dwInUnknownProtos As UInteger
    Public dwInDiscards As UInteger
    Public dwInDelivers As UInteger
    Public dwOutRequests As UInteger
    Public dwRoutingDiscards As UInteger
    Public dwOutDiscards As UInteger
    Public dwOutNoRoutes As UInteger
    Public dwReasmTimeout As UInteger
    Public dwReasmReqds As UInteger
    Public dwReasmOks As UInteger
    Public dwReasmFails As UInteger
    Public dwFragOks As UInteger
    Public dwFragFails As UInteger
    Public dwFragCreates As UInteger
    Public dwNumIf As UInteger
    Public dwNumAddr As UInteger
    Public dwNumRoutes As UInteger
End Structure
import ctypes
from ctypes import wintypes

class MIB_IPSTATS_LH(ctypes.Structure):
    _fields_ = [
        ("Anonymous", _Anonymous_e__Union),
        ("dwDefaultTTL", wintypes.DWORD),
        ("dwInReceives", wintypes.DWORD),
        ("dwInHdrErrors", wintypes.DWORD),
        ("dwInAddrErrors", wintypes.DWORD),
        ("dwForwDatagrams", wintypes.DWORD),
        ("dwInUnknownProtos", wintypes.DWORD),
        ("dwInDiscards", wintypes.DWORD),
        ("dwInDelivers", wintypes.DWORD),
        ("dwOutRequests", wintypes.DWORD),
        ("dwRoutingDiscards", wintypes.DWORD),
        ("dwOutDiscards", wintypes.DWORD),
        ("dwOutNoRoutes", wintypes.DWORD),
        ("dwReasmTimeout", wintypes.DWORD),
        ("dwReasmReqds", wintypes.DWORD),
        ("dwReasmOks", wintypes.DWORD),
        ("dwReasmFails", wintypes.DWORD),
        ("dwFragOks", wintypes.DWORD),
        ("dwFragFails", wintypes.DWORD),
        ("dwFragCreates", wintypes.DWORD),
        ("dwNumIf", wintypes.DWORD),
        ("dwNumAddr", wintypes.DWORD),
        ("dwNumRoutes", wintypes.DWORD),
    ]
#[repr(C)]
pub struct MIB_IPSTATS_LH {
    pub Anonymous: _Anonymous_e__Union,
    pub dwDefaultTTL: u32,
    pub dwInReceives: u32,
    pub dwInHdrErrors: u32,
    pub dwInAddrErrors: u32,
    pub dwForwDatagrams: u32,
    pub dwInUnknownProtos: u32,
    pub dwInDiscards: u32,
    pub dwInDelivers: u32,
    pub dwOutRequests: u32,
    pub dwRoutingDiscards: u32,
    pub dwOutDiscards: u32,
    pub dwOutNoRoutes: u32,
    pub dwReasmTimeout: u32,
    pub dwReasmReqds: u32,
    pub dwReasmOks: u32,
    pub dwReasmFails: u32,
    pub dwFragOks: u32,
    pub dwFragFails: u32,
    pub dwFragCreates: u32,
    pub dwNumIf: u32,
    pub dwNumAddr: u32,
    pub dwNumRoutes: u32,
}
import "golang.org/x/sys/windows"

type MIB_IPSTATS_LH struct {
	Anonymous _Anonymous_e__Union
	dwDefaultTTL uint32
	dwInReceives uint32
	dwInHdrErrors uint32
	dwInAddrErrors uint32
	dwForwDatagrams uint32
	dwInUnknownProtos uint32
	dwInDiscards uint32
	dwInDelivers uint32
	dwOutRequests uint32
	dwRoutingDiscards uint32
	dwOutDiscards uint32
	dwOutNoRoutes uint32
	dwReasmTimeout uint32
	dwReasmReqds uint32
	dwReasmOks uint32
	dwReasmFails uint32
	dwFragOks uint32
	dwFragFails uint32
	dwFragCreates uint32
	dwNumIf uint32
	dwNumAddr uint32
	dwNumRoutes uint32
}
type
  MIB_IPSTATS_LH = record
    Anonymous: _Anonymous_e__Union;
    dwDefaultTTL: DWORD;
    dwInReceives: DWORD;
    dwInHdrErrors: DWORD;
    dwInAddrErrors: DWORD;
    dwForwDatagrams: DWORD;
    dwInUnknownProtos: DWORD;
    dwInDiscards: DWORD;
    dwInDelivers: DWORD;
    dwOutRequests: DWORD;
    dwRoutingDiscards: DWORD;
    dwOutDiscards: DWORD;
    dwOutNoRoutes: DWORD;
    dwReasmTimeout: DWORD;
    dwReasmReqds: DWORD;
    dwReasmOks: DWORD;
    dwReasmFails: DWORD;
    dwFragOks: DWORD;
    dwFragFails: DWORD;
    dwFragCreates: DWORD;
    dwNumIf: DWORD;
    dwNumAddr: DWORD;
    dwNumRoutes: DWORD;
  end;
const MIB_IPSTATS_LH = extern struct {
    Anonymous: _Anonymous_e__Union,
    dwDefaultTTL: u32,
    dwInReceives: u32,
    dwInHdrErrors: u32,
    dwInAddrErrors: u32,
    dwForwDatagrams: u32,
    dwInUnknownProtos: u32,
    dwInDiscards: u32,
    dwInDelivers: u32,
    dwOutRequests: u32,
    dwRoutingDiscards: u32,
    dwOutDiscards: u32,
    dwOutNoRoutes: u32,
    dwReasmTimeout: u32,
    dwReasmReqds: u32,
    dwReasmOks: u32,
    dwReasmFails: u32,
    dwFragOks: u32,
    dwFragFails: u32,
    dwFragCreates: u32,
    dwNumIf: u32,
    dwNumAddr: u32,
    dwNumRoutes: u32,
};
type
  MIB_IPSTATS_LH {.bycopy.} = object
    Anonymous: _Anonymous_e__Union
    dwDefaultTTL: uint32
    dwInReceives: uint32
    dwInHdrErrors: uint32
    dwInAddrErrors: uint32
    dwForwDatagrams: uint32
    dwInUnknownProtos: uint32
    dwInDiscards: uint32
    dwInDelivers: uint32
    dwOutRequests: uint32
    dwRoutingDiscards: uint32
    dwOutDiscards: uint32
    dwOutNoRoutes: uint32
    dwReasmTimeout: uint32
    dwReasmReqds: uint32
    dwReasmOks: uint32
    dwReasmFails: uint32
    dwFragOks: uint32
    dwFragFails: uint32
    dwFragCreates: uint32
    dwNumIf: uint32
    dwNumAddr: uint32
    dwNumRoutes: uint32
struct MIB_IPSTATS_LH
{
    _Anonymous_e__Union Anonymous;
    uint dwDefaultTTL;
    uint dwInReceives;
    uint dwInHdrErrors;
    uint dwInAddrErrors;
    uint dwForwDatagrams;
    uint dwInUnknownProtos;
    uint dwInDiscards;
    uint dwInDelivers;
    uint dwOutRequests;
    uint dwRoutingDiscards;
    uint dwOutDiscards;
    uint dwOutNoRoutes;
    uint dwReasmTimeout;
    uint dwReasmReqds;
    uint dwReasmOks;
    uint dwReasmFails;
    uint dwFragOks;
    uint dwFragFails;
    uint dwFragCreates;
    uint dwNumIf;
    uint dwNumAddr;
    uint dwNumRoutes;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MIB_IPSTATS_LH サイズ: 92 バイト(x64)
dim st, 23    ; 4byte整数×23(構造体サイズ 92 / 4 切り上げ)
; Anonymous : _Anonymous_e__Union (+0, 4byte)  varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; dwDefaultTTL : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwInReceives : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwInHdrErrors : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwInAddrErrors : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwForwDatagrams : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwInUnknownProtos : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwInDiscards : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwInDelivers : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwOutRequests : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwRoutingDiscards : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwOutDiscards : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwOutNoRoutes : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; dwReasmTimeout : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; dwReasmReqds : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; dwReasmOks : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; dwReasmFails : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; dwFragOks : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; dwFragFails : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; dwFragCreates : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; dwNumIf : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; dwNumAddr : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; dwNumRoutes : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MIB_IPSTATS_LH
    #field byte Anonymous 4
    #field int dwDefaultTTL
    #field int dwInReceives
    #field int dwInHdrErrors
    #field int dwInAddrErrors
    #field int dwForwDatagrams
    #field int dwInUnknownProtos
    #field int dwInDiscards
    #field int dwInDelivers
    #field int dwOutRequests
    #field int dwRoutingDiscards
    #field int dwOutDiscards
    #field int dwOutNoRoutes
    #field int dwReasmTimeout
    #field int dwReasmReqds
    #field int dwReasmOks
    #field int dwReasmFails
    #field int dwFragOks
    #field int dwFragFails
    #field int dwFragCreates
    #field int dwNumIf
    #field int dwNumAddr
    #field int dwNumRoutes
#endstruct

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