ホーム › NetworkManagement.WindowsFilteringPlatform › IKEEXT_COMMON_STATISTICS0
IKEEXT_COMMON_STATISTICS0
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| v4Statistics | IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 | 8 | +0 | +0 | IPv4に関する共通統計(ソケット失敗数等)。 |
| v6Statistics | IKEEXT_IP_VERSION_SPECIFIC_COMMON_STATISTICS0 | 8 | +8 | +8 | IPv6に関する共通統計(ソケット失敗数等)。 |
| totalPacketsReceived | DWORD | 4 | +16 | +16 | 受信したIKE/AuthIPパケットの累計数。 |
| totalInvalidPacketsReceived | DWORD | 4 | +20 | +20 | 受信した無効パケットの累計数。 |
| currentQueuedWorkitems | DWORD | 4 | +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 Structureimport 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: uint32struct 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