ホーム › NetworkManagement.Dhcp › DHCP_PERF_STATS
DHCP_PERF_STATS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwNumPacketsReceived | DWORD | 4 | +0 | +0 | 受信した総パケット数を示す。 |
| dwNumPacketsDuplicate | DWORD | 4 | +4 | +4 | 重複受信したパケット数を示す。 |
| dwNumPacketsExpired | DWORD | 4 | +8 | +8 | 処理前に期限切れとなったパケット数を示す。 |
| dwNumMilliSecondsProcessed | DWORD | 4 | +12 | +12 | パケット処理に要した総時間をミリ秒で示す。 |
| dwNumPacketsInActiveQueue | DWORD | 4 | +16 | +16 | アクティブキュー内のパケット数を示す。 |
| dwNumPacketsInPingQueue | DWORD | 4 | +20 | +20 | ping(競合検査)キュー内のパケット数を示す。 |
| dwNumDiscoversReceived | DWORD | 4 | +24 | +24 | 受信したDISCOVERパケット数を示す。 |
| dwNumOffersSent | DWORD | 4 | +28 | +28 | 送信したOFFERパケット数を示す。 |
| dwNumRequestsReceived | DWORD | 4 | +32 | +32 | 受信したREQUESTパケット数を示す。 |
| dwNumInformsReceived | DWORD | 4 | +36 | +36 | 受信したINFORMパケット数を示す。 |
| dwNumAcksSent | DWORD | 4 | +40 | +40 | 送信したACKパケット数を示す。 |
| dwNumNacksSent | DWORD | 4 | +44 | +44 | 送信したNAKパケット数を示す。 |
| dwNumDeclinesReceived | DWORD | 4 | +48 | +48 | 受信したDECLINEパケット数を示す。 |
| dwNumReleasesReceived | DWORD | 4 | +52 | +52 | 受信したRELEASEパケット数を示す。 |
| dwNumDelayedOfferInQueue | DWORD | 4 | +56 | +56 | 遅延オファーキュー内のパケット数を示す。 |
| dwNumPacketsProcessed | DWORD | 4 | +60 | +60 | 処理が完了した総パケット数を示す。 |
| dwNumPacketsInQuarWaitingQueue | DWORD | 4 | +64 | +64 | 検疫待機キュー内のパケット数を示す。 |
| dwNumPacketsInQuarReadyQueue | DWORD | 4 | +68 | +68 | 検疫処理準備キュー内のパケット数を示す。 |
| dwNumPacketsInQuarDecisionQueue | DWORD | 4 | +72 | +72 | 検疫判定キュー内のパケット数を示す。 |
各言語での定義
#include <windows.h>
// DHCP_PERF_STATS (x64 76 / x86 76 バイト)
typedef struct DHCP_PERF_STATS {
DWORD dwNumPacketsReceived;
DWORD dwNumPacketsDuplicate;
DWORD dwNumPacketsExpired;
DWORD dwNumMilliSecondsProcessed;
DWORD dwNumPacketsInActiveQueue;
DWORD dwNumPacketsInPingQueue;
DWORD dwNumDiscoversReceived;
DWORD dwNumOffersSent;
DWORD dwNumRequestsReceived;
DWORD dwNumInformsReceived;
DWORD dwNumAcksSent;
DWORD dwNumNacksSent;
DWORD dwNumDeclinesReceived;
DWORD dwNumReleasesReceived;
DWORD dwNumDelayedOfferInQueue;
DWORD dwNumPacketsProcessed;
DWORD dwNumPacketsInQuarWaitingQueue;
DWORD dwNumPacketsInQuarReadyQueue;
DWORD dwNumPacketsInQuarDecisionQueue;
} DHCP_PERF_STATS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DHCP_PERF_STATS
{
public uint dwNumPacketsReceived;
public uint dwNumPacketsDuplicate;
public uint dwNumPacketsExpired;
public uint dwNumMilliSecondsProcessed;
public uint dwNumPacketsInActiveQueue;
public uint dwNumPacketsInPingQueue;
public uint dwNumDiscoversReceived;
public uint dwNumOffersSent;
public uint dwNumRequestsReceived;
public uint dwNumInformsReceived;
public uint dwNumAcksSent;
public uint dwNumNacksSent;
public uint dwNumDeclinesReceived;
public uint dwNumReleasesReceived;
public uint dwNumDelayedOfferInQueue;
public uint dwNumPacketsProcessed;
public uint dwNumPacketsInQuarWaitingQueue;
public uint dwNumPacketsInQuarReadyQueue;
public uint dwNumPacketsInQuarDecisionQueue;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DHCP_PERF_STATS
Public dwNumPacketsReceived As UInteger
Public dwNumPacketsDuplicate As UInteger
Public dwNumPacketsExpired As UInteger
Public dwNumMilliSecondsProcessed As UInteger
Public dwNumPacketsInActiveQueue As UInteger
Public dwNumPacketsInPingQueue As UInteger
Public dwNumDiscoversReceived As UInteger
Public dwNumOffersSent As UInteger
Public dwNumRequestsReceived As UInteger
Public dwNumInformsReceived As UInteger
Public dwNumAcksSent As UInteger
Public dwNumNacksSent As UInteger
Public dwNumDeclinesReceived As UInteger
Public dwNumReleasesReceived As UInteger
Public dwNumDelayedOfferInQueue As UInteger
Public dwNumPacketsProcessed As UInteger
Public dwNumPacketsInQuarWaitingQueue As UInteger
Public dwNumPacketsInQuarReadyQueue As UInteger
Public dwNumPacketsInQuarDecisionQueue As UInteger
End Structureimport ctypes
from ctypes import wintypes
class DHCP_PERF_STATS(ctypes.Structure):
_fields_ = [
("dwNumPacketsReceived", wintypes.DWORD),
("dwNumPacketsDuplicate", wintypes.DWORD),
("dwNumPacketsExpired", wintypes.DWORD),
("dwNumMilliSecondsProcessed", wintypes.DWORD),
("dwNumPacketsInActiveQueue", wintypes.DWORD),
("dwNumPacketsInPingQueue", wintypes.DWORD),
("dwNumDiscoversReceived", wintypes.DWORD),
("dwNumOffersSent", wintypes.DWORD),
("dwNumRequestsReceived", wintypes.DWORD),
("dwNumInformsReceived", wintypes.DWORD),
("dwNumAcksSent", wintypes.DWORD),
("dwNumNacksSent", wintypes.DWORD),
("dwNumDeclinesReceived", wintypes.DWORD),
("dwNumReleasesReceived", wintypes.DWORD),
("dwNumDelayedOfferInQueue", wintypes.DWORD),
("dwNumPacketsProcessed", wintypes.DWORD),
("dwNumPacketsInQuarWaitingQueue", wintypes.DWORD),
("dwNumPacketsInQuarReadyQueue", wintypes.DWORD),
("dwNumPacketsInQuarDecisionQueue", wintypes.DWORD),
]#[repr(C)]
pub struct DHCP_PERF_STATS {
pub dwNumPacketsReceived: u32,
pub dwNumPacketsDuplicate: u32,
pub dwNumPacketsExpired: u32,
pub dwNumMilliSecondsProcessed: u32,
pub dwNumPacketsInActiveQueue: u32,
pub dwNumPacketsInPingQueue: u32,
pub dwNumDiscoversReceived: u32,
pub dwNumOffersSent: u32,
pub dwNumRequestsReceived: u32,
pub dwNumInformsReceived: u32,
pub dwNumAcksSent: u32,
pub dwNumNacksSent: u32,
pub dwNumDeclinesReceived: u32,
pub dwNumReleasesReceived: u32,
pub dwNumDelayedOfferInQueue: u32,
pub dwNumPacketsProcessed: u32,
pub dwNumPacketsInQuarWaitingQueue: u32,
pub dwNumPacketsInQuarReadyQueue: u32,
pub dwNumPacketsInQuarDecisionQueue: u32,
}import "golang.org/x/sys/windows"
type DHCP_PERF_STATS struct {
dwNumPacketsReceived uint32
dwNumPacketsDuplicate uint32
dwNumPacketsExpired uint32
dwNumMilliSecondsProcessed uint32
dwNumPacketsInActiveQueue uint32
dwNumPacketsInPingQueue uint32
dwNumDiscoversReceived uint32
dwNumOffersSent uint32
dwNumRequestsReceived uint32
dwNumInformsReceived uint32
dwNumAcksSent uint32
dwNumNacksSent uint32
dwNumDeclinesReceived uint32
dwNumReleasesReceived uint32
dwNumDelayedOfferInQueue uint32
dwNumPacketsProcessed uint32
dwNumPacketsInQuarWaitingQueue uint32
dwNumPacketsInQuarReadyQueue uint32
dwNumPacketsInQuarDecisionQueue uint32
}type
DHCP_PERF_STATS = record
dwNumPacketsReceived: DWORD;
dwNumPacketsDuplicate: DWORD;
dwNumPacketsExpired: DWORD;
dwNumMilliSecondsProcessed: DWORD;
dwNumPacketsInActiveQueue: DWORD;
dwNumPacketsInPingQueue: DWORD;
dwNumDiscoversReceived: DWORD;
dwNumOffersSent: DWORD;
dwNumRequestsReceived: DWORD;
dwNumInformsReceived: DWORD;
dwNumAcksSent: DWORD;
dwNumNacksSent: DWORD;
dwNumDeclinesReceived: DWORD;
dwNumReleasesReceived: DWORD;
dwNumDelayedOfferInQueue: DWORD;
dwNumPacketsProcessed: DWORD;
dwNumPacketsInQuarWaitingQueue: DWORD;
dwNumPacketsInQuarReadyQueue: DWORD;
dwNumPacketsInQuarDecisionQueue: DWORD;
end;const DHCP_PERF_STATS = extern struct {
dwNumPacketsReceived: u32,
dwNumPacketsDuplicate: u32,
dwNumPacketsExpired: u32,
dwNumMilliSecondsProcessed: u32,
dwNumPacketsInActiveQueue: u32,
dwNumPacketsInPingQueue: u32,
dwNumDiscoversReceived: u32,
dwNumOffersSent: u32,
dwNumRequestsReceived: u32,
dwNumInformsReceived: u32,
dwNumAcksSent: u32,
dwNumNacksSent: u32,
dwNumDeclinesReceived: u32,
dwNumReleasesReceived: u32,
dwNumDelayedOfferInQueue: u32,
dwNumPacketsProcessed: u32,
dwNumPacketsInQuarWaitingQueue: u32,
dwNumPacketsInQuarReadyQueue: u32,
dwNumPacketsInQuarDecisionQueue: u32,
};type
DHCP_PERF_STATS {.bycopy.} = object
dwNumPacketsReceived: uint32
dwNumPacketsDuplicate: uint32
dwNumPacketsExpired: uint32
dwNumMilliSecondsProcessed: uint32
dwNumPacketsInActiveQueue: uint32
dwNumPacketsInPingQueue: uint32
dwNumDiscoversReceived: uint32
dwNumOffersSent: uint32
dwNumRequestsReceived: uint32
dwNumInformsReceived: uint32
dwNumAcksSent: uint32
dwNumNacksSent: uint32
dwNumDeclinesReceived: uint32
dwNumReleasesReceived: uint32
dwNumDelayedOfferInQueue: uint32
dwNumPacketsProcessed: uint32
dwNumPacketsInQuarWaitingQueue: uint32
dwNumPacketsInQuarReadyQueue: uint32
dwNumPacketsInQuarDecisionQueue: uint32struct DHCP_PERF_STATS
{
uint dwNumPacketsReceived;
uint dwNumPacketsDuplicate;
uint dwNumPacketsExpired;
uint dwNumMilliSecondsProcessed;
uint dwNumPacketsInActiveQueue;
uint dwNumPacketsInPingQueue;
uint dwNumDiscoversReceived;
uint dwNumOffersSent;
uint dwNumRequestsReceived;
uint dwNumInformsReceived;
uint dwNumAcksSent;
uint dwNumNacksSent;
uint dwNumDeclinesReceived;
uint dwNumReleasesReceived;
uint dwNumDelayedOfferInQueue;
uint dwNumPacketsProcessed;
uint dwNumPacketsInQuarWaitingQueue;
uint dwNumPacketsInQuarReadyQueue;
uint dwNumPacketsInQuarDecisionQueue;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DHCP_PERF_STATS サイズ: 76 バイト(x64)
dim st, 19 ; 4byte整数×19(構造体サイズ 76 / 4 切り上げ)
; dwNumPacketsReceived : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; dwNumPacketsDuplicate : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwNumPacketsExpired : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwNumMilliSecondsProcessed : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwNumPacketsInActiveQueue : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwNumPacketsInPingQueue : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwNumDiscoversReceived : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwNumOffersSent : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwNumRequestsReceived : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; dwNumInformsReceived : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; dwNumAcksSent : DWORD (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; dwNumNacksSent : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; dwNumDeclinesReceived : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; dwNumReleasesReceived : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; dwNumDelayedOfferInQueue : DWORD (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; dwNumPacketsProcessed : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; dwNumPacketsInQuarWaitingQueue : DWORD (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; dwNumPacketsInQuarReadyQueue : DWORD (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; dwNumPacketsInQuarDecisionQueue : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DHCP_PERF_STATS
#field int dwNumPacketsReceived
#field int dwNumPacketsDuplicate
#field int dwNumPacketsExpired
#field int dwNumMilliSecondsProcessed
#field int dwNumPacketsInActiveQueue
#field int dwNumPacketsInPingQueue
#field int dwNumDiscoversReceived
#field int dwNumOffersSent
#field int dwNumRequestsReceived
#field int dwNumInformsReceived
#field int dwNumAcksSent
#field int dwNumNacksSent
#field int dwNumDeclinesReceived
#field int dwNumReleasesReceived
#field int dwNumDelayedOfferInQueue
#field int dwNumPacketsProcessed
#field int dwNumPacketsInQuarWaitingQueue
#field int dwNumPacketsInQuarReadyQueue
#field int dwNumPacketsInQuarDecisionQueue
#endstruct
stdim st, DHCP_PERF_STATS ; NSTRUCT 変数を確保
st->dwNumPacketsReceived = 100
mes "dwNumPacketsReceived=" + st->dwNumPacketsReceived