ホーム › NetworkManagement.WiFi › ONEX_AUTH_PARAMS
ONEX_AUTH_PARAMS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| fUpdatePending | BOOL | 4 | +0 | +0 | 更新待ちの状態かを示す真偽値。 |
| oneXConnProfile | ONEX_VARIABLE_BLOB | 8 | +4 | +4 | 1X接続プロファイルを指す可変長ブロブ。 |
| authIdentity | ONEX_AUTH_IDENTITY | 4 | +12 | +12 | 認証に使用するアイデンティティの種別。 |
| dwQuarantineState | DWORD | 4 | +16 | +16 | 検疫(ネットワークアクセス保護)の状態。 |
| _bitfield | DWORD | 4 | +20 | +20 | 各種真偽フラグをまとめたビットフィールド。 |
| dwSessionId | DWORD | 4 | +24 | +24 | 認証に関連するセッションID。 |
| hUserToken | HANDLE | 8/4 | +32 | +28 | 認証に使用するユーザートークンのハンドル。 |
| OneXUserProfile | ONEX_VARIABLE_BLOB | 8 | +40 | +32 | 1Xユーザープロファイルを指す可変長ブロブ。 |
| Identity | ONEX_VARIABLE_BLOB | 8 | +48 | +40 | ユーザーアイデンティティ文字列を指す可変長ブロブ。 |
| UserName | ONEX_VARIABLE_BLOB | 8 | +56 | +48 | ユーザー名を指す可変長ブロブ。 |
| Domain | ONEX_VARIABLE_BLOB | 8 | +64 | +56 | ドメイン名を指す可変長ブロブ。 |
各言語での定義
#include <windows.h>
// ONEX_VARIABLE_BLOB (x64 8 / x86 8 バイト)
typedef struct ONEX_VARIABLE_BLOB {
DWORD dwSize;
DWORD dwOffset;
} ONEX_VARIABLE_BLOB;
// ONEX_AUTH_PARAMS (x64 72 / x86 64 バイト)
typedef struct ONEX_AUTH_PARAMS {
BOOL fUpdatePending;
ONEX_VARIABLE_BLOB oneXConnProfile;
ONEX_AUTH_IDENTITY authIdentity;
DWORD dwQuarantineState;
DWORD _bitfield;
DWORD dwSessionId;
HANDLE hUserToken;
ONEX_VARIABLE_BLOB OneXUserProfile;
ONEX_VARIABLE_BLOB Identity;
ONEX_VARIABLE_BLOB UserName;
ONEX_VARIABLE_BLOB Domain;
} ONEX_AUTH_PARAMS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ONEX_VARIABLE_BLOB
{
public uint dwSize;
public uint dwOffset;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ONEX_AUTH_PARAMS
{
[MarshalAs(UnmanagedType.Bool)] public bool fUpdatePending;
public ONEX_VARIABLE_BLOB oneXConnProfile;
public int authIdentity;
public uint dwQuarantineState;
public uint _bitfield;
public uint dwSessionId;
public IntPtr hUserToken;
public ONEX_VARIABLE_BLOB OneXUserProfile;
public ONEX_VARIABLE_BLOB Identity;
public ONEX_VARIABLE_BLOB UserName;
public ONEX_VARIABLE_BLOB Domain;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ONEX_VARIABLE_BLOB
Public dwSize As UInteger
Public dwOffset As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ONEX_AUTH_PARAMS
<MarshalAs(UnmanagedType.Bool)> Public fUpdatePending As Boolean
Public oneXConnProfile As ONEX_VARIABLE_BLOB
Public authIdentity As Integer
Public dwQuarantineState As UInteger
Public _bitfield As UInteger
Public dwSessionId As UInteger
Public hUserToken As IntPtr
Public OneXUserProfile As ONEX_VARIABLE_BLOB
Public Identity As ONEX_VARIABLE_BLOB
Public UserName As ONEX_VARIABLE_BLOB
Public Domain As ONEX_VARIABLE_BLOB
End Structureimport ctypes
from ctypes import wintypes
class ONEX_VARIABLE_BLOB(ctypes.Structure):
_fields_ = [
("dwSize", wintypes.DWORD),
("dwOffset", wintypes.DWORD),
]
class ONEX_AUTH_PARAMS(ctypes.Structure):
_fields_ = [
("fUpdatePending", wintypes.BOOL),
("oneXConnProfile", ONEX_VARIABLE_BLOB),
("authIdentity", ctypes.c_int),
("dwQuarantineState", wintypes.DWORD),
("_bitfield", wintypes.DWORD),
("dwSessionId", wintypes.DWORD),
("hUserToken", ctypes.c_void_p),
("OneXUserProfile", ONEX_VARIABLE_BLOB),
("Identity", ONEX_VARIABLE_BLOB),
("UserName", ONEX_VARIABLE_BLOB),
("Domain", ONEX_VARIABLE_BLOB),
]#[repr(C)]
pub struct ONEX_VARIABLE_BLOB {
pub dwSize: u32,
pub dwOffset: u32,
}
#[repr(C)]
pub struct ONEX_AUTH_PARAMS {
pub fUpdatePending: i32,
pub oneXConnProfile: ONEX_VARIABLE_BLOB,
pub authIdentity: i32,
pub dwQuarantineState: u32,
pub _bitfield: u32,
pub dwSessionId: u32,
pub hUserToken: *mut core::ffi::c_void,
pub OneXUserProfile: ONEX_VARIABLE_BLOB,
pub Identity: ONEX_VARIABLE_BLOB,
pub UserName: ONEX_VARIABLE_BLOB,
pub Domain: ONEX_VARIABLE_BLOB,
}import "golang.org/x/sys/windows"
type ONEX_VARIABLE_BLOB struct {
dwSize uint32
dwOffset uint32
}
type ONEX_AUTH_PARAMS struct {
fUpdatePending int32
oneXConnProfile ONEX_VARIABLE_BLOB
authIdentity int32
dwQuarantineState uint32
_bitfield uint32
dwSessionId uint32
hUserToken uintptr
OneXUserProfile ONEX_VARIABLE_BLOB
Identity ONEX_VARIABLE_BLOB
UserName ONEX_VARIABLE_BLOB
Domain ONEX_VARIABLE_BLOB
}type
ONEX_VARIABLE_BLOB = record
dwSize: DWORD;
dwOffset: DWORD;
end;
ONEX_AUTH_PARAMS = record
fUpdatePending: BOOL;
oneXConnProfile: ONEX_VARIABLE_BLOB;
authIdentity: Integer;
dwQuarantineState: DWORD;
_bitfield: DWORD;
dwSessionId: DWORD;
hUserToken: Pointer;
OneXUserProfile: ONEX_VARIABLE_BLOB;
Identity: ONEX_VARIABLE_BLOB;
UserName: ONEX_VARIABLE_BLOB;
Domain: ONEX_VARIABLE_BLOB;
end;const ONEX_VARIABLE_BLOB = extern struct {
dwSize: u32,
dwOffset: u32,
};
const ONEX_AUTH_PARAMS = extern struct {
fUpdatePending: i32,
oneXConnProfile: ONEX_VARIABLE_BLOB,
authIdentity: i32,
dwQuarantineState: u32,
_bitfield: u32,
dwSessionId: u32,
hUserToken: ?*anyopaque,
OneXUserProfile: ONEX_VARIABLE_BLOB,
Identity: ONEX_VARIABLE_BLOB,
UserName: ONEX_VARIABLE_BLOB,
Domain: ONEX_VARIABLE_BLOB,
};type
ONEX_VARIABLE_BLOB {.bycopy.} = object
dwSize: uint32
dwOffset: uint32
ONEX_AUTH_PARAMS {.bycopy.} = object
fUpdatePending: int32
oneXConnProfile: ONEX_VARIABLE_BLOB
authIdentity: int32
dwQuarantineState: uint32
_bitfield: uint32
dwSessionId: uint32
hUserToken: pointer
OneXUserProfile: ONEX_VARIABLE_BLOB
Identity: ONEX_VARIABLE_BLOB
UserName: ONEX_VARIABLE_BLOB
Domain: ONEX_VARIABLE_BLOBstruct ONEX_VARIABLE_BLOB
{
uint dwSize;
uint dwOffset;
}
struct ONEX_AUTH_PARAMS
{
int fUpdatePending;
ONEX_VARIABLE_BLOB oneXConnProfile;
int authIdentity;
uint dwQuarantineState;
uint _bitfield;
uint dwSessionId;
void* hUserToken;
ONEX_VARIABLE_BLOB OneXUserProfile;
ONEX_VARIABLE_BLOB Identity;
ONEX_VARIABLE_BLOB UserName;
ONEX_VARIABLE_BLOB Domain;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; ONEX_AUTH_PARAMS サイズ: 64 バイト(x86)
dim st, 16 ; 4byte整数×16(構造体サイズ 64 / 4 切り上げ)
; fUpdatePending : BOOL (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; oneXConnProfile : ONEX_VARIABLE_BLOB (+4, 8byte) varptr(st)+4 を基点に操作(8byte:入れ子/配列)
; authIdentity : ONEX_AUTH_IDENTITY (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwQuarantineState : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; _bitfield : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwSessionId : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; hUserToken : HANDLE (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; OneXUserProfile : ONEX_VARIABLE_BLOB (+32, 8byte) varptr(st)+32 を基点に操作(8byte:入れ子/配列)
; Identity : ONEX_VARIABLE_BLOB (+40, 8byte) varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; UserName : ONEX_VARIABLE_BLOB (+48, 8byte) varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; Domain : ONEX_VARIABLE_BLOB (+56, 8byte) varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ONEX_AUTH_PARAMS サイズ: 72 バイト(x64)
dim st, 18 ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; fUpdatePending : BOOL (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; oneXConnProfile : ONEX_VARIABLE_BLOB (+4, 8byte) varptr(st)+4 を基点に操作(8byte:入れ子/配列)
; authIdentity : ONEX_AUTH_IDENTITY (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwQuarantineState : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; _bitfield : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwSessionId : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; hUserToken : HANDLE (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; OneXUserProfile : ONEX_VARIABLE_BLOB (+40, 8byte) varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; Identity : ONEX_VARIABLE_BLOB (+48, 8byte) varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; UserName : ONEX_VARIABLE_BLOB (+56, 8byte) varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; Domain : ONEX_VARIABLE_BLOB (+64, 8byte) varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global ONEX_VARIABLE_BLOB
#field int dwSize
#field int dwOffset
#endstruct
#defstruct global ONEX_AUTH_PARAMS
#field bool fUpdatePending
#field ONEX_VARIABLE_BLOB oneXConnProfile
#field int authIdentity
#field int dwQuarantineState
#field int _bitfield
#field int dwSessionId
#field intptr hUserToken
#field ONEX_VARIABLE_BLOB OneXUserProfile
#field ONEX_VARIABLE_BLOB Identity
#field ONEX_VARIABLE_BLOB UserName
#field ONEX_VARIABLE_BLOB Domain
#endstruct
stdim st, ONEX_AUTH_PARAMS ; NSTRUCT 変数を確保
st->fUpdatePending = 100
mes "fUpdatePending=" + st->fUpdatePending