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

DHCP_MIB_INFO_V5

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

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

フィールド

フィールドサイズx64x86説明
DiscoversDWORD4+0+0受信したDHCPDISCOVERメッセージの累計数を示す。
OffersDWORD4+4+4送信したDHCPOFFERメッセージの累計数を示す。
RequestsDWORD4+8+8受信したDHCPREQUESTメッセージの累計数を示す。
AcksDWORD4+12+12送信したDHCPACKメッセージの累計数を示す。
NaksDWORD4+16+16送信したDHCPNAKメッセージの累計数を示す。
DeclinesDWORD4+20+20受信したDHCPDECLINEメッセージの累計数を示す。
ReleasesDWORD4+24+24受信したDHCPRELEASEメッセージの累計数を示す。
ServerStartTimeDATE_TIME8+28+28DHCPサーバーが起動した日時を示す。
QtnNumLeasesDWORD4+36+36検疫対象リースの総数を示す。
QtnPctQtnLeasesDWORD4+40+40全リースに占める検疫リースの割合(%)を示す。
QtnProbationLeasesDWORD4+44+44プロベーション状態のリース数を示す。
QtnNonQtnLeasesDWORD4+48+48非検疫リースの数を示す。
QtnExemptLeasesDWORD4+52+52検疫除外リースの数を示す。
QtnCapableClientsDWORD4+56+56検疫対応可能なクライアント数を示す。
QtnIASErrorsDWORD4+60+60検疫処理中に発生したIAS(NAP)エラーの数を示す。
DelayedOffersDWORD4+64+64遅延送信されたオファーの累計数を示す。
ScopesWithDelayedOffersDWORD4+68+68遅延オファーが設定されたスコープの数を示す。
ScopesDWORD4+72+72ScopeInfo配列に含まれるスコープ数を示す。
ScopeInfoSCOPE_MIB_INFO_V5*8/4+80+76各スコープのSCOPE_MIB_INFO_V5統計配列へのポインタ。

各言語での定義

#include <windows.h>

// DATE_TIME  (x64 8 / x86 8 バイト)
typedef struct DATE_TIME {
    DWORD dwLowDateTime;
    DWORD dwHighDateTime;
} DATE_TIME;

// DHCP_MIB_INFO_V5  (x64 88 / x86 80 バイト)
typedef struct DHCP_MIB_INFO_V5 {
    DWORD Discovers;
    DWORD Offers;
    DWORD Requests;
    DWORD Acks;
    DWORD Naks;
    DWORD Declines;
    DWORD Releases;
    DATE_TIME ServerStartTime;
    DWORD QtnNumLeases;
    DWORD QtnPctQtnLeases;
    DWORD QtnProbationLeases;
    DWORD QtnNonQtnLeases;
    DWORD QtnExemptLeases;
    DWORD QtnCapableClients;
    DWORD QtnIASErrors;
    DWORD DelayedOffers;
    DWORD ScopesWithDelayedOffers;
    DWORD Scopes;
    SCOPE_MIB_INFO_V5* ScopeInfo;
} DHCP_MIB_INFO_V5;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DATE_TIME
{
    public uint dwLowDateTime;
    public uint dwHighDateTime;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DHCP_MIB_INFO_V5
{
    public uint Discovers;
    public uint Offers;
    public uint Requests;
    public uint Acks;
    public uint Naks;
    public uint Declines;
    public uint Releases;
    public DATE_TIME ServerStartTime;
    public uint QtnNumLeases;
    public uint QtnPctQtnLeases;
    public uint QtnProbationLeases;
    public uint QtnNonQtnLeases;
    public uint QtnExemptLeases;
    public uint QtnCapableClients;
    public uint QtnIASErrors;
    public uint DelayedOffers;
    public uint ScopesWithDelayedOffers;
    public uint Scopes;
    public IntPtr ScopeInfo;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DATE_TIME
    Public dwLowDateTime As UInteger
    Public dwHighDateTime As UInteger
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DHCP_MIB_INFO_V5
    Public Discovers As UInteger
    Public Offers As UInteger
    Public Requests As UInteger
    Public Acks As UInteger
    Public Naks As UInteger
    Public Declines As UInteger
    Public Releases As UInteger
    Public ServerStartTime As DATE_TIME
    Public QtnNumLeases As UInteger
    Public QtnPctQtnLeases As UInteger
    Public QtnProbationLeases As UInteger
    Public QtnNonQtnLeases As UInteger
    Public QtnExemptLeases As UInteger
    Public QtnCapableClients As UInteger
    Public QtnIASErrors As UInteger
    Public DelayedOffers As UInteger
    Public ScopesWithDelayedOffers As UInteger
    Public Scopes As UInteger
    Public ScopeInfo As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class DATE_TIME(ctypes.Structure):
    _fields_ = [
        ("dwLowDateTime", wintypes.DWORD),
        ("dwHighDateTime", wintypes.DWORD),
    ]

class DHCP_MIB_INFO_V5(ctypes.Structure):
    _fields_ = [
        ("Discovers", wintypes.DWORD),
        ("Offers", wintypes.DWORD),
        ("Requests", wintypes.DWORD),
        ("Acks", wintypes.DWORD),
        ("Naks", wintypes.DWORD),
        ("Declines", wintypes.DWORD),
        ("Releases", wintypes.DWORD),
        ("ServerStartTime", DATE_TIME),
        ("QtnNumLeases", wintypes.DWORD),
        ("QtnPctQtnLeases", wintypes.DWORD),
        ("QtnProbationLeases", wintypes.DWORD),
        ("QtnNonQtnLeases", wintypes.DWORD),
        ("QtnExemptLeases", wintypes.DWORD),
        ("QtnCapableClients", wintypes.DWORD),
        ("QtnIASErrors", wintypes.DWORD),
        ("DelayedOffers", wintypes.DWORD),
        ("ScopesWithDelayedOffers", wintypes.DWORD),
        ("Scopes", wintypes.DWORD),
        ("ScopeInfo", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct DATE_TIME {
    pub dwLowDateTime: u32,
    pub dwHighDateTime: u32,
}

#[repr(C)]
pub struct DHCP_MIB_INFO_V5 {
    pub Discovers: u32,
    pub Offers: u32,
    pub Requests: u32,
    pub Acks: u32,
    pub Naks: u32,
    pub Declines: u32,
    pub Releases: u32,
    pub ServerStartTime: DATE_TIME,
    pub QtnNumLeases: u32,
    pub QtnPctQtnLeases: u32,
    pub QtnProbationLeases: u32,
    pub QtnNonQtnLeases: u32,
    pub QtnExemptLeases: u32,
    pub QtnCapableClients: u32,
    pub QtnIASErrors: u32,
    pub DelayedOffers: u32,
    pub ScopesWithDelayedOffers: u32,
    pub Scopes: u32,
    pub ScopeInfo: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type DATE_TIME struct {
	dwLowDateTime uint32
	dwHighDateTime uint32
}

type DHCP_MIB_INFO_V5 struct {
	Discovers uint32
	Offers uint32
	Requests uint32
	Acks uint32
	Naks uint32
	Declines uint32
	Releases uint32
	ServerStartTime DATE_TIME
	QtnNumLeases uint32
	QtnPctQtnLeases uint32
	QtnProbationLeases uint32
	QtnNonQtnLeases uint32
	QtnExemptLeases uint32
	QtnCapableClients uint32
	QtnIASErrors uint32
	DelayedOffers uint32
	ScopesWithDelayedOffers uint32
	Scopes uint32
	ScopeInfo uintptr
}
type
  DATE_TIME = record
    dwLowDateTime: DWORD;
    dwHighDateTime: DWORD;
  end;

  DHCP_MIB_INFO_V5 = record
    Discovers: DWORD;
    Offers: DWORD;
    Requests: DWORD;
    Acks: DWORD;
    Naks: DWORD;
    Declines: DWORD;
    Releases: DWORD;
    ServerStartTime: DATE_TIME;
    QtnNumLeases: DWORD;
    QtnPctQtnLeases: DWORD;
    QtnProbationLeases: DWORD;
    QtnNonQtnLeases: DWORD;
    QtnExemptLeases: DWORD;
    QtnCapableClients: DWORD;
    QtnIASErrors: DWORD;
    DelayedOffers: DWORD;
    ScopesWithDelayedOffers: DWORD;
    Scopes: DWORD;
    ScopeInfo: Pointer;
  end;
const DATE_TIME = extern struct {
    dwLowDateTime: u32,
    dwHighDateTime: u32,
};

const DHCP_MIB_INFO_V5 = extern struct {
    Discovers: u32,
    Offers: u32,
    Requests: u32,
    Acks: u32,
    Naks: u32,
    Declines: u32,
    Releases: u32,
    ServerStartTime: DATE_TIME,
    QtnNumLeases: u32,
    QtnPctQtnLeases: u32,
    QtnProbationLeases: u32,
    QtnNonQtnLeases: u32,
    QtnExemptLeases: u32,
    QtnCapableClients: u32,
    QtnIASErrors: u32,
    DelayedOffers: u32,
    ScopesWithDelayedOffers: u32,
    Scopes: u32,
    ScopeInfo: ?*anyopaque,
};
type
  DATE_TIME {.bycopy.} = object
    dwLowDateTime: uint32
    dwHighDateTime: uint32

  DHCP_MIB_INFO_V5 {.bycopy.} = object
    Discovers: uint32
    Offers: uint32
    Requests: uint32
    Acks: uint32
    Naks: uint32
    Declines: uint32
    Releases: uint32
    ServerStartTime: DATE_TIME
    QtnNumLeases: uint32
    QtnPctQtnLeases: uint32
    QtnProbationLeases: uint32
    QtnNonQtnLeases: uint32
    QtnExemptLeases: uint32
    QtnCapableClients: uint32
    QtnIASErrors: uint32
    DelayedOffers: uint32
    ScopesWithDelayedOffers: uint32
    Scopes: uint32
    ScopeInfo: pointer
struct DATE_TIME
{
    uint dwLowDateTime;
    uint dwHighDateTime;
}

struct DHCP_MIB_INFO_V5
{
    uint Discovers;
    uint Offers;
    uint Requests;
    uint Acks;
    uint Naks;
    uint Declines;
    uint Releases;
    DATE_TIME ServerStartTime;
    uint QtnNumLeases;
    uint QtnPctQtnLeases;
    uint QtnProbationLeases;
    uint QtnNonQtnLeases;
    uint QtnExemptLeases;
    uint QtnCapableClients;
    uint QtnIASErrors;
    uint DelayedOffers;
    uint ScopesWithDelayedOffers;
    uint Scopes;
    void* ScopeInfo;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DHCP_MIB_INFO_V5 サイズ: 80 バイト(x86)
dim st, 20    ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; Discovers : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Offers : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; Requests : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; Acks : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; Naks : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; Declines : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Releases : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ServerStartTime : DATE_TIME (+28, 8byte)  varptr(st)+28 を基点に操作(8byte:入れ子/配列)
; QtnNumLeases : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; QtnPctQtnLeases : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; QtnProbationLeases : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; QtnNonQtnLeases : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; QtnExemptLeases : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; QtnCapableClients : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; QtnIASErrors : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; DelayedOffers : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; ScopesWithDelayedOffers : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; Scopes : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; ScopeInfo : SCOPE_MIB_INFO_V5* (+76, 4byte)  varptr(st)+76 を基点に操作(4byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DHCP_MIB_INFO_V5 サイズ: 88 バイト(x64)
dim st, 22    ; 4byte整数×22(構造体サイズ 88 / 4 切り上げ)
; Discovers : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Offers : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; Requests : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; Acks : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; Naks : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; Declines : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; Releases : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; ServerStartTime : DATE_TIME (+28, 8byte)  varptr(st)+28 を基点に操作(8byte:入れ子/配列)
; QtnNumLeases : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; QtnPctQtnLeases : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; QtnProbationLeases : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; QtnNonQtnLeases : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; QtnExemptLeases : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; QtnCapableClients : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; QtnIASErrors : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; DelayedOffers : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; ScopesWithDelayedOffers : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; Scopes : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; ScopeInfo : SCOPE_MIB_INFO_V5* (+80, 8byte)  varptr(st)+80 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global DATE_TIME
    #field int dwLowDateTime
    #field int dwHighDateTime
#endstruct

#defstruct global DHCP_MIB_INFO_V5
    #field int Discovers
    #field int Offers
    #field int Requests
    #field int Acks
    #field int Naks
    #field int Declines
    #field int Releases
    #field DATE_TIME ServerStartTime
    #field int QtnNumLeases
    #field int QtnPctQtnLeases
    #field int QtnProbationLeases
    #field int QtnNonQtnLeases
    #field int QtnExemptLeases
    #field int QtnCapableClients
    #field int QtnIASErrors
    #field int DelayedOffers
    #field int ScopesWithDelayedOffers
    #field int Scopes
    #field intptr ScopeInfo
#endstruct

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