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

DHCPV4_FAILOVER_CLIENT_INFO

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

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

フィールド

フィールドサイズx64x86説明
ClientIpAddressDWORD4+0+0DHCPv4 クライアントの IPv4 アドレスを格納する DHCP_IP_ADDRESS 構造体です。
SubnetMaskDWORD4+4+4DHCPv4 クライアントの IPv4 サブネットマスクを格納する DHCP_IP_MASK 構造体です。
ClientHardwareAddressDHCP_BINARY_DATA16/8+8+8DHCPv4 クライアントのハードウェアアドレス (MAC アドレス) を格納する DHCP_CLIENT_UID 構造体です。
ClientNameLPWSTR8/4+24+16DHCPv4 クライアントのマシン名を表す、NULL で終わる Unicode 文字列へのポインターです。
ClientCommentLPWSTR8/4+32+20DHCPv4 クライアントの説明を表す、NULL で終わる Unicode 文字列へのポインターです。
ClientLeaseExpiresDATE_TIME8+40+24DHCPv4 クライアントのリースの有効期限を格納する DATE_TIME 構造体です。これは FILETIME 形式で表された UTC 時刻です。
OwnerHostDHCP_HOST_INFO24/12+48+32DHCPv4 クライアントにリースを提供したホストマシン (DHCPv4 サーバー) に関する情報を格納する DHCP_HOST_INFO 構造体です。
bClientTypeBYTE1+72+44

DHCPv4 クライアントの種類を指定する値です。取り得る値は次のとおりです。

意味
CLIENT_TYPE_UNSPECIFIED
0x00
DHCPv4 クライアントはサーバーデータベースに定義されていません。
CLIENT_TYPE_DHCP
0x01
DHCPv4 クライアントは DHCP プロトコルをサポートします。
CLIENT_TYPE_BOOTP
0x02
DHCPv4 クライアントは BOOTP プロトコルをサポートします。
CLIENT_TYPE_BOTH
0x03
DHCPv4 クライアントは DHCPv4 と BOOTP の両方のプロトコルをサポートします。
CLIENT_TYPE_RESERVATION_FLAG
0x04
DHCPv4 クライアント用に IPv4 予約が作成されています。
CLIENT_TYPE_NONE
0x64
手動アドレス指定に対する下位互換性のための値です。
AddressStateBYTE1+73+45

IPv4 アドレスのさまざまな状態を指定する値です。LSB がビット 0、MSB がビット 7 です。取り得る値は次のとおりです。

ビット 0 とビット 1 は、次の表に示すように DHCPv4 クライアントの IPv4 アドレスの状態を表します。

意味
ADDRESS_STATE_OFFERED
0x0
この IPv4 アドレスが DHCPv4 クライアントに提示されています。
ADDRESS_STATE_ACTIVE
0x1
IPv4 アドレスはアクティブであり、アクティブな DHCPv4 クライアントのリースレコードが存在します。
ADDRESS_STATE_DECLINED
0x2
IPv4 アドレスの要求が DHCPv4 クライアントによって拒否されました。そのため、これは不正な IPv4 アドレスです。
ADDRESS_STATE_DOOM
0x3
IPv4 アドレスは DOOMED 状態であり、削除される予定です。

ビット 2 とビット 3 は、次の表に示すようにリースされた IPv4 アドレスの名前保護 (Name Protection) に関連する情報を表します。

意味
ADDRESS_BIT_NO_DHCID
0x0
アドレスは、RFC4701 のセクション 3 および 3.5 で定義されている DHCID なしで DHCPv4 クライアントにリースされています。
ADDRESS_BIT_DHCID_NO_CLIENTIDOPTION
0x1
アドレスは、RFC4701 のセクション 3 および 3.5 で定義されている DHCID ありで、かつクライアント ID オプションなしで DHCPv4 クライアントにリースされています。
ADDRESS_BIT_DHCID_WITH_CLIENTIDOPTION
0x2
アドレスは、RFC4701 のセクション 3 および 3.5 で定義されている DHCID とクライアント ID オプションありで DHCPv4 クライアントにリースされています。
ADDRESS_BIT_DHCID_WITH_DUID
0x3
アドレスは、RFC4701 のセクション 3 および 3.5 で定義されている DHCID とクライアント DUID ありで DHCPv4 クライアントにリースされています。

ビット 4、ビット 5、ビット 6、ビット 7 は、次の表に示すように DNS に関連する情報を指定します。

意味
ADDRESS_BIT_CLEANUP
0x1
リースが削除されるときに、DHCPv4 クライアントのリースレコードに対する DNS 更新を DNS サーバーから削除する必要があります。
ADDRESS_BIT_BOTH_REC
0x2
DNS_A_DATADNS_PTR_DATA の両方の種類のリソースレコードについて DNS 更新を送信する必要があります。
ADDRESS_BIT_UNREGISTERED
0x4
リースレコードの DNS 更新が完了していません。
ADDRESS_BIT_DELETED
0x8
アドレスのリースは期限切れですが、そのリースレコードに対する DNS 更新が DNS サーバーから削除されていません。
StatusQuarantineStatus4+76+48NAP サーバーで検証された DHCPv4 クライアントの正常性状態として取り得る値を指定する QuarantineStatus 列挙型です。
ProbationEndsDATE_TIME8+80+52DHCPv4 クライアントが保護観察 (probation) 状態にある場合に、その終了時刻を格納する DATE_TIME 構造体です。この期間中、DHCPv4 クライアントはネットワークへのフルアクセスを持ちます。これは FILETIME 形式で表された UTC 時刻です。
QuarantineCapableBOOL4+88+60DHCPv4 クライアントが検疫 (quarantine) に対応している場合は TRUE、それ以外の場合は FALSE です。
SentPotExpTimeDWORD4+92+64パートナーサーバーに送信された potential-expiration-time (潜在的な有効期限) の時間 (秒単位)。
AckPotExpTimeDWORD4+96+68パートナーサーバーによって確認応答された potential-expiration-time (潜在的な有効期限) の時間 (秒単位)。
RecvPotExpTimeDWORD4+100+72パートナーサーバーから受信した potential-expiration-time (潜在的な有効期限) の時間 (秒単位)。
StartTimeDWORD4+104+76クライアントのリースが現在の状態に最初に移行してからの経過時間 (秒単位)。
CltLastTransTimeDWORD4+108+80client-last-transaction-time (クライアントの最終トランザクション時刻) からの経過時間 (秒単位)。
LastBndUpdTimeDWORD4+112+84パートナーサーバーが DHCPv4 クライアントのリースを最後に更新してからの経過時間 (秒単位)。
BndMsgStatusDWORD4+116+88予約済みです。使用しないでください。
PolicyNameLPWSTR8/4+120+92リースにおいて DHCPv4 クライアントへの IPv4 アドレス割り当ての要因となった DHCP サーバーポリシー名を表す、NULL で終わる Unicode 文字列へのポインターです。
FlagsBYTE1+128+96予約済みです。使用しないでください。

公式ドキュメント

DHCPV4_FAILOVER_CLIENT_INFO 構造体は、フェールオーバー関係の一部である DHCP サーバースコープの統計情報を定義します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// DHCP_BINARY_DATA  (x64 16 / x86 8 バイト)
typedef struct DHCP_BINARY_DATA {
    DWORD DataLength;
    BYTE* Data;
} DHCP_BINARY_DATA;

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

// DHCP_HOST_INFO  (x64 24 / x86 12 バイト)
typedef struct DHCP_HOST_INFO {
    DWORD IpAddress;
    LPWSTR NetBiosName;
    LPWSTR HostName;
} DHCP_HOST_INFO;

// DHCPV4_FAILOVER_CLIENT_INFO  (x64 136 / x86 100 バイト)
typedef struct DHCPV4_FAILOVER_CLIENT_INFO {
    DWORD ClientIpAddress;
    DWORD SubnetMask;
    DHCP_BINARY_DATA ClientHardwareAddress;
    LPWSTR ClientName;
    LPWSTR ClientComment;
    DATE_TIME ClientLeaseExpires;
    DHCP_HOST_INFO OwnerHost;
    BYTE bClientType;
    BYTE AddressState;
    QuarantineStatus Status;
    DATE_TIME ProbationEnds;
    BOOL QuarantineCapable;
    DWORD SentPotExpTime;
    DWORD AckPotExpTime;
    DWORD RecvPotExpTime;
    DWORD StartTime;
    DWORD CltLastTransTime;
    DWORD LastBndUpdTime;
    DWORD BndMsgStatus;
    LPWSTR PolicyName;
    BYTE Flags;
} DHCPV4_FAILOVER_CLIENT_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DHCP_BINARY_DATA
{
    public uint DataLength;
    public IntPtr Data;
}

[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_HOST_INFO
{
    public uint IpAddress;
    public IntPtr NetBiosName;
    public IntPtr HostName;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DHCPV4_FAILOVER_CLIENT_INFO
{
    public uint ClientIpAddress;
    public uint SubnetMask;
    public DHCP_BINARY_DATA ClientHardwareAddress;
    public IntPtr ClientName;
    public IntPtr ClientComment;
    public DATE_TIME ClientLeaseExpires;
    public DHCP_HOST_INFO OwnerHost;
    public byte bClientType;
    public byte AddressState;
    public int Status;
    public DATE_TIME ProbationEnds;
    [MarshalAs(UnmanagedType.Bool)] public bool QuarantineCapable;
    public uint SentPotExpTime;
    public uint AckPotExpTime;
    public uint RecvPotExpTime;
    public uint StartTime;
    public uint CltLastTransTime;
    public uint LastBndUpdTime;
    public uint BndMsgStatus;
    public IntPtr PolicyName;
    public byte Flags;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DHCP_BINARY_DATA
    Public DataLength As UInteger
    Public Data As IntPtr
End Structure

<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_HOST_INFO
    Public IpAddress As UInteger
    Public NetBiosName As IntPtr
    Public HostName As IntPtr
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DHCPV4_FAILOVER_CLIENT_INFO
    Public ClientIpAddress As UInteger
    Public SubnetMask As UInteger
    Public ClientHardwareAddress As DHCP_BINARY_DATA
    Public ClientName As IntPtr
    Public ClientComment As IntPtr
    Public ClientLeaseExpires As DATE_TIME
    Public OwnerHost As DHCP_HOST_INFO
    Public bClientType As Byte
    Public AddressState As Byte
    Public Status As Integer
    Public ProbationEnds As DATE_TIME
    <MarshalAs(UnmanagedType.Bool)> Public QuarantineCapable As Boolean
    Public SentPotExpTime As UInteger
    Public AckPotExpTime As UInteger
    Public RecvPotExpTime As UInteger
    Public StartTime As UInteger
    Public CltLastTransTime As UInteger
    Public LastBndUpdTime As UInteger
    Public BndMsgStatus As UInteger
    Public PolicyName As IntPtr
    Public Flags As Byte
End Structure
import ctypes
from ctypes import wintypes

class DHCP_BINARY_DATA(ctypes.Structure):
    _fields_ = [
        ("DataLength", wintypes.DWORD),
        ("Data", ctypes.c_void_p),
    ]

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

class DHCP_HOST_INFO(ctypes.Structure):
    _fields_ = [
        ("IpAddress", wintypes.DWORD),
        ("NetBiosName", ctypes.c_void_p),
        ("HostName", ctypes.c_void_p),
    ]

class DHCPV4_FAILOVER_CLIENT_INFO(ctypes.Structure):
    _fields_ = [
        ("ClientIpAddress", wintypes.DWORD),
        ("SubnetMask", wintypes.DWORD),
        ("ClientHardwareAddress", DHCP_BINARY_DATA),
        ("ClientName", ctypes.c_void_p),
        ("ClientComment", ctypes.c_void_p),
        ("ClientLeaseExpires", DATE_TIME),
        ("OwnerHost", DHCP_HOST_INFO),
        ("bClientType", ctypes.c_ubyte),
        ("AddressState", ctypes.c_ubyte),
        ("Status", ctypes.c_int),
        ("ProbationEnds", DATE_TIME),
        ("QuarantineCapable", wintypes.BOOL),
        ("SentPotExpTime", wintypes.DWORD),
        ("AckPotExpTime", wintypes.DWORD),
        ("RecvPotExpTime", wintypes.DWORD),
        ("StartTime", wintypes.DWORD),
        ("CltLastTransTime", wintypes.DWORD),
        ("LastBndUpdTime", wintypes.DWORD),
        ("BndMsgStatus", wintypes.DWORD),
        ("PolicyName", ctypes.c_void_p),
        ("Flags", ctypes.c_ubyte),
    ]
#[repr(C)]
pub struct DHCP_BINARY_DATA {
    pub DataLength: u32,
    pub Data: *mut core::ffi::c_void,
}

#[repr(C)]
pub struct DATE_TIME {
    pub dwLowDateTime: u32,
    pub dwHighDateTime: u32,
}

#[repr(C)]
pub struct DHCP_HOST_INFO {
    pub IpAddress: u32,
    pub NetBiosName: *mut core::ffi::c_void,
    pub HostName: *mut core::ffi::c_void,
}

#[repr(C)]
pub struct DHCPV4_FAILOVER_CLIENT_INFO {
    pub ClientIpAddress: u32,
    pub SubnetMask: u32,
    pub ClientHardwareAddress: DHCP_BINARY_DATA,
    pub ClientName: *mut core::ffi::c_void,
    pub ClientComment: *mut core::ffi::c_void,
    pub ClientLeaseExpires: DATE_TIME,
    pub OwnerHost: DHCP_HOST_INFO,
    pub bClientType: u8,
    pub AddressState: u8,
    pub Status: i32,
    pub ProbationEnds: DATE_TIME,
    pub QuarantineCapable: i32,
    pub SentPotExpTime: u32,
    pub AckPotExpTime: u32,
    pub RecvPotExpTime: u32,
    pub StartTime: u32,
    pub CltLastTransTime: u32,
    pub LastBndUpdTime: u32,
    pub BndMsgStatus: u32,
    pub PolicyName: *mut core::ffi::c_void,
    pub Flags: u8,
}
import "golang.org/x/sys/windows"

type DHCP_BINARY_DATA struct {
	DataLength uint32
	Data uintptr
}

type DATE_TIME struct {
	dwLowDateTime uint32
	dwHighDateTime uint32
}

type DHCP_HOST_INFO struct {
	IpAddress uint32
	NetBiosName uintptr
	HostName uintptr
}

type DHCPV4_FAILOVER_CLIENT_INFO struct {
	ClientIpAddress uint32
	SubnetMask uint32
	ClientHardwareAddress DHCP_BINARY_DATA
	ClientName uintptr
	ClientComment uintptr
	ClientLeaseExpires DATE_TIME
	OwnerHost DHCP_HOST_INFO
	bClientType byte
	AddressState byte
	Status int32
	ProbationEnds DATE_TIME
	QuarantineCapable int32
	SentPotExpTime uint32
	AckPotExpTime uint32
	RecvPotExpTime uint32
	StartTime uint32
	CltLastTransTime uint32
	LastBndUpdTime uint32
	BndMsgStatus uint32
	PolicyName uintptr
	Flags byte
}
type
  DHCP_BINARY_DATA = record
    DataLength: DWORD;
    Data: Pointer;
  end;

  DATE_TIME = record
    dwLowDateTime: DWORD;
    dwHighDateTime: DWORD;
  end;

  DHCP_HOST_INFO = record
    IpAddress: DWORD;
    NetBiosName: Pointer;
    HostName: Pointer;
  end;

  DHCPV4_FAILOVER_CLIENT_INFO = record
    ClientIpAddress: DWORD;
    SubnetMask: DWORD;
    ClientHardwareAddress: DHCP_BINARY_DATA;
    ClientName: Pointer;
    ClientComment: Pointer;
    ClientLeaseExpires: DATE_TIME;
    OwnerHost: DHCP_HOST_INFO;
    bClientType: Byte;
    AddressState: Byte;
    Status: Integer;
    ProbationEnds: DATE_TIME;
    QuarantineCapable: BOOL;
    SentPotExpTime: DWORD;
    AckPotExpTime: DWORD;
    RecvPotExpTime: DWORD;
    StartTime: DWORD;
    CltLastTransTime: DWORD;
    LastBndUpdTime: DWORD;
    BndMsgStatus: DWORD;
    PolicyName: Pointer;
    Flags: Byte;
  end;
const DHCP_BINARY_DATA = extern struct {
    DataLength: u32,
    Data: ?*anyopaque,
};

const DATE_TIME = extern struct {
    dwLowDateTime: u32,
    dwHighDateTime: u32,
};

const DHCP_HOST_INFO = extern struct {
    IpAddress: u32,
    NetBiosName: ?*anyopaque,
    HostName: ?*anyopaque,
};

const DHCPV4_FAILOVER_CLIENT_INFO = extern struct {
    ClientIpAddress: u32,
    SubnetMask: u32,
    ClientHardwareAddress: DHCP_BINARY_DATA,
    ClientName: ?*anyopaque,
    ClientComment: ?*anyopaque,
    ClientLeaseExpires: DATE_TIME,
    OwnerHost: DHCP_HOST_INFO,
    bClientType: u8,
    AddressState: u8,
    Status: i32,
    ProbationEnds: DATE_TIME,
    QuarantineCapable: i32,
    SentPotExpTime: u32,
    AckPotExpTime: u32,
    RecvPotExpTime: u32,
    StartTime: u32,
    CltLastTransTime: u32,
    LastBndUpdTime: u32,
    BndMsgStatus: u32,
    PolicyName: ?*anyopaque,
    Flags: u8,
};
type
  DHCP_BINARY_DATA {.bycopy.} = object
    DataLength: uint32
    Data: pointer

  DATE_TIME {.bycopy.} = object
    dwLowDateTime: uint32
    dwHighDateTime: uint32

  DHCP_HOST_INFO {.bycopy.} = object
    IpAddress: uint32
    NetBiosName: pointer
    HostName: pointer

  DHCPV4_FAILOVER_CLIENT_INFO {.bycopy.} = object
    ClientIpAddress: uint32
    SubnetMask: uint32
    ClientHardwareAddress: DHCP_BINARY_DATA
    ClientName: pointer
    ClientComment: pointer
    ClientLeaseExpires: DATE_TIME
    OwnerHost: DHCP_HOST_INFO
    bClientType: uint8
    AddressState: uint8
    Status: int32
    ProbationEnds: DATE_TIME
    QuarantineCapable: int32
    SentPotExpTime: uint32
    AckPotExpTime: uint32
    RecvPotExpTime: uint32
    StartTime: uint32
    CltLastTransTime: uint32
    LastBndUpdTime: uint32
    BndMsgStatus: uint32
    PolicyName: pointer
    Flags: uint8
struct DHCP_BINARY_DATA
{
    uint DataLength;
    void* Data;
}

struct DATE_TIME
{
    uint dwLowDateTime;
    uint dwHighDateTime;
}

struct DHCP_HOST_INFO
{
    uint IpAddress;
    void* NetBiosName;
    void* HostName;
}

struct DHCPV4_FAILOVER_CLIENT_INFO
{
    uint ClientIpAddress;
    uint SubnetMask;
    DHCP_BINARY_DATA ClientHardwareAddress;
    void* ClientName;
    void* ClientComment;
    DATE_TIME ClientLeaseExpires;
    DHCP_HOST_INFO OwnerHost;
    ubyte bClientType;
    ubyte AddressState;
    int Status;
    DATE_TIME ProbationEnds;
    int QuarantineCapable;
    uint SentPotExpTime;
    uint AckPotExpTime;
    uint RecvPotExpTime;
    uint StartTime;
    uint CltLastTransTime;
    uint LastBndUpdTime;
    uint BndMsgStatus;
    void* PolicyName;
    ubyte Flags;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DHCPV4_FAILOVER_CLIENT_INFO サイズ: 100 バイト(x86)
dim st, 25    ; 4byte整数×25(構造体サイズ 100 / 4 切り上げ)
; ClientIpAddress : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; SubnetMask : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; ClientHardwareAddress : DHCP_BINARY_DATA (+8, 8byte)  varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; ClientName : LPWSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; ClientComment : LPWSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; ClientLeaseExpires : DATE_TIME (+24, 8byte)  varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; OwnerHost : DHCP_HOST_INFO (+32, 12byte)  varptr(st)+32 を基点に操作(12byte:入れ子/配列)
; bClientType : BYTE (+44, 1byte)  poke st,44,値  /  値 = peek(st,44)
; AddressState : BYTE (+45, 1byte)  poke st,45,値  /  値 = peek(st,45)
; Status : QuarantineStatus (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ProbationEnds : DATE_TIME (+52, 8byte)  varptr(st)+52 を基点に操作(8byte:入れ子/配列)
; QuarantineCapable : BOOL (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; SentPotExpTime : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; AckPotExpTime : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; RecvPotExpTime : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; StartTime : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; CltLastTransTime : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; LastBndUpdTime : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; BndMsgStatus : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; PolicyName : LPWSTR (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; Flags : BYTE (+96, 1byte)  poke st,96,値  /  値 = peek(st,96)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DHCPV4_FAILOVER_CLIENT_INFO サイズ: 136 バイト(x64)
dim st, 34    ; 4byte整数×34(構造体サイズ 136 / 4 切り上げ)
; ClientIpAddress : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; SubnetMask : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; ClientHardwareAddress : DHCP_BINARY_DATA (+8, 16byte)  varptr(st)+8 を基点に操作(16byte:入れ子/配列)
; ClientName : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ClientComment : LPWSTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; ClientLeaseExpires : DATE_TIME (+40, 8byte)  varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; OwnerHost : DHCP_HOST_INFO (+48, 24byte)  varptr(st)+48 を基点に操作(24byte:入れ子/配列)
; bClientType : BYTE (+72, 1byte)  poke st,72,値  /  値 = peek(st,72)
; AddressState : BYTE (+73, 1byte)  poke st,73,値  /  値 = peek(st,73)
; Status : QuarantineStatus (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; ProbationEnds : DATE_TIME (+80, 8byte)  varptr(st)+80 を基点に操作(8byte:入れ子/配列)
; QuarantineCapable : BOOL (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; SentPotExpTime : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; AckPotExpTime : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; RecvPotExpTime : DWORD (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; StartTime : DWORD (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; CltLastTransTime : DWORD (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; LastBndUpdTime : DWORD (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; BndMsgStatus : DWORD (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; PolicyName : LPWSTR (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; Flags : BYTE (+128, 1byte)  poke st,128,値  /  値 = peek(st,128)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global DHCP_BINARY_DATA
    #field int DataLength
    #field intptr Data
#endstruct

#defstruct global DATE_TIME
    #field int dwLowDateTime
    #field int dwHighDateTime
#endstruct

#defstruct global DHCP_HOST_INFO
    #field int IpAddress
    #field intptr NetBiosName
    #field intptr HostName
#endstruct

#defstruct global DHCPV4_FAILOVER_CLIENT_INFO
    #field int ClientIpAddress
    #field int SubnetMask
    #field DHCP_BINARY_DATA ClientHardwareAddress
    #field intptr ClientName
    #field intptr ClientComment
    #field DATE_TIME ClientLeaseExpires
    #field DHCP_HOST_INFO OwnerHost
    #field byte bClientType
    #field byte AddressState
    #field int Status
    #field DATE_TIME ProbationEnds
    #field bool QuarantineCapable
    #field int SentPotExpTime
    #field int AckPotExpTime
    #field int RecvPotExpTime
    #field int StartTime
    #field int CltLastTransTime
    #field int LastBndUpdTime
    #field int BndMsgStatus
    #field intptr PolicyName
    #field byte Flags
#endstruct

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