ホーム › NetworkManagement.Dns › DNS_CONNECTION_POLICY_ENTRY
DNS_CONNECTION_POLICY_ENTRY
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| pwszHost | LPWSTR | 8/4 | +0 | +0 | ポリシーが適用される対象ホスト名(パターン)を表すワイド文字列ポインタ。 |
| pwszAppId | LPWSTR | 8/4 | +8 | +4 | ポリシー対象アプリケーションのID(パッケージ名等)を表すワイド文字列ポインタ。 |
| cbAppSid | DWORD | 4 | +16 | +8 | pbAppSidが指すアプリSIDのバイト長を示す。 |
| pbAppSid | BYTE* | 8/4 | +24 | +12 | 対象アプリケーションのSIDバイト列を指すポインタ。 |
| nConnections | DWORD | 4 | +32 | +16 | ppwszConnectionsが指す接続名の個数を示す。 |
| ppwszConnections | LPWSTR* | 8/4 | +40 | +20 | ポリシーで使用する接続名のワイド文字列配列を指すポインタ。 |
| dwPolicyEntryFlags | DWORD | 4 | +48 | +24 | ポリシーエントリの動作を制御するフラグ値を保持する。 |
各言語での定義
#include <windows.h>
// DNS_CONNECTION_POLICY_ENTRY (x64 56 / x86 28 バイト)
typedef struct DNS_CONNECTION_POLICY_ENTRY {
LPWSTR pwszHost;
LPWSTR pwszAppId;
DWORD cbAppSid;
BYTE* pbAppSid;
DWORD nConnections;
LPWSTR* ppwszConnections;
DWORD dwPolicyEntryFlags;
} DNS_CONNECTION_POLICY_ENTRY;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DNS_CONNECTION_POLICY_ENTRY
{
public IntPtr pwszHost;
public IntPtr pwszAppId;
public uint cbAppSid;
public IntPtr pbAppSid;
public uint nConnections;
public IntPtr ppwszConnections;
public uint dwPolicyEntryFlags;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure DNS_CONNECTION_POLICY_ENTRY
Public pwszHost As IntPtr
Public pwszAppId As IntPtr
Public cbAppSid As UInteger
Public pbAppSid As IntPtr
Public nConnections As UInteger
Public ppwszConnections As IntPtr
Public dwPolicyEntryFlags As UInteger
End Structureimport ctypes
from ctypes import wintypes
class DNS_CONNECTION_POLICY_ENTRY(ctypes.Structure):
_fields_ = [
("pwszHost", ctypes.c_void_p),
("pwszAppId", ctypes.c_void_p),
("cbAppSid", wintypes.DWORD),
("pbAppSid", ctypes.c_void_p),
("nConnections", wintypes.DWORD),
("ppwszConnections", ctypes.c_void_p),
("dwPolicyEntryFlags", wintypes.DWORD),
]#[repr(C)]
pub struct DNS_CONNECTION_POLICY_ENTRY {
pub pwszHost: *mut core::ffi::c_void,
pub pwszAppId: *mut core::ffi::c_void,
pub cbAppSid: u32,
pub pbAppSid: *mut core::ffi::c_void,
pub nConnections: u32,
pub ppwszConnections: *mut core::ffi::c_void,
pub dwPolicyEntryFlags: u32,
}import "golang.org/x/sys/windows"
type DNS_CONNECTION_POLICY_ENTRY struct {
pwszHost uintptr
pwszAppId uintptr
cbAppSid uint32
pbAppSid uintptr
nConnections uint32
ppwszConnections uintptr
dwPolicyEntryFlags uint32
}type
DNS_CONNECTION_POLICY_ENTRY = record
pwszHost: Pointer;
pwszAppId: Pointer;
cbAppSid: DWORD;
pbAppSid: Pointer;
nConnections: DWORD;
ppwszConnections: Pointer;
dwPolicyEntryFlags: DWORD;
end;const DNS_CONNECTION_POLICY_ENTRY = extern struct {
pwszHost: ?*anyopaque,
pwszAppId: ?*anyopaque,
cbAppSid: u32,
pbAppSid: ?*anyopaque,
nConnections: u32,
ppwszConnections: ?*anyopaque,
dwPolicyEntryFlags: u32,
};type
DNS_CONNECTION_POLICY_ENTRY {.bycopy.} = object
pwszHost: pointer
pwszAppId: pointer
cbAppSid: uint32
pbAppSid: pointer
nConnections: uint32
ppwszConnections: pointer
dwPolicyEntryFlags: uint32struct DNS_CONNECTION_POLICY_ENTRY
{
void* pwszHost;
void* pwszAppId;
uint cbAppSid;
void* pbAppSid;
uint nConnections;
void* ppwszConnections;
uint dwPolicyEntryFlags;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; DNS_CONNECTION_POLICY_ENTRY サイズ: 28 バイト(x86)
dim st, 7 ; 4byte整数×7(構造体サイズ 28 / 4 切り上げ)
; pwszHost : LPWSTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pwszAppId : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; cbAppSid : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; pbAppSid : BYTE* (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; nConnections : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ppwszConnections : LPWSTR* (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwPolicyEntryFlags : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; DNS_CONNECTION_POLICY_ENTRY サイズ: 56 バイト(x64)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; pwszHost : LPWSTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; pwszAppId : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; cbAppSid : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; pbAppSid : BYTE* (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; nConnections : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; ppwszConnections : LPWSTR* (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; dwPolicyEntryFlags : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global DNS_CONNECTION_POLICY_ENTRY
#field intptr pwszHost
#field intptr pwszAppId
#field int cbAppSid
#field intptr pbAppSid
#field int nConnections
#field intptr ppwszConnections
#field int dwPolicyEntryFlags
#endstruct
stdim st, DNS_CONNECTION_POLICY_ENTRY ; NSTRUCT 変数を確保
st->cbAppSid = 100
mes "cbAppSid=" + st->cbAppSid