Win32 API 日本語リファレンス
ホームSecurity.WinWlx › WLX_PROFILE_V2_0

WLX_PROFILE_V2_0

構造体
サイズx64: 48 バイト / x86: 24 バイト

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

フィールド

フィールドサイズx64x86説明
dwTypeDWORD4+0+0プロファイル構造体のバージョン種別を表す。
pszProfileLPWSTR8/4+8+4ユーザープロファイルのパス文字列。
pszPolicyLPWSTR8/4+16+8適用するポリシーの文字列。
pszNetworkDefaultUserProfileLPWSTR8/4+24+12ネットワーク既定ユーザープロファイルのパス。
pszServerNameLPWSTR8/4+32+16プロファイルを提供するサーバー名文字列。
pszEnvironmentLPWSTR8/4+40+20ユーザー環境変数の文字列。

各言語での定義

#include <windows.h>

// WLX_PROFILE_V2_0  (x64 48 / x86 24 バイト)
typedef struct WLX_PROFILE_V2_0 {
    DWORD dwType;
    LPWSTR pszProfile;
    LPWSTR pszPolicy;
    LPWSTR pszNetworkDefaultUserProfile;
    LPWSTR pszServerName;
    LPWSTR pszEnvironment;
} WLX_PROFILE_V2_0;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WLX_PROFILE_V2_0
{
    public uint dwType;
    public IntPtr pszProfile;
    public IntPtr pszPolicy;
    public IntPtr pszNetworkDefaultUserProfile;
    public IntPtr pszServerName;
    public IntPtr pszEnvironment;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WLX_PROFILE_V2_0
    Public dwType As UInteger
    Public pszProfile As IntPtr
    Public pszPolicy As IntPtr
    Public pszNetworkDefaultUserProfile As IntPtr
    Public pszServerName As IntPtr
    Public pszEnvironment As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class WLX_PROFILE_V2_0(ctypes.Structure):
    _fields_ = [
        ("dwType", wintypes.DWORD),
        ("pszProfile", ctypes.c_void_p),
        ("pszPolicy", ctypes.c_void_p),
        ("pszNetworkDefaultUserProfile", ctypes.c_void_p),
        ("pszServerName", ctypes.c_void_p),
        ("pszEnvironment", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct WLX_PROFILE_V2_0 {
    pub dwType: u32,
    pub pszProfile: *mut core::ffi::c_void,
    pub pszPolicy: *mut core::ffi::c_void,
    pub pszNetworkDefaultUserProfile: *mut core::ffi::c_void,
    pub pszServerName: *mut core::ffi::c_void,
    pub pszEnvironment: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type WLX_PROFILE_V2_0 struct {
	dwType uint32
	pszProfile uintptr
	pszPolicy uintptr
	pszNetworkDefaultUserProfile uintptr
	pszServerName uintptr
	pszEnvironment uintptr
}
type
  WLX_PROFILE_V2_0 = record
    dwType: DWORD;
    pszProfile: Pointer;
    pszPolicy: Pointer;
    pszNetworkDefaultUserProfile: Pointer;
    pszServerName: Pointer;
    pszEnvironment: Pointer;
  end;
const WLX_PROFILE_V2_0 = extern struct {
    dwType: u32,
    pszProfile: ?*anyopaque,
    pszPolicy: ?*anyopaque,
    pszNetworkDefaultUserProfile: ?*anyopaque,
    pszServerName: ?*anyopaque,
    pszEnvironment: ?*anyopaque,
};
type
  WLX_PROFILE_V2_0 {.bycopy.} = object
    dwType: uint32
    pszProfile: pointer
    pszPolicy: pointer
    pszNetworkDefaultUserProfile: pointer
    pszServerName: pointer
    pszEnvironment: pointer
struct WLX_PROFILE_V2_0
{
    uint dwType;
    void* pszProfile;
    void* pszPolicy;
    void* pszNetworkDefaultUserProfile;
    void* pszServerName;
    void* pszEnvironment;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WLX_PROFILE_V2_0 サイズ: 24 バイト(x86)
dim st, 6    ; 4byte整数×6(構造体サイズ 24 / 4 切り上げ)
; dwType : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pszProfile : LPWSTR (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; pszPolicy : LPWSTR (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; pszNetworkDefaultUserProfile : LPWSTR (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; pszServerName : LPWSTR (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; pszEnvironment : LPWSTR (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WLX_PROFILE_V2_0 サイズ: 48 バイト(x64)
dim st, 12    ; 4byte整数×12(構造体サイズ 48 / 4 切り上げ)
; dwType : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; pszProfile : LPWSTR (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; pszPolicy : LPWSTR (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; pszNetworkDefaultUserProfile : LPWSTR (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; pszServerName : LPWSTR (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; pszEnvironment : LPWSTR (+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 WLX_PROFILE_V2_0
    #field int dwType
    #field intptr pszProfile
    #field intptr pszPolicy
    #field intptr pszNetworkDefaultUserProfile
    #field intptr pszServerName
    #field intptr pszEnvironment
#endstruct

stdim st, WLX_PROFILE_V2_0        ; NSTRUCT 変数を確保
st->dwType = 100
mes "dwType=" + st->dwType