ホーム › NetworkManagement.Dns › DNS_SOA_DATAA
DNS_SOA_DATAA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| pNamePrimaryServer | LPSTR | 8/4 | +0 | +0 | ゾーンのプライマリネームサーバー名を示すANSI文字列。NULL可。 |
| pNameAdministrator | LPSTR | 8/4 | +8 | +4 | ゾーン管理者のメールアドレス名を示すANSI文字列。NULL可。 |
| dwSerialNo | DWORD | 4 | +16 | +8 | ゾーンのシリアル番号を示す。更新検出に用いる。 |
| dwRefresh | DWORD | 4 | +20 | +12 | セカンダリがゾーン更新を確認する間隔を秒単位で示す。 |
| dwRetry | DWORD | 4 | +24 | +16 | リフレッシュ失敗時の再試行間隔を秒単位で示す。 |
| dwExpire | DWORD | 4 | +28 | +20 | 更新できない場合にゾーンを無効とする期限を秒単位で示す。 |
| dwDefaultTtl | DWORD | 4 | +32 | +24 | ネガティブキャッシュ/既定TTLを秒単位で示す。 |
各言語での定義
#include <windows.h>
// DNS_SOA_DATAA (x64 40 / x86 28 バイト)
typedef struct DNS_SOA_DATAA {
LPSTR pNamePrimaryServer;
LPSTR pNameAdministrator;
DWORD dwSerialNo;
DWORD dwRefresh;
DWORD dwRetry;
DWORD dwExpire;
DWORD dwDefaultTtl;
} DNS_SOA_DATAA;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DNS_SOA_DATAA
{
public IntPtr pNamePrimaryServer;
public IntPtr pNameAdministrator;
public uint dwSerialNo;
public uint dwRefresh;
public uint dwRetry;
public uint dwExpire;
public uint dwDefaultTtl;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DNS_SOA_DATAA
Public pNamePrimaryServer As IntPtr
Public pNameAdministrator As IntPtr
Public dwSerialNo As UInteger
Public dwRefresh As UInteger
Public dwRetry As UInteger
Public dwExpire As UInteger
Public dwDefaultTtl As UInteger
End Structureimport ctypes
from ctypes import wintypes
class DNS_SOA_DATAA(ctypes.Structure):
_fields_ = [
("pNamePrimaryServer", ctypes.c_void_p),
("pNameAdministrator", ctypes.c_void_p),
("dwSerialNo", wintypes.DWORD),
("dwRefresh", wintypes.DWORD),
("dwRetry", wintypes.DWORD),
("dwExpire", wintypes.DWORD),
("dwDefaultTtl", wintypes.DWORD),
]#[repr(C)]
pub struct DNS_SOA_DATAA {
pub pNamePrimaryServer: *mut core::ffi::c_void,
pub pNameAdministrator: *mut core::ffi::c_void,
pub dwSerialNo: u32,
pub dwRefresh: u32,
pub dwRetry: u32,
pub dwExpire: u32,
pub dwDefaultTtl: u32,
}import "golang.org/x/sys/windows"
type DNS_SOA_DATAA struct {
pNamePrimaryServer uintptr
pNameAdministrator uintptr
dwSerialNo uint32
dwRefresh uint32
dwRetry uint32
dwExpire uint32
dwDefaultTtl uint32
}type
DNS_SOA_DATAA = record
pNamePrimaryServer: Pointer;
pNameAdministrator: Pointer;
dwSerialNo: DWORD;
dwRefresh: DWORD;
dwRetry: DWORD;
dwExpire: DWORD;
dwDefaultTtl: DWORD;
end;const DNS_SOA_DATAA = extern struct {
pNamePrimaryServer: ?*anyopaque,
pNameAdministrator: ?*anyopaque,
dwSerialNo: u32,
dwRefresh: u32,
dwRetry: u32,
dwExpire: u32,
dwDefaultTtl: u32,
};type
DNS_SOA_DATAA {.bycopy.} = object
pNamePrimaryServer: pointer
pNameAdministrator: pointer
dwSerialNo: uint32
dwRefresh: uint32
dwRetry: uint32
dwExpire: uint32
dwDefaultTtl: uint32struct DNS_SOA_DATAA
{
void* pNamePrimaryServer;
void* pNameAdministrator;
uint dwSerialNo;
uint dwRefresh;
uint dwRetry;
uint dwExpire;
uint dwDefaultTtl;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DNS_SOA_DATAA サイズ: 28 バイト(x86)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; pNamePrimaryServer : LPSTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pNameAdministrator : LPSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwSerialNo : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwRefresh : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwRetry : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwExpire : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwDefaultTtl : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DNS_SOA_DATAA サイズ: 40 バイト(x64)
dim st, 10 ; 4byte整数×10(構造体サイズ 40 / 4 切り上げ)
; pNamePrimaryServer : LPSTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pNameAdministrator : LPSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; dwSerialNo : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwRefresh : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwRetry : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; dwExpire : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; dwDefaultTtl : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DNS_SOA_DATAA
#field intptr pNamePrimaryServer
#field intptr pNameAdministrator
#field int dwSerialNo
#field int dwRefresh
#field int dwRetry
#field int dwExpire
#field int dwDefaultTtl
#endstruct
stdim st, DNS_SOA_DATAA ; NSTRUCT 変数を確保
st->dwSerialNo = 100
mes "dwSerialNo=" + st->dwSerialNo