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

IKEEXT_STATISTICS1

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

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

フィールド

フィールドサイズx64x86説明
ikeStatisticsIKEEXT_KEYMODULE_STATISTICS1544+0+0IKEプロトコルの鍵モジュール統計。
authipStatisticsIKEEXT_KEYMODULE_STATISTICS1544+544+544AuthIPプロトコルの鍵モジュール統計。
ikeV2StatisticsIKEEXT_KEYMODULE_STATISTICS1544+1088+1088IKEv2プロトコルの鍵モジュール統計。
commonStatisticsIKEEXT_COMMON_STATISTICS128+1632+1632プロトコル共通の統計情報。

各言語での定義

#include <windows.h>

// IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1  (x64 72 / x86 72 バイト)
typedef struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 {
    DWORD currentActiveMainModes;
    DWORD totalMainModesStarted;
    DWORD totalSuccessfulMainModes;
    DWORD totalFailedMainModes;
    DWORD totalResponderMainModes;
    DWORD currentNewResponderMainModes;
    DWORD currentActiveQuickModes;
    DWORD totalQuickModesStarted;
    DWORD totalSuccessfulQuickModes;
    DWORD totalFailedQuickModes;
    DWORD totalAcquires;
    DWORD totalReinitAcquires;
    DWORD currentActiveExtendedModes;
    DWORD totalExtendedModesStarted;
    DWORD totalSuccessfulExtendedModes;
    DWORD totalFailedExtendedModes;
    DWORD totalImpersonationExtendedModes;
    DWORD totalImpersonationMainModes;
} IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1;

// IKEEXT_KEYMODULE_STATISTICS1  (x64 544 / x86 544 バイト)
typedef struct IKEEXT_KEYMODULE_STATISTICS1 {
    IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics;
    IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics;
    DWORD errorFrequencyTable[97];
    DWORD mainModeNegotiationTime;
    DWORD quickModeNegotiationTime;
    DWORD extendedModeNegotiationTime;
} IKEEXT_KEYMODULE_STATISTICS1;

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

// IKEEXT_COMMON_STATISTICS1  (x64 28 / x86 28 バイト)
typedef struct IKEEXT_COMMON_STATISTICS1 {
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics;
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics;
    DWORD totalPacketsReceived;
    DWORD totalInvalidPacketsReceived;
    DWORD currentQueuedWorkitems;
} IKEEXT_COMMON_STATISTICS1;

// IKEEXT_STATISTICS1  (x64 1660 / x86 1660 バイト)
typedef struct IKEEXT_STATISTICS1 {
    IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics;
    IKEEXT_KEYMODULE_STATISTICS1 authipStatistics;
    IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics;
    IKEEXT_COMMON_STATISTICS1 commonStatistics;
} IKEEXT_STATISTICS1;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
{
    public uint currentActiveMainModes;
    public uint totalMainModesStarted;
    public uint totalSuccessfulMainModes;
    public uint totalFailedMainModes;
    public uint totalResponderMainModes;
    public uint currentNewResponderMainModes;
    public uint currentActiveQuickModes;
    public uint totalQuickModesStarted;
    public uint totalSuccessfulQuickModes;
    public uint totalFailedQuickModes;
    public uint totalAcquires;
    public uint totalReinitAcquires;
    public uint currentActiveExtendedModes;
    public uint totalExtendedModesStarted;
    public uint totalSuccessfulExtendedModes;
    public uint totalFailedExtendedModes;
    public uint totalImpersonationExtendedModes;
    public uint totalImpersonationMainModes;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IKEEXT_KEYMODULE_STATISTICS1
{
    public IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics;
    public IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 97)] public uint[] errorFrequencyTable;
    public uint mainModeNegotiationTime;
    public uint quickModeNegotiationTime;
    public uint extendedModeNegotiationTime;
}

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

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IKEEXT_COMMON_STATISTICS1
{
    public IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics;
    public IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics;
    public uint totalPacketsReceived;
    public uint totalInvalidPacketsReceived;
    public uint currentQueuedWorkitems;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IKEEXT_STATISTICS1
{
    public IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics;
    public IKEEXT_KEYMODULE_STATISTICS1 authipStatistics;
    public IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics;
    public IKEEXT_COMMON_STATISTICS1 commonStatistics;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
    Public currentActiveMainModes As UInteger
    Public totalMainModesStarted As UInteger
    Public totalSuccessfulMainModes As UInteger
    Public totalFailedMainModes As UInteger
    Public totalResponderMainModes As UInteger
    Public currentNewResponderMainModes As UInteger
    Public currentActiveQuickModes As UInteger
    Public totalQuickModesStarted As UInteger
    Public totalSuccessfulQuickModes As UInteger
    Public totalFailedQuickModes As UInteger
    Public totalAcquires As UInteger
    Public totalReinitAcquires As UInteger
    Public currentActiveExtendedModes As UInteger
    Public totalExtendedModesStarted As UInteger
    Public totalSuccessfulExtendedModes As UInteger
    Public totalFailedExtendedModes As UInteger
    Public totalImpersonationExtendedModes As UInteger
    Public totalImpersonationMainModes As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IKEEXT_KEYMODULE_STATISTICS1
    Public v4Statistics As IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
    Public v6Statistics As IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=97)> Public errorFrequencyTable() As UInteger
    Public mainModeNegotiationTime As UInteger
    Public quickModeNegotiationTime As UInteger
    Public extendedModeNegotiationTime As UInteger
End Structure

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

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IKEEXT_COMMON_STATISTICS1
    Public v4Statistics As IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
    Public v6Statistics As IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
    Public totalPacketsReceived As UInteger
    Public totalInvalidPacketsReceived As UInteger
    Public currentQueuedWorkitems As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IKEEXT_STATISTICS1
    Public ikeStatistics As IKEEXT_KEYMODULE_STATISTICS1
    Public authipStatistics As IKEEXT_KEYMODULE_STATISTICS1
    Public ikeV2Statistics As IKEEXT_KEYMODULE_STATISTICS1
    Public commonStatistics As IKEEXT_COMMON_STATISTICS1
End Structure
import ctypes
from ctypes import wintypes

class IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1(ctypes.Structure):
    _fields_ = [
        ("currentActiveMainModes", wintypes.DWORD),
        ("totalMainModesStarted", wintypes.DWORD),
        ("totalSuccessfulMainModes", wintypes.DWORD),
        ("totalFailedMainModes", wintypes.DWORD),
        ("totalResponderMainModes", wintypes.DWORD),
        ("currentNewResponderMainModes", wintypes.DWORD),
        ("currentActiveQuickModes", wintypes.DWORD),
        ("totalQuickModesStarted", wintypes.DWORD),
        ("totalSuccessfulQuickModes", wintypes.DWORD),
        ("totalFailedQuickModes", wintypes.DWORD),
        ("totalAcquires", wintypes.DWORD),
        ("totalReinitAcquires", wintypes.DWORD),
        ("currentActiveExtendedModes", wintypes.DWORD),
        ("totalExtendedModesStarted", wintypes.DWORD),
        ("totalSuccessfulExtendedModes", wintypes.DWORD),
        ("totalFailedExtendedModes", wintypes.DWORD),
        ("totalImpersonationExtendedModes", wintypes.DWORD),
        ("totalImpersonationMainModes", wintypes.DWORD),
    ]

class IKEEXT_KEYMODULE_STATISTICS1(ctypes.Structure):
    _fields_ = [
        ("v4Statistics", IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1),
        ("v6Statistics", IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1),
        ("errorFrequencyTable", wintypes.DWORD * 97),
        ("mainModeNegotiationTime", wintypes.DWORD),
        ("quickModeNegotiationTime", wintypes.DWORD),
        ("extendedModeNegotiationTime", wintypes.DWORD),
    ]

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

class IKEEXT_COMMON_STATISTICS1(ctypes.Structure):
    _fields_ = [
        ("v4Statistics", IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1),
        ("v6Statistics", IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1),
        ("totalPacketsReceived", wintypes.DWORD),
        ("totalInvalidPacketsReceived", wintypes.DWORD),
        ("currentQueuedWorkitems", wintypes.DWORD),
    ]

class IKEEXT_STATISTICS1(ctypes.Structure):
    _fields_ = [
        ("ikeStatistics", IKEEXT_KEYMODULE_STATISTICS1),
        ("authipStatistics", IKEEXT_KEYMODULE_STATISTICS1),
        ("ikeV2Statistics", IKEEXT_KEYMODULE_STATISTICS1),
        ("commonStatistics", IKEEXT_COMMON_STATISTICS1),
    ]
#[repr(C)]
pub struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 {
    pub currentActiveMainModes: u32,
    pub totalMainModesStarted: u32,
    pub totalSuccessfulMainModes: u32,
    pub totalFailedMainModes: u32,
    pub totalResponderMainModes: u32,
    pub currentNewResponderMainModes: u32,
    pub currentActiveQuickModes: u32,
    pub totalQuickModesStarted: u32,
    pub totalSuccessfulQuickModes: u32,
    pub totalFailedQuickModes: u32,
    pub totalAcquires: u32,
    pub totalReinitAcquires: u32,
    pub currentActiveExtendedModes: u32,
    pub totalExtendedModesStarted: u32,
    pub totalSuccessfulExtendedModes: u32,
    pub totalFailedExtendedModes: u32,
    pub totalImpersonationExtendedModes: u32,
    pub totalImpersonationMainModes: u32,
}

#[repr(C)]
pub struct IKEEXT_KEYMODULE_STATISTICS1 {
    pub v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1,
    pub v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1,
    pub errorFrequencyTable: [u32; 97],
    pub mainModeNegotiationTime: u32,
    pub quickModeNegotiationTime: u32,
    pub extendedModeNegotiationTime: u32,
}

#[repr(C)]
pub struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 {
    pub totalSocketReceiveFailures: u32,
    pub totalSocketSendFailures: u32,
}

#[repr(C)]
pub struct IKEEXT_COMMON_STATISTICS1 {
    pub v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1,
    pub v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1,
    pub totalPacketsReceived: u32,
    pub totalInvalidPacketsReceived: u32,
    pub currentQueuedWorkitems: u32,
}

#[repr(C)]
pub struct IKEEXT_STATISTICS1 {
    pub ikeStatistics: IKEEXT_KEYMODULE_STATISTICS1,
    pub authipStatistics: IKEEXT_KEYMODULE_STATISTICS1,
    pub ikeV2Statistics: IKEEXT_KEYMODULE_STATISTICS1,
    pub commonStatistics: IKEEXT_COMMON_STATISTICS1,
}
import "golang.org/x/sys/windows"

type IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 struct {
	currentActiveMainModes uint32
	totalMainModesStarted uint32
	totalSuccessfulMainModes uint32
	totalFailedMainModes uint32
	totalResponderMainModes uint32
	currentNewResponderMainModes uint32
	currentActiveQuickModes uint32
	totalQuickModesStarted uint32
	totalSuccessfulQuickModes uint32
	totalFailedQuickModes uint32
	totalAcquires uint32
	totalReinitAcquires uint32
	currentActiveExtendedModes uint32
	totalExtendedModesStarted uint32
	totalSuccessfulExtendedModes uint32
	totalFailedExtendedModes uint32
	totalImpersonationExtendedModes uint32
	totalImpersonationMainModes uint32
}

type IKEEXT_KEYMODULE_STATISTICS1 struct {
	v4Statistics IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
	v6Statistics IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
	errorFrequencyTable [97]uint32
	mainModeNegotiationTime uint32
	quickModeNegotiationTime uint32
	extendedModeNegotiationTime uint32
}

type IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 struct {
	totalSocketReceiveFailures uint32
	totalSocketSendFailures uint32
}

type IKEEXT_COMMON_STATISTICS1 struct {
	v4Statistics IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
	v6Statistics IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
	totalPacketsReceived uint32
	totalInvalidPacketsReceived uint32
	currentQueuedWorkitems uint32
}

type IKEEXT_STATISTICS1 struct {
	ikeStatistics IKEEXT_KEYMODULE_STATISTICS1
	authipStatistics IKEEXT_KEYMODULE_STATISTICS1
	ikeV2Statistics IKEEXT_KEYMODULE_STATISTICS1
	commonStatistics IKEEXT_COMMON_STATISTICS1
}
type
  IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 = record
    currentActiveMainModes: DWORD;
    totalMainModesStarted: DWORD;
    totalSuccessfulMainModes: DWORD;
    totalFailedMainModes: DWORD;
    totalResponderMainModes: DWORD;
    currentNewResponderMainModes: DWORD;
    currentActiveQuickModes: DWORD;
    totalQuickModesStarted: DWORD;
    totalSuccessfulQuickModes: DWORD;
    totalFailedQuickModes: DWORD;
    totalAcquires: DWORD;
    totalReinitAcquires: DWORD;
    currentActiveExtendedModes: DWORD;
    totalExtendedModesStarted: DWORD;
    totalSuccessfulExtendedModes: DWORD;
    totalFailedExtendedModes: DWORD;
    totalImpersonationExtendedModes: DWORD;
    totalImpersonationMainModes: DWORD;
  end;

  IKEEXT_KEYMODULE_STATISTICS1 = record
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1;
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1;
    errorFrequencyTable: array[0..96] of DWORD;
    mainModeNegotiationTime: DWORD;
    quickModeNegotiationTime: DWORD;
    extendedModeNegotiationTime: DWORD;
  end;

  IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 = record
    totalSocketReceiveFailures: DWORD;
    totalSocketSendFailures: DWORD;
  end;

  IKEEXT_COMMON_STATISTICS1 = record
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1;
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1;
    totalPacketsReceived: DWORD;
    totalInvalidPacketsReceived: DWORD;
    currentQueuedWorkitems: DWORD;
  end;

  IKEEXT_STATISTICS1 = record
    ikeStatistics: IKEEXT_KEYMODULE_STATISTICS1;
    authipStatistics: IKEEXT_KEYMODULE_STATISTICS1;
    ikeV2Statistics: IKEEXT_KEYMODULE_STATISTICS1;
    commonStatistics: IKEEXT_COMMON_STATISTICS1;
  end;
const IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 = extern struct {
    currentActiveMainModes: u32,
    totalMainModesStarted: u32,
    totalSuccessfulMainModes: u32,
    totalFailedMainModes: u32,
    totalResponderMainModes: u32,
    currentNewResponderMainModes: u32,
    currentActiveQuickModes: u32,
    totalQuickModesStarted: u32,
    totalSuccessfulQuickModes: u32,
    totalFailedQuickModes: u32,
    totalAcquires: u32,
    totalReinitAcquires: u32,
    currentActiveExtendedModes: u32,
    totalExtendedModesStarted: u32,
    totalSuccessfulExtendedModes: u32,
    totalFailedExtendedModes: u32,
    totalImpersonationExtendedModes: u32,
    totalImpersonationMainModes: u32,
};

const IKEEXT_KEYMODULE_STATISTICS1 = extern struct {
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1,
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1,
    errorFrequencyTable: [97]u32,
    mainModeNegotiationTime: u32,
    quickModeNegotiationTime: u32,
    extendedModeNegotiationTime: u32,
};

const IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 = extern struct {
    totalSocketReceiveFailures: u32,
    totalSocketSendFailures: u32,
};

const IKEEXT_COMMON_STATISTICS1 = extern struct {
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1,
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1,
    totalPacketsReceived: u32,
    totalInvalidPacketsReceived: u32,
    currentQueuedWorkitems: u32,
};

const IKEEXT_STATISTICS1 = extern struct {
    ikeStatistics: IKEEXT_KEYMODULE_STATISTICS1,
    authipStatistics: IKEEXT_KEYMODULE_STATISTICS1,
    ikeV2Statistics: IKEEXT_KEYMODULE_STATISTICS1,
    commonStatistics: IKEEXT_COMMON_STATISTICS1,
};
type
  IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 {.bycopy.} = object
    currentActiveMainModes: uint32
    totalMainModesStarted: uint32
    totalSuccessfulMainModes: uint32
    totalFailedMainModes: uint32
    totalResponderMainModes: uint32
    currentNewResponderMainModes: uint32
    currentActiveQuickModes: uint32
    totalQuickModesStarted: uint32
    totalSuccessfulQuickModes: uint32
    totalFailedQuickModes: uint32
    totalAcquires: uint32
    totalReinitAcquires: uint32
    currentActiveExtendedModes: uint32
    totalExtendedModesStarted: uint32
    totalSuccessfulExtendedModes: uint32
    totalFailedExtendedModes: uint32
    totalImpersonationExtendedModes: uint32
    totalImpersonationMainModes: uint32

  IKEEXT_KEYMODULE_STATISTICS1 {.bycopy.} = object
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
    errorFrequencyTable: array[97, uint32]
    mainModeNegotiationTime: uint32
    quickModeNegotiationTime: uint32
    extendedModeNegotiationTime: uint32

  IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 {.bycopy.} = object
    totalSocketReceiveFailures: uint32
    totalSocketSendFailures: uint32

  IKEEXT_COMMON_STATISTICS1 {.bycopy.} = object
    v4Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
    v6Statistics: IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
    totalPacketsReceived: uint32
    totalInvalidPacketsReceived: uint32
    currentQueuedWorkitems: uint32

  IKEEXT_STATISTICS1 {.bycopy.} = object
    ikeStatistics: IKEEXT_KEYMODULE_STATISTICS1
    authipStatistics: IKEEXT_KEYMODULE_STATISTICS1
    ikeV2Statistics: IKEEXT_KEYMODULE_STATISTICS1
    commonStatistics: IKEEXT_COMMON_STATISTICS1
struct IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
{
    uint currentActiveMainModes;
    uint totalMainModesStarted;
    uint totalSuccessfulMainModes;
    uint totalFailedMainModes;
    uint totalResponderMainModes;
    uint currentNewResponderMainModes;
    uint currentActiveQuickModes;
    uint totalQuickModesStarted;
    uint totalSuccessfulQuickModes;
    uint totalFailedQuickModes;
    uint totalAcquires;
    uint totalReinitAcquires;
    uint currentActiveExtendedModes;
    uint totalExtendedModesStarted;
    uint totalSuccessfulExtendedModes;
    uint totalFailedExtendedModes;
    uint totalImpersonationExtendedModes;
    uint totalImpersonationMainModes;
}

struct IKEEXT_KEYMODULE_STATISTICS1
{
    IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics;
    IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics;
    uint[97] errorFrequencyTable;
    uint mainModeNegotiationTime;
    uint quickModeNegotiationTime;
    uint extendedModeNegotiationTime;
}

struct IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
{
    uint totalSocketReceiveFailures;
    uint totalSocketSendFailures;
}

struct IKEEXT_COMMON_STATISTICS1
{
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics;
    IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics;
    uint totalPacketsReceived;
    uint totalInvalidPacketsReceived;
    uint currentQueuedWorkitems;
}

struct IKEEXT_STATISTICS1
{
    IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics;
    IKEEXT_KEYMODULE_STATISTICS1 authipStatistics;
    IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics;
    IKEEXT_COMMON_STATISTICS1 commonStatistics;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IKEEXT_STATISTICS1 サイズ: 1660 バイト(x64)
dim st, 415    ; 4byte整数×415(構造体サイズ 1660 / 4 切り上げ)
; ikeStatistics : IKEEXT_KEYMODULE_STATISTICS1 (+0, 544byte)  varptr(st)+0 を基点に操作(544byte:入れ子/配列)
; authipStatistics : IKEEXT_KEYMODULE_STATISTICS1 (+544, 544byte)  varptr(st)+544 を基点に操作(544byte:入れ子/配列)
; ikeV2Statistics : IKEEXT_KEYMODULE_STATISTICS1 (+1088, 544byte)  varptr(st)+1088 を基点に操作(544byte:入れ子/配列)
; commonStatistics : IKEEXT_COMMON_STATISTICS1 (+1632, 28byte)  varptr(st)+1632 を基点に操作(28byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1
    #field int currentActiveMainModes
    #field int totalMainModesStarted
    #field int totalSuccessfulMainModes
    #field int totalFailedMainModes
    #field int totalResponderMainModes
    #field int currentNewResponderMainModes
    #field int currentActiveQuickModes
    #field int totalQuickModesStarted
    #field int totalSuccessfulQuickModes
    #field int totalFailedQuickModes
    #field int totalAcquires
    #field int totalReinitAcquires
    #field int currentActiveExtendedModes
    #field int totalExtendedModesStarted
    #field int totalSuccessfulExtendedModes
    #field int totalFailedExtendedModes
    #field int totalImpersonationExtendedModes
    #field int totalImpersonationMainModes
#endstruct

#defstruct global IKEEXT_KEYMODULE_STATISTICS1
    #field IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v4Statistics
    #field IKEEXT_IP_VERSION_SPECIFIC_KEYMODULE_STATISTICS1 v6Statistics
    #field int errorFrequencyTable 97
    #field int mainModeNegotiationTime
    #field int quickModeNegotiationTime
    #field int extendedModeNegotiationTime
#endstruct

#defstruct global IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1
    #field int totalSocketReceiveFailures
    #field int totalSocketSendFailures
#endstruct

#defstruct global IKEEXT_COMMON_STATISTICS1
    #field IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v4Statistics
    #field IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS1 v6Statistics
    #field int totalPacketsReceived
    #field int totalInvalidPacketsReceived
    #field int currentQueuedWorkitems
#endstruct

#defstruct global IKEEXT_STATISTICS1
    #field IKEEXT_KEYMODULE_STATISTICS1 ikeStatistics
    #field IKEEXT_KEYMODULE_STATISTICS1 authipStatistics
    #field IKEEXT_KEYMODULE_STATISTICS1 ikeV2Statistics
    #field IKEEXT_COMMON_STATISTICS1 commonStatistics
#endstruct

stdim st, IKEEXT_STATISTICS1        ; NSTRUCT 変数を確保