ホーム › NetworkManagement.WindowsFilteringPlatform › IPSEC_ID0
IPSEC_ID0
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| mmTargetName | LPWSTR | 8/4 | +0 | +0 | 省略可能な、メイン モードのターゲット サービス プリンシパル名 (SPN) です。多くの場合、コンピューター名になります。 |
| emTargetName | LPWSTR | 8/4 | +8 | +4 | 省略可能な、拡張モードのターゲット SPN です。 |
| numTokens | DWORD | 4 | +16 | +8 | 省略可能です。tokens メンバーに含まれる IPSEC_TOKEN0 構造体の数です。 |
| tokens | IPSEC_TOKEN0* | 8/4 | +24 | +12 | 省略可能な IPSEC_TOKEN0 構造体の配列です。 |
| explicitCredentials | ULONGLONG | 8 | +32 | +16 | 明示的な資格情報への省略可能なハンドルです。 |
| logonId | ULONGLONG | 8 | +40 | +24 | 使用されないパラメーターです。常に 0 でなければなりません。 |
公式ドキュメント
IPSEC_ID0 構造体は、IPsec によって認証される ID に対応する情報を格納します。
解説(Remarks)
IPSEC_ID0 は IPSEC_ID の特定の実装です。詳細については、WFP のバージョンに依存しない名前と、特定バージョンの Windows を対象とする方法 を参照してください。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// IPSEC_ID0 (x64 48 / x86 32 バイト)
typedef struct IPSEC_ID0 {
LPWSTR mmTargetName;
LPWSTR emTargetName;
DWORD numTokens;
IPSEC_TOKEN0* tokens;
ULONGLONG explicitCredentials;
ULONGLONG logonId;
} IPSEC_ID0;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IPSEC_ID0
{
public IntPtr mmTargetName;
public IntPtr emTargetName;
public uint numTokens;
public IntPtr tokens;
public ulong explicitCredentials;
public ulong logonId;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IPSEC_ID0
Public mmTargetName As IntPtr
Public emTargetName As IntPtr
Public numTokens As UInteger
Public tokens As IntPtr
Public explicitCredentials As ULong
Public logonId As ULong
End Structureimport ctypes
from ctypes import wintypes
class IPSEC_ID0(ctypes.Structure):
_fields_ = [
("mmTargetName", ctypes.c_void_p),
("emTargetName", ctypes.c_void_p),
("numTokens", wintypes.DWORD),
("tokens", ctypes.c_void_p),
("explicitCredentials", ctypes.c_ulonglong),
("logonId", ctypes.c_ulonglong),
]#[repr(C)]
pub struct IPSEC_ID0 {
pub mmTargetName: *mut core::ffi::c_void,
pub emTargetName: *mut core::ffi::c_void,
pub numTokens: u32,
pub tokens: *mut core::ffi::c_void,
pub explicitCredentials: u64,
pub logonId: u64,
}import "golang.org/x/sys/windows"
type IPSEC_ID0 struct {
mmTargetName uintptr
emTargetName uintptr
numTokens uint32
tokens uintptr
explicitCredentials uint64
logonId uint64
}type
IPSEC_ID0 = record
mmTargetName: Pointer;
emTargetName: Pointer;
numTokens: DWORD;
tokens: Pointer;
explicitCredentials: UInt64;
logonId: UInt64;
end;const IPSEC_ID0 = extern struct {
mmTargetName: ?*anyopaque,
emTargetName: ?*anyopaque,
numTokens: u32,
tokens: ?*anyopaque,
explicitCredentials: u64,
logonId: u64,
};type
IPSEC_ID0 {.bycopy.} = object
mmTargetName: pointer
emTargetName: pointer
numTokens: uint32
tokens: pointer
explicitCredentials: uint64
logonId: uint64struct IPSEC_ID0
{
void* mmTargetName;
void* emTargetName;
uint numTokens;
void* tokens;
ulong explicitCredentials;
ulong logonId;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; IPSEC_ID0 サイズ: 32 バイト(x86)
dim st, 8 ; 4byte整数×8(構造体サイズ 32 / 4 切り上げ)
; mmTargetName : LPWSTR (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; emTargetName : LPWSTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; numTokens : DWORD (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; tokens : IPSEC_TOKEN0* (+12, 4byte) varptr(st)+12 を基点に操作(4byte:入れ子/配列)
; explicitCredentials : ULONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; logonId : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IPSEC_ID0 サイズ: 48 バイト(x64)
dim st, 12 ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; mmTargetName : LPWSTR (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; emTargetName : LPWSTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; numTokens : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; tokens : IPSEC_TOKEN0* (+24, 8byte) varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; explicitCredentials : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; logonId : ULONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global IPSEC_ID0
#field intptr mmTargetName
#field intptr emTargetName
#field int numTokens
#field intptr tokens
#field int64 explicitCredentials
#field int64 logonId
#endstruct
stdim st, IPSEC_ID0 ; NSTRUCT 変数を確保
st->numTokens = 100
mes "numTokens=" + st->numTokens