ホーム › Security.WinWlx › WLX_PROFILE_V2_0
WLX_PROFILE_V2_0
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwType | DWORD | 4 | +0 | +0 | プロファイル構造体のバージョン種別を表す。 |
| pszProfile | LPWSTR | 8/4 | +8 | +4 | ユーザープロファイルのパス文字列。 |
| pszPolicy | LPWSTR | 8/4 | +16 | +8 | 適用するポリシーの文字列。 |
| pszNetworkDefaultUserProfile | LPWSTR | 8/4 | +24 | +12 | ネットワーク既定ユーザープロファイルのパス。 |
| pszServerName | LPWSTR | 8/4 | +32 | +16 | プロファイルを提供するサーバー名文字列。 |
| pszEnvironment | LPWSTR | 8/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 Structureimport 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: pointerstruct 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