ホーム › NetworkManagement.Dhcp › DHCP_FAILOVER_RELATIONSHIP
DHCP_FAILOVER_RELATIONSHIP
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| PrimaryServer | DWORD | 4 | +0 | +0 | フェイルオーバー関係のプライマリサーバーのIPアドレスをDWORDで示す。 |
| SecondaryServer | DWORD | 4 | +4 | +4 | フェイルオーバー関係のセカンダリサーバーのIPアドレスをDWORDで示す。 |
| Mode | DHCP_FAILOVER_MODE | 4 | +8 | +8 | フェイルオーバーの動作モードを示すDHCP_FAILOVER_MODE値。ロードバランス/ホットスタンバイ。 |
| ServerType | DHCP_FAILOVER_SERVER | 4 | +12 | +12 | このサーバーがプライマリかセカンダリかを示すDHCP_FAILOVER_SERVER値。 |
| State | FSM_STATE | 4 | +16 | +16 | フェイルオーバーの現在の状態を示すFSM_STATE値。 |
| PrevState | FSM_STATE | 4 | +20 | +20 | フェイルオーバーの直前の状態を示すFSM_STATE値。 |
| Mclt | DWORD | 4 | +24 | +24 | 最大クライアントリード時間(MCLT)を秒単位で示す。 |
| SafePeriod | DWORD | 4 | +28 | +28 | パートナー喪失後に単独運用を続ける安全期間を秒単位で示す。 |
| RelationshipName | LPWSTR | 8/4 | +32 | +32 | フェイルオーバー関係の名前を示すワイド文字列。NULL可。 |
| PrimaryServerName | LPWSTR | 8/4 | +40 | +36 | プライマリサーバーのホスト名を示すワイド文字列。NULL可。 |
| SecondaryServerName | LPWSTR | 8/4 | +48 | +40 | セカンダリサーバーのホスト名を示すワイド文字列。NULL可。 |
| pScopes | DHCP_IP_ARRAY* | 8/4 | +56 | +44 | この関係に含まれるスコープのIPアドレス配列へのポインタ。 |
| Percentage | BYTE | 1 | +64 | +48 | ロードバランスモードでのアドレス配分割合(%)を示す。 |
| SharedSecret | LPWSTR | 8/4 | +72 | +52 | サーバー間メッセージ認証に用いる共有シークレットを示すワイド文字列。NULL可。 |
各言語での定義
#include <windows.h>
// DHCP_FAILOVER_RELATIONSHIP (x64 80 / x86 56 バイト)
typedef struct DHCP_FAILOVER_RELATIONSHIP {
DWORD PrimaryServer;
DWORD SecondaryServer;
DHCP_FAILOVER_MODE Mode;
DHCP_FAILOVER_SERVER ServerType;
FSM_STATE State;
FSM_STATE PrevState;
DWORD Mclt;
DWORD SafePeriod;
LPWSTR RelationshipName;
LPWSTR PrimaryServerName;
LPWSTR SecondaryServerName;
DHCP_IP_ARRAY* pScopes;
BYTE Percentage;
LPWSTR SharedSecret;
} DHCP_FAILOVER_RELATIONSHIP;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DHCP_FAILOVER_RELATIONSHIP
{
public uint PrimaryServer;
public uint SecondaryServer;
public int Mode;
public int ServerType;
public int State;
public int PrevState;
public uint Mclt;
public uint SafePeriod;
public IntPtr RelationshipName;
public IntPtr PrimaryServerName;
public IntPtr SecondaryServerName;
public IntPtr pScopes;
public byte Percentage;
public IntPtr SharedSecret;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DHCP_FAILOVER_RELATIONSHIP
Public PrimaryServer As UInteger
Public SecondaryServer As UInteger
Public Mode As Integer
Public ServerType As Integer
Public State As Integer
Public PrevState As Integer
Public Mclt As UInteger
Public SafePeriod As UInteger
Public RelationshipName As IntPtr
Public PrimaryServerName As IntPtr
Public SecondaryServerName As IntPtr
Public pScopes As IntPtr
Public Percentage As Byte
Public SharedSecret As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class DHCP_FAILOVER_RELATIONSHIP(ctypes.Structure):
_fields_ = [
("PrimaryServer", wintypes.DWORD),
("SecondaryServer", wintypes.DWORD),
("Mode", ctypes.c_int),
("ServerType", ctypes.c_int),
("State", ctypes.c_int),
("PrevState", ctypes.c_int),
("Mclt", wintypes.DWORD),
("SafePeriod", wintypes.DWORD),
("RelationshipName", ctypes.c_void_p),
("PrimaryServerName", ctypes.c_void_p),
("SecondaryServerName", ctypes.c_void_p),
("pScopes", ctypes.c_void_p),
("Percentage", ctypes.c_ubyte),
("SharedSecret", ctypes.c_void_p),
]#[repr(C)]
pub struct DHCP_FAILOVER_RELATIONSHIP {
pub PrimaryServer: u32,
pub SecondaryServer: u32,
pub Mode: i32,
pub ServerType: i32,
pub State: i32,
pub PrevState: i32,
pub Mclt: u32,
pub SafePeriod: u32,
pub RelationshipName: *mut core::ffi::c_void,
pub PrimaryServerName: *mut core::ffi::c_void,
pub SecondaryServerName: *mut core::ffi::c_void,
pub pScopes: *mut core::ffi::c_void,
pub Percentage: u8,
pub SharedSecret: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type DHCP_FAILOVER_RELATIONSHIP struct {
PrimaryServer uint32
SecondaryServer uint32
Mode int32
ServerType int32
State int32
PrevState int32
Mclt uint32
SafePeriod uint32
RelationshipName uintptr
PrimaryServerName uintptr
SecondaryServerName uintptr
pScopes uintptr
Percentage byte
SharedSecret uintptr
}type
DHCP_FAILOVER_RELATIONSHIP = record
PrimaryServer: DWORD;
SecondaryServer: DWORD;
Mode: Integer;
ServerType: Integer;
State: Integer;
PrevState: Integer;
Mclt: DWORD;
SafePeriod: DWORD;
RelationshipName: Pointer;
PrimaryServerName: Pointer;
SecondaryServerName: Pointer;
pScopes: Pointer;
Percentage: Byte;
SharedSecret: Pointer;
end;const DHCP_FAILOVER_RELATIONSHIP = extern struct {
PrimaryServer: u32,
SecondaryServer: u32,
Mode: i32,
ServerType: i32,
State: i32,
PrevState: i32,
Mclt: u32,
SafePeriod: u32,
RelationshipName: ?*anyopaque,
PrimaryServerName: ?*anyopaque,
SecondaryServerName: ?*anyopaque,
pScopes: ?*anyopaque,
Percentage: u8,
SharedSecret: ?*anyopaque,
};type
DHCP_FAILOVER_RELATIONSHIP {.bycopy.} = object
PrimaryServer: uint32
SecondaryServer: uint32
Mode: int32
ServerType: int32
State: int32
PrevState: int32
Mclt: uint32
SafePeriod: uint32
RelationshipName: pointer
PrimaryServerName: pointer
SecondaryServerName: pointer
pScopes: pointer
Percentage: uint8
SharedSecret: pointerstruct DHCP_FAILOVER_RELATIONSHIP
{
uint PrimaryServer;
uint SecondaryServer;
int Mode;
int ServerType;
int State;
int PrevState;
uint Mclt;
uint SafePeriod;
void* RelationshipName;
void* PrimaryServerName;
void* SecondaryServerName;
void* pScopes;
ubyte Percentage;
void* SharedSecret;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DHCP_FAILOVER_RELATIONSHIP サイズ: 56 バイト(x86)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; PrimaryServer : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; SecondaryServer : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; Mode : DHCP_FAILOVER_MODE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; ServerType : DHCP_FAILOVER_SERVER (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; State : FSM_STATE (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; PrevState : FSM_STATE (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; Mclt : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; SafePeriod : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; RelationshipName : LPWSTR (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; PrimaryServerName : LPWSTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; SecondaryServerName : LPWSTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; pScopes : DHCP_IP_ARRAY* (+44, 4byte) varptr(st)+44 を基点に操作(4byte:入れ子/配列)
; Percentage : BYTE (+48, 1byte) poke st,48,値 / 値 = peek(st,48)
; SharedSecret : LPWSTR (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DHCP_FAILOVER_RELATIONSHIP サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; PrimaryServer : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; SecondaryServer : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; Mode : DHCP_FAILOVER_MODE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; ServerType : DHCP_FAILOVER_SERVER (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; State : FSM_STATE (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; PrevState : FSM_STATE (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; Mclt : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; SafePeriod : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; RelationshipName : LPWSTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; PrimaryServerName : LPWSTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; SecondaryServerName : LPWSTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; pScopes : DHCP_IP_ARRAY* (+56, 8byte) varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; Percentage : BYTE (+64, 1byte) poke st,64,値 / 値 = peek(st,64)
; SharedSecret : LPWSTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DHCP_FAILOVER_RELATIONSHIP
#field int PrimaryServer
#field int SecondaryServer
#field int Mode
#field int ServerType
#field int State
#field int PrevState
#field int Mclt
#field int SafePeriod
#field intptr RelationshipName
#field intptr PrimaryServerName
#field intptr SecondaryServerName
#field intptr pScopes
#field byte Percentage
#field intptr SharedSecret
#endstruct
stdim st, DHCP_FAILOVER_RELATIONSHIP ; NSTRUCT 変数を確保
st->PrimaryServer = 100
mes "PrimaryServer=" + st->PrimaryServer