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

特定のコンピューターで生成されたデータグラムの既定の初期 Time-to-Live (TTL) です。

SetIpStatistics 関数および SetIpStatisticsEx 関数で転送および Time-to-Live (TTL) のオプションを設定する際に、現在の既定 TTL 値を使用するには、このメンバーに MIB_USE_CURRENT_TTL を設定できます。

dwInReceivesDWORD4+8+8受信したデータグラムの数です。
dwInHdrErrorsDWORD4+12+12受信したデータグラムのうち、ヘッダーにエラーがあったものの数です。
dwInAddrErrorsDWORD4+16+16受信したデータグラムのうち、アドレスにエラーがあったものの数です。
dwForwDatagramsDWORD4+20+20転送されたデータグラムの数です。
dwInUnknownProtosDWORD4+24+24受信したデータグラムのうち、プロトコルが不明であったものの数です。
dwInDiscardsDWORD4+28+28受信して破棄されたデータグラムの数です。
dwInDeliversDWORD4+32+32受信して配信されたデータグラムの数です。
dwOutRequestsDWORD4+36+36IP に送信が要求された送信データグラムの数です。この数には転送されたデータグラムは含まれません。
dwRoutingDiscardsDWORD4+40+40破棄された送信データグラムの数です。
dwOutDiscardsDWORD4+44+44破棄された送信済みデータグラムの数です。
dwOutNoRoutesDWORD4+48+48このコンピューターが宛先 IP アドレスへの経路を保持していなかったデータグラムの数です。これらのデータグラムは破棄されました。
dwReasmTimeoutDWORD4+52+52断片化されたデータグラムのすべての断片が到着するまでに許容される時間です。この時間内にすべての断片が到着しない場合、そのデータグラムは破棄されます。
dwReasmReqdsDWORD4+56+56再構成が必要なデータグラムの数です。
dwReasmOksDWORD4+60+60正常に再構成されたデータグラムの数です。
dwReasmFailsDWORD4+64+64再構成できなかったデータグラムの数です。
dwFragOksDWORD4+68+68正常に断片化されたデータグラムの数です。
dwFragFailsDWORD4+72+72IP ヘッダーで断片化不可が指定されているため断片化されなかったデータグラムの数です。これらのデータグラムは破棄されます。
dwFragCreatesDWORD4+76+76作成された断片の数です。
dwNumIfDWORD4+80+80インターフェイスの数です。
dwNumAddrDWORD4+84+84このコンピューターに関連付けられている IP アドレスの数です。
dwNumRoutesDWORD4+88+88IP ルーティングテーブル内の経路の数です。

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

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

プロトコル (IPv4 または IPv6) に対して IP 転送が有効か無効かを指定します。

Windows Vista 以降では、このメンバーは DWORD dwForwarding メンバーと MIB_IPSTATS_FORWARDING Forwarding メンバーを含む共用体として定義されています。MIB_IPSTATS_FORWARDINGIpmib.h ヘッダーファイルで定義されている列挙型です。

注意 このメンバーはプロトコル (IPv4 または IPv6) ごとにシステム全体に適用されるものであり、IP 転送のインターフェイスごとの構成を返すものではありません。
意味
MIB_IP_FORWARDING
1
IP 転送は有効です。
MIB_IP_NOT_FORWARDING
2
IP 転送は有効ではありません。
MIB_USE_CURRENT_FORWARDING
0xffff
現在の IP 転送の設定を使用します。この値は、SetIpStatistics 関数および SetIpStatisticsEx 関数で転送および Time-to-Live (TTL) のオプションを設定する場合にのみ適用されます。
ForwardingMIB_IPSTATS_FORWARDING4+0+0

公式ドキュメント

MIB_IPSTATS 構造体は、特定のコンピューター上で動作している IP プロトコルに関する情報を格納します。

解説(Remarks)

MIB_IPSTATS 構造体は、プロトコル (IPv4 または IPv6) ごとの情報を格納します。

dwForwarding メンバーは、インターフェイスの転送状態ではなく、IPv4 または IPv6 のプロトコルごとの転送状態を指定します。各インターフェイスの転送状態は、そのインターフェイスに対して有効になっている状態です。GetIpStatistics 関数または GetIpStatisticsEx 関数が返すプロトコルごとの状態は、実際に有効な転送状態ではありません。dwForwarding メンバーには次の 2 つの目的があります。

Windows Vista 以降向けにリリースされた Microsoft Windows Software Development Kit (SDK) では、ヘッダーファイルの構成が変更され、MIB_IPSTATS 構造体は Iprtrmib.h ヘッダーファイルではなく Ipmib.h ヘッダーファイルで定義されています。Ipmib.h ヘッダーファイルは Iprtrmib.h に自動的にインクルードされ、Iprtrmib.hIphlpapi.h ヘッダーファイルに自動的にインクルードされる点に注意してください。Ipmib.h および Iprtrmib.h ヘッダーファイルを直接使用しないでください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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 非対応)。必要に応じ手動でアクセス。