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

IP_MCAST_COUNTER_INFO

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

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

フィールド

フィールドサイズx64x86説明
InMcastOctetsULONGLONG8+0+0受信したマルチキャストデータのオクテット(バイト)総数を保持する。
OutMcastOctetsULONGLONG8+8+8送信したマルチキャストデータのオクテット(バイト)総数を保持する。
InMcastPktsULONGLONG8+16+16受信したマルチキャストパケットの総数を保持する。
OutMcastPktsULONGLONG8+24+24送信したマルチキャストパケットの総数を保持する。

各言語での定義

#include <windows.h>

// IP_MCAST_COUNTER_INFO  (x64 32 / x86 32 バイト)
typedef struct IP_MCAST_COUNTER_INFO {
    ULONGLONG InMcastOctets;
    ULONGLONG OutMcastOctets;
    ULONGLONG InMcastPkts;
    ULONGLONG OutMcastPkts;
} IP_MCAST_COUNTER_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IP_MCAST_COUNTER_INFO
{
    public ulong InMcastOctets;
    public ulong OutMcastOctets;
    public ulong InMcastPkts;
    public ulong OutMcastPkts;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IP_MCAST_COUNTER_INFO
    Public InMcastOctets As ULong
    Public OutMcastOctets As ULong
    Public InMcastPkts As ULong
    Public OutMcastPkts As ULong
End Structure
import ctypes
from ctypes import wintypes

class IP_MCAST_COUNTER_INFO(ctypes.Structure):
    _fields_ = [
        ("InMcastOctets", ctypes.c_ulonglong),
        ("OutMcastOctets", ctypes.c_ulonglong),
        ("InMcastPkts", ctypes.c_ulonglong),
        ("OutMcastPkts", ctypes.c_ulonglong),
    ]
#[repr(C)]
pub struct IP_MCAST_COUNTER_INFO {
    pub InMcastOctets: u64,
    pub OutMcastOctets: u64,
    pub InMcastPkts: u64,
    pub OutMcastPkts: u64,
}
import "golang.org/x/sys/windows"

type IP_MCAST_COUNTER_INFO struct {
	InMcastOctets uint64
	OutMcastOctets uint64
	InMcastPkts uint64
	OutMcastPkts uint64
}
type
  IP_MCAST_COUNTER_INFO = record
    InMcastOctets: UInt64;
    OutMcastOctets: UInt64;
    InMcastPkts: UInt64;
    OutMcastPkts: UInt64;
  end;
const IP_MCAST_COUNTER_INFO = extern struct {
    InMcastOctets: u64,
    OutMcastOctets: u64,
    InMcastPkts: u64,
    OutMcastPkts: u64,
};
type
  IP_MCAST_COUNTER_INFO {.bycopy.} = object
    InMcastOctets: uint64
    OutMcastOctets: uint64
    InMcastPkts: uint64
    OutMcastPkts: uint64
struct IP_MCAST_COUNTER_INFO
{
    ulong InMcastOctets;
    ulong OutMcastOctets;
    ulong InMcastPkts;
    ulong OutMcastPkts;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IP_MCAST_COUNTER_INFO サイズ: 32 バイト(x64)
dim st, 8    ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; InMcastOctets : ULONGLONG (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; OutMcastOctets : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; InMcastPkts : ULONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; OutMcastPkts : ULONGLONG (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global IP_MCAST_COUNTER_INFO
    #field int64 InMcastOctets
    #field int64 OutMcastOctets
    #field int64 InMcastPkts
    #field int64 OutMcastPkts
#endstruct

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