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

DHCP_PERF_STATS

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

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

フィールド

フィールドサイズx64x86説明
dwNumPacketsReceivedDWORD4+0+0受信した総パケット数を示す。
dwNumPacketsDuplicateDWORD4+4+4重複受信したパケット数を示す。
dwNumPacketsExpiredDWORD4+8+8処理前に期限切れとなったパケット数を示す。
dwNumMilliSecondsProcessedDWORD4+12+12パケット処理に要した総時間をミリ秒で示す。
dwNumPacketsInActiveQueueDWORD4+16+16アクティブキュー内のパケット数を示す。
dwNumPacketsInPingQueueDWORD4+20+20ping(競合検査)キュー内のパケット数を示す。
dwNumDiscoversReceivedDWORD4+24+24受信したDISCOVERパケット数を示す。
dwNumOffersSentDWORD4+28+28送信したOFFERパケット数を示す。
dwNumRequestsReceivedDWORD4+32+32受信したREQUESTパケット数を示す。
dwNumInformsReceivedDWORD4+36+36受信したINFORMパケット数を示す。
dwNumAcksSentDWORD4+40+40送信したACKパケット数を示す。
dwNumNacksSentDWORD4+44+44送信したNAKパケット数を示す。
dwNumDeclinesReceivedDWORD4+48+48受信したDECLINEパケット数を示す。
dwNumReleasesReceivedDWORD4+52+52受信したRELEASEパケット数を示す。
dwNumDelayedOfferInQueueDWORD4+56+56遅延オファーキュー内のパケット数を示す。
dwNumPacketsProcessedDWORD4+60+60処理が完了した総パケット数を示す。
dwNumPacketsInQuarWaitingQueueDWORD4+64+64検疫待機キュー内のパケット数を示す。
dwNumPacketsInQuarReadyQueueDWORD4+68+68検疫処理準備キュー内のパケット数を示す。
dwNumPacketsInQuarDecisionQueueDWORD4+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 Structure
import 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: uint32
struct 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