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

DHCP_SERVER_CONFIG_INFO

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

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

フィールド

フィールドサイズx64x86説明
APIProtocolSupportDWORD4+0+0サーバーがサポートするRPCプロトコルを示すフラグ。
DatabaseNameLPWSTR8/4+8+4DHCPデータベースのファイル名を示すワイド文字列。NULL可。
DatabasePathLPWSTR8/4+16+8DHCPデータベースの格納パスを示すワイド文字列。NULL可。
BackupPathLPWSTR8/4+24+12データベースバックアップの格納パスを示すワイド文字列。NULL可。
BackupIntervalDWORD4+32+16自動バックアップの実行間隔を分単位で示す。
DatabaseLoggingFlagDWORD4+36+20データベースのトランザクションログ記録を有効化するフラグ。
RestoreFlagDWORD4+40+24起動時にバックアップから復元するかを示すフラグ。
DatabaseCleanupIntervalDWORD4+44+28期限切れレコードの整理間隔を分単位で示す。
DebugFlagDWORD4+48+32サーバーのデバッグ出力を制御するフラグ。

各言語での定義

#include <windows.h>

// DHCP_SERVER_CONFIG_INFO  (x64 56 / x86 36 バイト)
typedef struct DHCP_SERVER_CONFIG_INFO {
    DWORD APIProtocolSupport;
    LPWSTR DatabaseName;
    LPWSTR DatabasePath;
    LPWSTR BackupPath;
    DWORD BackupInterval;
    DWORD DatabaseLoggingFlag;
    DWORD RestoreFlag;
    DWORD DatabaseCleanupInterval;
    DWORD DebugFlag;
} DHCP_SERVER_CONFIG_INFO;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DHCP_SERVER_CONFIG_INFO
{
    public uint APIProtocolSupport;
    public IntPtr DatabaseName;
    public IntPtr DatabasePath;
    public IntPtr BackupPath;
    public uint BackupInterval;
    public uint DatabaseLoggingFlag;
    public uint RestoreFlag;
    public uint DatabaseCleanupInterval;
    public uint DebugFlag;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DHCP_SERVER_CONFIG_INFO
    Public APIProtocolSupport As UInteger
    Public DatabaseName As IntPtr
    Public DatabasePath As IntPtr
    Public BackupPath As IntPtr
    Public BackupInterval As UInteger
    Public DatabaseLoggingFlag As UInteger
    Public RestoreFlag As UInteger
    Public DatabaseCleanupInterval As UInteger
    Public DebugFlag As UInteger
End Structure
import ctypes
from ctypes import wintypes

class DHCP_SERVER_CONFIG_INFO(ctypes.Structure):
    _fields_ = [
        ("APIProtocolSupport", wintypes.DWORD),
        ("DatabaseName", ctypes.c_void_p),
        ("DatabasePath", ctypes.c_void_p),
        ("BackupPath", ctypes.c_void_p),
        ("BackupInterval", wintypes.DWORD),
        ("DatabaseLoggingFlag", wintypes.DWORD),
        ("RestoreFlag", wintypes.DWORD),
        ("DatabaseCleanupInterval", wintypes.DWORD),
        ("DebugFlag", wintypes.DWORD),
    ]
#[repr(C)]
pub struct DHCP_SERVER_CONFIG_INFO {
    pub APIProtocolSupport: u32,
    pub DatabaseName: *mut core::ffi::c_void,
    pub DatabasePath: *mut core::ffi::c_void,
    pub BackupPath: *mut core::ffi::c_void,
    pub BackupInterval: u32,
    pub DatabaseLoggingFlag: u32,
    pub RestoreFlag: u32,
    pub DatabaseCleanupInterval: u32,
    pub DebugFlag: u32,
}
import "golang.org/x/sys/windows"

type DHCP_SERVER_CONFIG_INFO struct {
	APIProtocolSupport uint32
	DatabaseName uintptr
	DatabasePath uintptr
	BackupPath uintptr
	BackupInterval uint32
	DatabaseLoggingFlag uint32
	RestoreFlag uint32
	DatabaseCleanupInterval uint32
	DebugFlag uint32
}
type
  DHCP_SERVER_CONFIG_INFO = record
    APIProtocolSupport: DWORD;
    DatabaseName: Pointer;
    DatabasePath: Pointer;
    BackupPath: Pointer;
    BackupInterval: DWORD;
    DatabaseLoggingFlag: DWORD;
    RestoreFlag: DWORD;
    DatabaseCleanupInterval: DWORD;
    DebugFlag: DWORD;
  end;
const DHCP_SERVER_CONFIG_INFO = extern struct {
    APIProtocolSupport: u32,
    DatabaseName: ?*anyopaque,
    DatabasePath: ?*anyopaque,
    BackupPath: ?*anyopaque,
    BackupInterval: u32,
    DatabaseLoggingFlag: u32,
    RestoreFlag: u32,
    DatabaseCleanupInterval: u32,
    DebugFlag: u32,
};
type
  DHCP_SERVER_CONFIG_INFO {.bycopy.} = object
    APIProtocolSupport: uint32
    DatabaseName: pointer
    DatabasePath: pointer
    BackupPath: pointer
    BackupInterval: uint32
    DatabaseLoggingFlag: uint32
    RestoreFlag: uint32
    DatabaseCleanupInterval: uint32
    DebugFlag: uint32
struct DHCP_SERVER_CONFIG_INFO
{
    uint APIProtocolSupport;
    void* DatabaseName;
    void* DatabasePath;
    void* BackupPath;
    uint BackupInterval;
    uint DatabaseLoggingFlag;
    uint RestoreFlag;
    uint DatabaseCleanupInterval;
    uint DebugFlag;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DHCP_SERVER_CONFIG_INFO サイズ: 36 バイト(x86)
dim st, 9    ; 4byte整数×9(構造体サイズ 36 / 4 切り上げ)
; APIProtocolSupport : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; DatabaseName : LPWSTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; DatabasePath : LPWSTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; BackupPath : LPWSTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; BackupInterval : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; DatabaseLoggingFlag : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; RestoreFlag : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; DatabaseCleanupInterval : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; DebugFlag : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DHCP_SERVER_CONFIG_INFO サイズ: 56 バイト(x64)
dim st, 14    ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; APIProtocolSupport : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; DatabaseName : LPWSTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; DatabasePath : LPWSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; BackupPath : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; BackupInterval : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; DatabaseLoggingFlag : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; RestoreFlag : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; DatabaseCleanupInterval : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; DebugFlag : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DHCP_SERVER_CONFIG_INFO
    #field int APIProtocolSupport
    #field intptr DatabaseName
    #field intptr DatabasePath
    #field intptr BackupPath
    #field int BackupInterval
    #field int DatabaseLoggingFlag
    #field int RestoreFlag
    #field int DatabaseCleanupInterval
    #field int DebugFlag
#endstruct

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