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

IKEEXT_COMMON_STATISTICS0

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

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

フィールド

フィールドサイズx64x86説明
v4StatisticsIKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS08+0+0IPv4に関する共通統計(ソケット失敗数等)。
v6StatisticsIKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS08+8+8IPv6に関する共通統計(ソケット失敗数等)。
totalPacketsReceivedDWORD4+16+16受信したIKE/AuthIPパケットの累計数。
totalInvalidPacketsReceivedDWORD4+20+20受信した無効パケットの累計数。
currentQueuedWorkitemsDWORD4+24+24現在キューに滞留している作業項目の数。

各言語での定義

#include <windows.h>

// IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0  (x64 8 / x86 8 バイト)
typedef struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 {
    DWORD totalSocketReceiveFailures;
    DWORD totalSocketSendFailures;
} IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0;

// IKEEXT_COMMON_STATISTICS0  (x64 28 / x86 28 バイト)
typedef struct IKEEXT_COMMON_STATISTICS0 {
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics;
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics;
    DWORD totalPacketsReceived;
    DWORD totalInvalidPacketsReceived;
    DWORD currentQueuedWorkitems;
} IKEEXT_COMMON_STATISTICS0;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
{
    public uint totalSocketReceiveFailures;
    public uint totalSocketSendFailures;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IKEEXT_COMMON_STATISTICS0
{
    public IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics;
    public IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics;
    public uint totalPacketsReceived;
    public uint totalInvalidPacketsReceived;
    public uint currentQueuedWorkitems;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
    Public totalSocketReceiveFailures As UInteger
    Public totalSocketSendFailures As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IKEEXT_COMMON_STATISTICS0
    Public v4Statistics As IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
    Public v6Statistics As IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
    Public totalPacketsReceived As UInteger
    Public totalInvalidPacketsReceived As UInteger
    Public currentQueuedWorkitems As UInteger
End Structure
import ctypes
from ctypes import wintypes

class IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0(ctypes.Structure):
    _fields_ = [
        ("totalSocketReceiveFailures", wintypes.DWORD),
        ("totalSocketSendFailures", wintypes.DWORD),
    ]

class IKEEXT_COMMON_STATISTICS0(ctypes.Structure):
    _fields_ = [
        ("v4Statistics", IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0),
        ("v6Statistics", IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0),
        ("totalPacketsReceived", wintypes.DWORD),
        ("totalInvalidPacketsReceived", wintypes.DWORD),
        ("currentQueuedWorkitems", wintypes.DWORD),
    ]
#[repr(C)]
pub struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 {
    pub totalSocketReceiveFailures: u32,
    pub totalSocketSendFailures: u32,
}

#[repr(C)]
pub struct IKEEXT_COMMON_STATISTICS0 {
    pub v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0,
    pub v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0,
    pub totalPacketsReceived: u32,
    pub totalInvalidPacketsReceived: u32,
    pub currentQueuedWorkitems: u32,
}
import "golang.org/x/sys/windows"

type IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 struct {
	totalSocketReceiveFailures uint32
	totalSocketSendFailures uint32
}

type IKEEXT_COMMON_STATISTICS0 struct {
	v4Statistics IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
	v6Statistics IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
	totalPacketsReceived uint32
	totalInvalidPacketsReceived uint32
	currentQueuedWorkitems uint32
}
type
  IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 = record
    totalSocketReceiveFailures: DWORD;
    totalSocketSendFailures: DWORD;
  end;

  IKEEXT_COMMON_STATISTICS0 = record
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0;
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0;
    totalPacketsReceived: DWORD;
    totalInvalidPacketsReceived: DWORD;
    currentQueuedWorkitems: DWORD;
  end;
const IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 = extern struct {
    totalSocketReceiveFailures: u32,
    totalSocketSendFailures: u32,
};

const IKEEXT_COMMON_STATISTICS0 = extern struct {
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0,
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0,
    totalPacketsReceived: u32,
    totalInvalidPacketsReceived: u32,
    currentQueuedWorkitems: u32,
};
type
  IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 {.bycopy.} = object
    totalSocketReceiveFailures: uint32
    totalSocketSendFailures: uint32

  IKEEXT_COMMON_STATISTICS0 {.bycopy.} = object
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
    totalPacketsReceived: uint32
    totalInvalidPacketsReceived: uint32
    currentQueuedWorkitems: uint32
struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
{
    uint totalSocketReceiveFailures;
    uint totalSocketSendFailures;
}

struct IKEEXT_COMMON_STATISTICS0
{
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics;
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics;
    uint totalPacketsReceived;
    uint totalInvalidPacketsReceived;
    uint currentQueuedWorkitems;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IKEEXT_COMMON_STATISTICS0 サイズ: 28 バイト(x64)
dim st, 7    ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; v4Statistics : IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 (+0, 8byte)  varptr(st)+0 を基点に操作(8byte:入れ子/配列)
; v6Statistics : IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 (+8, 8byte)  varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; totalPacketsReceived : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; totalInvalidPacketsReceived : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; currentQueuedWorkitems : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0
    #field int totalSocketReceiveFailures
    #field int totalSocketSendFailures
#endstruct

#defstruct global IKEEXT_COMMON_STATISTICS0
    #field IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v4Statistics
    #field IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 v6Statistics
    #field int totalPacketsReceived
    #field int totalInvalidPacketsReceived
    #field int currentQueuedWorkitems
#endstruct

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