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

ONEX_AUTH_PARAMS

構造体
サイズx64: 72 バイト / x86: 64 バイト

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

フィールド

フィールドサイズx64x86説明
fUpdatePendingBOOL4+0+0更新待ちの状態かを示す真偽値。
oneXConnProfileONEX_VARIABLE_BLOB8+4+41X接続プロファイルを指す可変長ブロブ。
authIdentityONEX_AUTH_IDENTITY4+12+12認証に使用するアイデンティティの種別。
dwQuarantineStateDWORD4+16+16検疫(ネットワークアクセス保護)の状態。
_bitfieldDWORD4+20+20各種真偽フラグをまとめたビットフィールド。
dwSessionIdDWORD4+24+24認証に関連するセッションID。
hUserTokenHANDLE8/4+32+28認証に使用するユーザートークンのハンドル。
OneXUserProfileONEX_VARIABLE_BLOB8+40+321Xユーザープロファイルを指す可変長ブロブ。
IdentityONEX_VARIABLE_BLOB8+48+40ユーザーアイデンティティ文字列を指す可変長ブロブ。
UserNameONEX_VARIABLE_BLOB8+56+48ユーザー名を指す可変長ブロブ。
DomainONEX_VARIABLE_BLOB8+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 Structure
import 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_BLOB
struct 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