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

MIBICMPSTATS

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

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

フィールド

フィールドサイズx64x86説明
dwMsgsDWORD4+0+0受信または送信されたメッセージの数です。
dwErrorsDWORD4+4+4受信または送信されたエラーの数です。
dwDestUnreachsDWORD4+8+8受信または送信された destination-unreachable (宛先到達不能) メッセージの数です。destination-unreachable メッセージは、データグラムが目的の宛先に到達できなかった場合に、送信元のコンピューターへ送信されます。
dwTimeExcdsDWORD4+12+12受信または送信された time-to-live (TTL) 超過メッセージの数です。time-to-live 超過メッセージは、データグラムが通過したルーターの数が time-to-live 値を超えたために破棄された場合に、送信元のコンピューターへ送信されます。
dwParmProbsDWORD4+16+16受信または送信された parameter-problem (パラメーター異常) メッセージの数です。parameter-problem メッセージは、ルーターまたはホストがデータグラムの IP ヘッダー内のエラーを検出した場合に、送信元のコンピューターへ送信されます。
dwSrcQuenchsDWORD4+20+20受信または送信された source quench (発信抑制) メッセージの数です。source quench 要求は、パケットの送信レートを下げるよう要求するためにコンピューターへ送信されます。
dwRedirectsDWORD4+24+24受信または送信されたリダイレクト メッセージの数です。リダイレクト メッセージは、あるコンピューターが送信したデータグラムについてより適切な経路が見つかった場合に、その送信元のコンピューターへ送信されます。
dwEchosDWORD4+28+28受信または送信されたエコー要求の数です。エコー要求を受け取ったコンピューターは、送信元のコンピューターへエコー応答メッセージを返します。
dwEchoRepsDWORD4+32+32受信または送信されたエコー応答の数です。コンピューターは、エコー要求メッセージを受信すると、その応答としてエコー応答を送信します。
dwTimestampsDWORD4+36+36受信または送信されたタイムスタンプ要求の数です。タイムスタンプ要求を受け取ったコンピューターは、送信元のコンピューターへタイムスタンプ応答を返します。
dwTimestampRepsDWORD4+40+40受信または送信されたタイムスタンプ応答の数です。コンピューターは、タイムスタンプ要求を受信すると、その応答としてタイムスタンプ応答を送信します。ルーターはタイムスタンプ要求と応答を使用して、ネットワーク上のデータグラムの伝送速度を測定できます。
dwAddrMasksDWORD4+44+44受信または送信されたアドレス マスク要求の数です。コンピューターは、ローカル サブネットのサブネット マスクのビット数を判別するためにアドレス マスク要求を送信します。
dwAddrMaskRepsDWORD4+48+48受信または送信されたアドレス マスク応答の数です。コンピューターは、アドレス マスク要求に対する応答としてアドレス マスク応答を送信します。

公式ドキュメント

MIBICMPSTATS 構造体は、特定のコンピューターにおける、受信または送信のインターネット制御メッセージ プロトコル (ICMP) メッセージの統計情報を格納します。

解説(Remarks)

特定のコンピューターの ICMP 統計情報をすべて保持するには、2 つの MIBICMPSTATS 構造体が必要です。一方の MIBICMPSTATS 構造体には受信 ICMP メッセージの統計情報が格納され、もう一方には送信 ICMP メッセージの統計情報が格納されます。このため、 MIBICMPINFO 構造体は 2 つの MIBICMPSTATS 構造体を含んでいます。

Windows Vista 以降向けにリリースされた Microsoft Windows Software Development Kit (SDK) では、ヘッダー ファイルの構成が変更され、MIBICMPSTATS 構造体は 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>

// MIBICMPSTATS  (x64 52 / x86 52 バイト)
typedef struct MIBICMPSTATS {
    DWORD dwMsgs;
    DWORD dwErrors;
    DWORD dwDestUnreachs;
    DWORD dwTimeExcds;
    DWORD dwParmProbs;
    DWORD dwSrcQuenchs;
    DWORD dwRedirects;
    DWORD dwEchos;
    DWORD dwEchoReps;
    DWORD dwTimestamps;
    DWORD dwTimestampReps;
    DWORD dwAddrMasks;
    DWORD dwAddrMaskReps;
} MIBICMPSTATS;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MIBICMPSTATS
{
    public uint dwMsgs;
    public uint dwErrors;
    public uint dwDestUnreachs;
    public uint dwTimeExcds;
    public uint dwParmProbs;
    public uint dwSrcQuenchs;
    public uint dwRedirects;
    public uint dwEchos;
    public uint dwEchoReps;
    public uint dwTimestamps;
    public uint dwTimestampReps;
    public uint dwAddrMasks;
    public uint dwAddrMaskReps;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MIBICMPSTATS
    Public dwMsgs As UInteger
    Public dwErrors As UInteger
    Public dwDestUnreachs As UInteger
    Public dwTimeExcds As UInteger
    Public dwParmProbs As UInteger
    Public dwSrcQuenchs As UInteger
    Public dwRedirects As UInteger
    Public dwEchos As UInteger
    Public dwEchoReps As UInteger
    Public dwTimestamps As UInteger
    Public dwTimestampReps As UInteger
    Public dwAddrMasks As UInteger
    Public dwAddrMaskReps As UInteger
End Structure
import ctypes
from ctypes import wintypes

class MIBICMPSTATS(ctypes.Structure):
    _fields_ = [
        ("dwMsgs", wintypes.DWORD),
        ("dwErrors", wintypes.DWORD),
        ("dwDestUnreachs", wintypes.DWORD),
        ("dwTimeExcds", wintypes.DWORD),
        ("dwParmProbs", wintypes.DWORD),
        ("dwSrcQuenchs", wintypes.DWORD),
        ("dwRedirects", wintypes.DWORD),
        ("dwEchos", wintypes.DWORD),
        ("dwEchoReps", wintypes.DWORD),
        ("dwTimestamps", wintypes.DWORD),
        ("dwTimestampReps", wintypes.DWORD),
        ("dwAddrMasks", wintypes.DWORD),
        ("dwAddrMaskReps", wintypes.DWORD),
    ]
#[repr(C)]
pub struct MIBICMPSTATS {
    pub dwMsgs: u32,
    pub dwErrors: u32,
    pub dwDestUnreachs: u32,
    pub dwTimeExcds: u32,
    pub dwParmProbs: u32,
    pub dwSrcQuenchs: u32,
    pub dwRedirects: u32,
    pub dwEchos: u32,
    pub dwEchoReps: u32,
    pub dwTimestamps: u32,
    pub dwTimestampReps: u32,
    pub dwAddrMasks: u32,
    pub dwAddrMaskReps: u32,
}
import "golang.org/x/sys/windows"

type MIBICMPSTATS struct {
	dwMsgs uint32
	dwErrors uint32
	dwDestUnreachs uint32
	dwTimeExcds uint32
	dwParmProbs uint32
	dwSrcQuenchs uint32
	dwRedirects uint32
	dwEchos uint32
	dwEchoReps uint32
	dwTimestamps uint32
	dwTimestampReps uint32
	dwAddrMasks uint32
	dwAddrMaskReps uint32
}
type
  MIBICMPSTATS = record
    dwMsgs: DWORD;
    dwErrors: DWORD;
    dwDestUnreachs: DWORD;
    dwTimeExcds: DWORD;
    dwParmProbs: DWORD;
    dwSrcQuenchs: DWORD;
    dwRedirects: DWORD;
    dwEchos: DWORD;
    dwEchoReps: DWORD;
    dwTimestamps: DWORD;
    dwTimestampReps: DWORD;
    dwAddrMasks: DWORD;
    dwAddrMaskReps: DWORD;
  end;
const MIBICMPSTATS = extern struct {
    dwMsgs: u32,
    dwErrors: u32,
    dwDestUnreachs: u32,
    dwTimeExcds: u32,
    dwParmProbs: u32,
    dwSrcQuenchs: u32,
    dwRedirects: u32,
    dwEchos: u32,
    dwEchoReps: u32,
    dwTimestamps: u32,
    dwTimestampReps: u32,
    dwAddrMasks: u32,
    dwAddrMaskReps: u32,
};
type
  MIBICMPSTATS {.bycopy.} = object
    dwMsgs: uint32
    dwErrors: uint32
    dwDestUnreachs: uint32
    dwTimeExcds: uint32
    dwParmProbs: uint32
    dwSrcQuenchs: uint32
    dwRedirects: uint32
    dwEchos: uint32
    dwEchoReps: uint32
    dwTimestamps: uint32
    dwTimestampReps: uint32
    dwAddrMasks: uint32
    dwAddrMaskReps: uint32
struct MIBICMPSTATS
{
    uint dwMsgs;
    uint dwErrors;
    uint dwDestUnreachs;
    uint dwTimeExcds;
    uint dwParmProbs;
    uint dwSrcQuenchs;
    uint dwRedirects;
    uint dwEchos;
    uint dwEchoReps;
    uint dwTimestamps;
    uint dwTimestampReps;
    uint dwAddrMasks;
    uint dwAddrMaskReps;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MIBICMPSTATS サイズ: 52 バイト(x64)
dim st, 13    ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; dwMsgs : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; dwErrors : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; dwDestUnreachs : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; dwTimeExcds : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; dwParmProbs : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; dwSrcQuenchs : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; dwRedirects : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; dwEchos : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; dwEchoReps : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; dwTimestamps : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; dwTimestampReps : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; dwAddrMasks : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; dwAddrMaskReps : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MIBICMPSTATS
    #field int dwMsgs
    #field int dwErrors
    #field int dwDestUnreachs
    #field int dwTimeExcds
    #field int dwParmProbs
    #field int dwSrcQuenchs
    #field int dwRedirects
    #field int dwEchos
    #field int dwEchoReps
    #field int dwTimestamps
    #field int dwTimestampReps
    #field int dwAddrMasks
    #field int dwAddrMaskReps
#endstruct

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