ホーム › Security.WinWlx › WLX_DISPATCH_VERSION_1_4
WLX_DISPATCH_VERSION_1_4
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| WlxUseCtrlAltDel | PWLX_USE_CTRL_ALT_DEL | 8/4 | +0 | +0 | Ctrl+Alt+DelをSASとして使用させる関数へのポインタ。 |
| WlxSetContextPointer | PWLX_SET_CONTEXT_POINTER | 8/4 | +8 | +4 | コンテキストポインタを設定する関数へのポインタ。 |
| WlxSasNotify | PWLX_SAS_NOTIFY | 8/4 | +16 | +8 | SAS発生をWinlogonへ通知する関数へのポインタ。 |
| WlxSetTimeout | PWLX_SET_TIMEOUT | 8/4 | +24 | +12 | ダイアログのタイムアウトを設定する関数へのポインタ。 |
| WlxAssignShellProtection | PWLX_ASSIGN_SHELL_PROTECTION | 8/4 | +32 | +16 | シェルプロセスへ保護を割り当てる関数へのポインタ。 |
| WlxMessageBox | PWLX_MESSAGE_BOX | 8/4 | +40 | +20 | メッセージボックスを表示する関数へのポインタ。 |
| WlxDialogBox | PWLX_DIALOG_BOX | 8/4 | +48 | +24 | ダイアログボックスを表示する関数へのポインタ。 |
| WlxDialogBoxParam | PWLX_DIALOG_BOX_PARAM | 8/4 | +56 | +28 | パラメータ付きダイアログを表示する関数へのポインタ。 |
| WlxDialogBoxIndirect | PWLX_DIALOG_BOX_INDIRECT | 8/4 | +64 | +32 | テンプレート指定ダイアログを表示する関数へのポインタ。 |
| WlxDialogBoxIndirectParam | PWLX_DIALOG_BOX_INDIRECT_PARAM | 8/4 | +72 | +36 | テンプレート+引数指定ダイアログ表示関数へのポインタ。 |
| WlxSwitchDesktopToUser | PWLX_SWITCH_DESKTOP_TO_USER | 8/4 | +80 | +40 | ユーザーデスクトップへ切り替える関数へのポインタ。 |
| WlxSwitchDesktopToWinlogon | PWLX_SWITCH_DESKTOP_TO_WINLOGON | 8/4 | +88 | +44 | Winlogonデスクトップへ切り替える関数へのポインタ。 |
| WlxChangePasswordNotify | PWLX_CHANGE_PASSWORD_NOTIFY | 8/4 | +96 | +48 | パスワード変更を通知する関数へのポインタ。 |
| WlxGetSourceDesktop | PWLX_GET_SOURCE_DESKTOP | 8/4 | +104 | +52 | 切り替え元デスクトップを取得する関数へのポインタ。 |
| WlxSetReturnDesktop | PWLX_SET_RETURN_DESKTOP | 8/4 | +112 | +56 | 戻り先デスクトップを設定する関数へのポインタ。 |
| WlxCreateUserDesktop | PWLX_CREATE_USER_DESKTOP | 8/4 | +120 | +60 | ユーザーデスクトップを作成する関数へのポインタ。 |
| WlxChangePasswordNotifyEx | PWLX_CHANGE_PASSWORD_NOTIFY_EX | 8/4 | +128 | +64 | 拡張版のパスワード変更通知関数へのポインタ。 |
| WlxCloseUserDesktop | PWLX_CLOSE_USER_DESKTOP | 8/4 | +136 | +68 | ユーザーデスクトップを閉じる関数へのポインタ。 |
| WlxSetOption | PWLX_SET_OPTION | 8/4 | +144 | +72 | オプション値を設定する関数へのポインタ。 |
| WlxGetOption | PWLX_GET_OPTION | 8/4 | +152 | +76 | オプション値を取得する関数へのポインタ。 |
| WlxWin31Migrate | PWLX_WIN31_MIGRATE | 8/4 | +160 | +80 | Windows 3.1からの移行を行う関数へのポインタ。 |
| WlxQueryClientCredentials | PWLX_QUERY_CLIENT_CREDENTIALS | 8/4 | +168 | +84 | クライアント資格情報を問い合わせる関数へのポインタ。 |
| WlxQueryInetConnectorCredentials | PWLX_QUERY_IC_CREDENTIALS | 8/4 | +176 | +88 | インターネットコネクタ資格情報を問い合わせる関数へのポインタ。 |
| WlxDisconnect | PWLX_DISCONNECT | 8/4 | +184 | +92 | セッションを切断する関数へのポインタ。 |
| WlxQueryTerminalServicesData | PWLX_QUERY_TERMINAL_SERVICES_DATA | 8/4 | +192 | +96 | ターミナルサービスデータを問い合わせる関数へのポインタ。 |
| WlxQueryConsoleSwitchCredentials | PWLX_QUERY_CONSOLESWITCH_CREDENTIALS | 8/4 | +200 | +100 | コンソール切替の資格情報を問い合わせる関数へのポインタ。 |
| WlxQueryTsLogonCredentials | PWLX_QUERY_TS_LOGON_CREDENTIALS | 8/4 | +208 | +104 | ターミナルサービスログオン資格情報を問い合わせる関数へのポインタ。 |
各言語での定義
#include <windows.h>
// WLX_DISPATCH_VERSION_1_4 (x64 216 / x86 108 バイト)
typedef struct WLX_DISPATCH_VERSION_1_4 {
PWLX_USE_CTRL_ALT_DEL WlxUseCtrlAltDel;
PWLX_SET_CONTEXT_POINTER WlxSetContextPointer;
PWLX_SAS_NOTIFY WlxSasNotify;
PWLX_SET_TIMEOUT WlxSetTimeout;
PWLX_ASSIGN_SHELL_PROTECTION WlxAssignShellProtection;
PWLX_MESSAGE_BOX WlxMessageBox;
PWLX_DIALOG_BOX WlxDialogBox;
PWLX_DIALOG_BOX_PARAM WlxDialogBoxParam;
PWLX_DIALOG_BOX_INDIRECT WlxDialogBoxIndirect;
PWLX_DIALOG_BOX_INDIRECT_PARAM WlxDialogBoxIndirectParam;
PWLX_SWITCH_DESKTOP_TO_USER WlxSwitchDesktopToUser;
PWLX_SWITCH_DESKTOP_TO_WINLOGON WlxSwitchDesktopToWinlogon;
PWLX_CHANGE_PASSWORD_NOTIFY WlxChangePasswordNotify;
PWLX_GET_SOURCE_DESKTOP WlxGetSourceDesktop;
PWLX_SET_RETURN_DESKTOP WlxSetReturnDesktop;
PWLX_CREATE_USER_DESKTOP WlxCreateUserDesktop;
PWLX_CHANGE_PASSWORD_NOTIFY_EX WlxChangePasswordNotifyEx;
PWLX_CLOSE_USER_DESKTOP WlxCloseUserDesktop;
PWLX_SET_OPTION WlxSetOption;
PWLX_GET_OPTION WlxGetOption;
PWLX_WIN31_MIGRATE WlxWin31Migrate;
PWLX_QUERY_CLIENT_CREDENTIALS WlxQueryClientCredentials;
PWLX_QUERY_IC_CREDENTIALS WlxQueryInetConnectorCredentials;
PWLX_DISCONNECT WlxDisconnect;
PWLX_QUERY_TERMINAL_SERVICES_DATA WlxQueryTerminalServicesData;
PWLX_QUERY_CONSOLESWITCH_CREDENTIALS WlxQueryConsoleSwitchCredentials;
PWLX_QUERY_TS_LOGON_CREDENTIALS WlxQueryTsLogonCredentials;
} WLX_DISPATCH_VERSION_1_4;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WLX_DISPATCH_VERSION_1_4
{
public IntPtr WlxUseCtrlAltDel;
public IntPtr WlxSetContextPointer;
public IntPtr WlxSasNotify;
public IntPtr WlxSetTimeout;
public IntPtr WlxAssignShellProtection;
public IntPtr WlxMessageBox;
public IntPtr WlxDialogBox;
public IntPtr WlxDialogBoxParam;
public IntPtr WlxDialogBoxIndirect;
public IntPtr WlxDialogBoxIndirectParam;
public IntPtr WlxSwitchDesktopToUser;
public IntPtr WlxSwitchDesktopToWinlogon;
public IntPtr WlxChangePasswordNotify;
public IntPtr WlxGetSourceDesktop;
public IntPtr WlxSetReturnDesktop;
public IntPtr WlxCreateUserDesktop;
public IntPtr WlxChangePasswordNotifyEx;
public IntPtr WlxCloseUserDesktop;
public IntPtr WlxSetOption;
public IntPtr WlxGetOption;
public IntPtr WlxWin31Migrate;
public IntPtr WlxQueryClientCredentials;
public IntPtr WlxQueryInetConnectorCredentials;
public IntPtr WlxDisconnect;
public IntPtr WlxQueryTerminalServicesData;
public IntPtr WlxQueryConsoleSwitchCredentials;
public IntPtr WlxQueryTsLogonCredentials;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WLX_DISPATCH_VERSION_1_4
Public WlxUseCtrlAltDel As IntPtr
Public WlxSetContextPointer As IntPtr
Public WlxSasNotify As IntPtr
Public WlxSetTimeout As IntPtr
Public WlxAssignShellProtection As IntPtr
Public WlxMessageBox As IntPtr
Public WlxDialogBox As IntPtr
Public WlxDialogBoxParam As IntPtr
Public WlxDialogBoxIndirect As IntPtr
Public WlxDialogBoxIndirectParam As IntPtr
Public WlxSwitchDesktopToUser As IntPtr
Public WlxSwitchDesktopToWinlogon As IntPtr
Public WlxChangePasswordNotify As IntPtr
Public WlxGetSourceDesktop As IntPtr
Public WlxSetReturnDesktop As IntPtr
Public WlxCreateUserDesktop As IntPtr
Public WlxChangePasswordNotifyEx As IntPtr
Public WlxCloseUserDesktop As IntPtr
Public WlxSetOption As IntPtr
Public WlxGetOption As IntPtr
Public WlxWin31Migrate As IntPtr
Public WlxQueryClientCredentials As IntPtr
Public WlxQueryInetConnectorCredentials As IntPtr
Public WlxDisconnect As IntPtr
Public WlxQueryTerminalServicesData As IntPtr
Public WlxQueryConsoleSwitchCredentials As IntPtr
Public WlxQueryTsLogonCredentials As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class WLX_DISPATCH_VERSION_1_4(ctypes.Structure):
_fields_ = [
("WlxUseCtrlAltDel", ctypes.c_void_p),
("WlxSetContextPointer", ctypes.c_void_p),
("WlxSasNotify", ctypes.c_void_p),
("WlxSetTimeout", ctypes.c_void_p),
("WlxAssignShellProtection", ctypes.c_void_p),
("WlxMessageBox", ctypes.c_void_p),
("WlxDialogBox", ctypes.c_void_p),
("WlxDialogBoxParam", ctypes.c_void_p),
("WlxDialogBoxIndirect", ctypes.c_void_p),
("WlxDialogBoxIndirectParam", ctypes.c_void_p),
("WlxSwitchDesktopToUser", ctypes.c_void_p),
("WlxSwitchDesktopToWinlogon", ctypes.c_void_p),
("WlxChangePasswordNotify", ctypes.c_void_p),
("WlxGetSourceDesktop", ctypes.c_void_p),
("WlxSetReturnDesktop", ctypes.c_void_p),
("WlxCreateUserDesktop", ctypes.c_void_p),
("WlxChangePasswordNotifyEx", ctypes.c_void_p),
("WlxCloseUserDesktop", ctypes.c_void_p),
("WlxSetOption", ctypes.c_void_p),
("WlxGetOption", ctypes.c_void_p),
("WlxWin31Migrate", ctypes.c_void_p),
("WlxQueryClientCredentials", ctypes.c_void_p),
("WlxQueryInetConnectorCredentials", ctypes.c_void_p),
("WlxDisconnect", ctypes.c_void_p),
("WlxQueryTerminalServicesData", ctypes.c_void_p),
("WlxQueryConsoleSwitchCredentials", ctypes.c_void_p),
("WlxQueryTsLogonCredentials", ctypes.c_void_p),
]#[repr(C)]
pub struct WLX_DISPATCH_VERSION_1_4 {
pub WlxUseCtrlAltDel: *mut core::ffi::c_void,
pub WlxSetContextPointer: *mut core::ffi::c_void,
pub WlxSasNotify: *mut core::ffi::c_void,
pub WlxSetTimeout: *mut core::ffi::c_void,
pub WlxAssignShellProtection: *mut core::ffi::c_void,
pub WlxMessageBox: *mut core::ffi::c_void,
pub WlxDialogBox: *mut core::ffi::c_void,
pub WlxDialogBoxParam: *mut core::ffi::c_void,
pub WlxDialogBoxIndirect: *mut core::ffi::c_void,
pub WlxDialogBoxIndirectParam: *mut core::ffi::c_void,
pub WlxSwitchDesktopToUser: *mut core::ffi::c_void,
pub WlxSwitchDesktopToWinlogon: *mut core::ffi::c_void,
pub WlxChangePasswordNotify: *mut core::ffi::c_void,
pub WlxGetSourceDesktop: *mut core::ffi::c_void,
pub WlxSetReturnDesktop: *mut core::ffi::c_void,
pub WlxCreateUserDesktop: *mut core::ffi::c_void,
pub WlxChangePasswordNotifyEx: *mut core::ffi::c_void,
pub WlxCloseUserDesktop: *mut core::ffi::c_void,
pub WlxSetOption: *mut core::ffi::c_void,
pub WlxGetOption: *mut core::ffi::c_void,
pub WlxWin31Migrate: *mut core::ffi::c_void,
pub WlxQueryClientCredentials: *mut core::ffi::c_void,
pub WlxQueryInetConnectorCredentials: *mut core::ffi::c_void,
pub WlxDisconnect: *mut core::ffi::c_void,
pub WlxQueryTerminalServicesData: *mut core::ffi::c_void,
pub WlxQueryConsoleSwitchCredentials: *mut core::ffi::c_void,
pub WlxQueryTsLogonCredentials: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type WLX_DISPATCH_VERSION_1_4 struct {
WlxUseCtrlAltDel uintptr
WlxSetContextPointer uintptr
WlxSasNotify uintptr
WlxSetTimeout uintptr
WlxAssignShellProtection uintptr
WlxMessageBox uintptr
WlxDialogBox uintptr
WlxDialogBoxParam uintptr
WlxDialogBoxIndirect uintptr
WlxDialogBoxIndirectParam uintptr
WlxSwitchDesktopToUser uintptr
WlxSwitchDesktopToWinlogon uintptr
WlxChangePasswordNotify uintptr
WlxGetSourceDesktop uintptr
WlxSetReturnDesktop uintptr
WlxCreateUserDesktop uintptr
WlxChangePasswordNotifyEx uintptr
WlxCloseUserDesktop uintptr
WlxSetOption uintptr
WlxGetOption uintptr
WlxWin31Migrate uintptr
WlxQueryClientCredentials uintptr
WlxQueryInetConnectorCredentials uintptr
WlxDisconnect uintptr
WlxQueryTerminalServicesData uintptr
WlxQueryConsoleSwitchCredentials uintptr
WlxQueryTsLogonCredentials uintptr
}type
WLX_DISPATCH_VERSION_1_4 = record
WlxUseCtrlAltDel: Pointer;
WlxSetContextPointer: Pointer;
WlxSasNotify: Pointer;
WlxSetTimeout: Pointer;
WlxAssignShellProtection: Pointer;
WlxMessageBox: Pointer;
WlxDialogBox: Pointer;
WlxDialogBoxParam: Pointer;
WlxDialogBoxIndirect: Pointer;
WlxDialogBoxIndirectParam: Pointer;
WlxSwitchDesktopToUser: Pointer;
WlxSwitchDesktopToWinlogon: Pointer;
WlxChangePasswordNotify: Pointer;
WlxGetSourceDesktop: Pointer;
WlxSetReturnDesktop: Pointer;
WlxCreateUserDesktop: Pointer;
WlxChangePasswordNotifyEx: Pointer;
WlxCloseUserDesktop: Pointer;
WlxSetOption: Pointer;
WlxGetOption: Pointer;
WlxWin31Migrate: Pointer;
WlxQueryClientCredentials: Pointer;
WlxQueryInetConnectorCredentials: Pointer;
WlxDisconnect: Pointer;
WlxQueryTerminalServicesData: Pointer;
WlxQueryConsoleSwitchCredentials: Pointer;
WlxQueryTsLogonCredentials: Pointer;
end;const WLX_DISPATCH_VERSION_1_4 = extern struct {
WlxUseCtrlAltDel: ?*anyopaque,
WlxSetContextPointer: ?*anyopaque,
WlxSasNotify: ?*anyopaque,
WlxSetTimeout: ?*anyopaque,
WlxAssignShellProtection: ?*anyopaque,
WlxMessageBox: ?*anyopaque,
WlxDialogBox: ?*anyopaque,
WlxDialogBoxParam: ?*anyopaque,
WlxDialogBoxIndirect: ?*anyopaque,
WlxDialogBoxIndirectParam: ?*anyopaque,
WlxSwitchDesktopToUser: ?*anyopaque,
WlxSwitchDesktopToWinlogon: ?*anyopaque,
WlxChangePasswordNotify: ?*anyopaque,
WlxGetSourceDesktop: ?*anyopaque,
WlxSetReturnDesktop: ?*anyopaque,
WlxCreateUserDesktop: ?*anyopaque,
WlxChangePasswordNotifyEx: ?*anyopaque,
WlxCloseUserDesktop: ?*anyopaque,
WlxSetOption: ?*anyopaque,
WlxGetOption: ?*anyopaque,
WlxWin31Migrate: ?*anyopaque,
WlxQueryClientCredentials: ?*anyopaque,
WlxQueryInetConnectorCredentials: ?*anyopaque,
WlxDisconnect: ?*anyopaque,
WlxQueryTerminalServicesData: ?*anyopaque,
WlxQueryConsoleSwitchCredentials: ?*anyopaque,
WlxQueryTsLogonCredentials: ?*anyopaque,
};type
WLX_DISPATCH_VERSION_1_4 {.bycopy.} = object
WlxUseCtrlAltDel: pointer
WlxSetContextPointer: pointer
WlxSasNotify: pointer
WlxSetTimeout: pointer
WlxAssignShellProtection: pointer
WlxMessageBox: pointer
WlxDialogBox: pointer
WlxDialogBoxParam: pointer
WlxDialogBoxIndirect: pointer
WlxDialogBoxIndirectParam: pointer
WlxSwitchDesktopToUser: pointer
WlxSwitchDesktopToWinlogon: pointer
WlxChangePasswordNotify: pointer
WlxGetSourceDesktop: pointer
WlxSetReturnDesktop: pointer
WlxCreateUserDesktop: pointer
WlxChangePasswordNotifyEx: pointer
WlxCloseUserDesktop: pointer
WlxSetOption: pointer
WlxGetOption: pointer
WlxWin31Migrate: pointer
WlxQueryClientCredentials: pointer
WlxQueryInetConnectorCredentials: pointer
WlxDisconnect: pointer
WlxQueryTerminalServicesData: pointer
WlxQueryConsoleSwitchCredentials: pointer
WlxQueryTsLogonCredentials: pointerstruct WLX_DISPATCH_VERSION_1_4
{
void* WlxUseCtrlAltDel;
void* WlxSetContextPointer;
void* WlxSasNotify;
void* WlxSetTimeout;
void* WlxAssignShellProtection;
void* WlxMessageBox;
void* WlxDialogBox;
void* WlxDialogBoxParam;
void* WlxDialogBoxIndirect;
void* WlxDialogBoxIndirectParam;
void* WlxSwitchDesktopToUser;
void* WlxSwitchDesktopToWinlogon;
void* WlxChangePasswordNotify;
void* WlxGetSourceDesktop;
void* WlxSetReturnDesktop;
void* WlxCreateUserDesktop;
void* WlxChangePasswordNotifyEx;
void* WlxCloseUserDesktop;
void* WlxSetOption;
void* WlxGetOption;
void* WlxWin31Migrate;
void* WlxQueryClientCredentials;
void* WlxQueryInetConnectorCredentials;
void* WlxDisconnect;
void* WlxQueryTerminalServicesData;
void* WlxQueryConsoleSwitchCredentials;
void* WlxQueryTsLogonCredentials;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; WLX_DISPATCH_VERSION_1_4 サイズ: 108 バイト(x86)
dim st, 27 ; 4byte整数×27(構造体サイズ 108 / 4 切り上げ)
; WlxUseCtrlAltDel : PWLX_USE_CTRL_ALT_DEL (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; WlxSetContextPointer : PWLX_SET_CONTEXT_POINTER (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; WlxSasNotify : PWLX_SAS_NOTIFY (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; WlxSetTimeout : PWLX_SET_TIMEOUT (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; WlxAssignShellProtection : PWLX_ASSIGN_SHELL_PROTECTION (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; WlxMessageBox : PWLX_MESSAGE_BOX (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; WlxDialogBox : PWLX_DIALOG_BOX (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; WlxDialogBoxParam : PWLX_DIALOG_BOX_PARAM (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; WlxDialogBoxIndirect : PWLX_DIALOG_BOX_INDIRECT (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; WlxDialogBoxIndirectParam : PWLX_DIALOG_BOX_INDIRECT_PARAM (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; WlxSwitchDesktopToUser : PWLX_SWITCH_DESKTOP_TO_USER (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; WlxSwitchDesktopToWinlogon : PWLX_SWITCH_DESKTOP_TO_WINLOGON (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; WlxChangePasswordNotify : PWLX_CHANGE_PASSWORD_NOTIFY (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; WlxGetSourceDesktop : PWLX_GET_SOURCE_DESKTOP (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; WlxSetReturnDesktop : PWLX_SET_RETURN_DESKTOP (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; WlxCreateUserDesktop : PWLX_CREATE_USER_DESKTOP (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; WlxChangePasswordNotifyEx : PWLX_CHANGE_PASSWORD_NOTIFY_EX (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; WlxCloseUserDesktop : PWLX_CLOSE_USER_DESKTOP (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; WlxSetOption : PWLX_SET_OPTION (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; WlxGetOption : PWLX_GET_OPTION (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; WlxWin31Migrate : PWLX_WIN31_MIGRATE (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; WlxQueryClientCredentials : PWLX_QUERY_CLIENT_CREDENTIALS (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; WlxQueryInetConnectorCredentials : PWLX_QUERY_IC_CREDENTIALS (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; WlxDisconnect : PWLX_DISCONNECT (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; WlxQueryTerminalServicesData : PWLX_QUERY_TERMINAL_SERVICES_DATA (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; WlxQueryConsoleSwitchCredentials : PWLX_QUERY_CONSOLESWITCH_CREDENTIALS (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; WlxQueryTsLogonCredentials : PWLX_QUERY_TS_LOGON_CREDENTIALS (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WLX_DISPATCH_VERSION_1_4 サイズ: 216 バイト(x64)
dim st, 54 ; 4byte整数×54(構造体サイズ 216 / 4 切り上げ)
; WlxUseCtrlAltDel : PWLX_USE_CTRL_ALT_DEL (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; WlxSetContextPointer : PWLX_SET_CONTEXT_POINTER (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; WlxSasNotify : PWLX_SAS_NOTIFY (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; WlxSetTimeout : PWLX_SET_TIMEOUT (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; WlxAssignShellProtection : PWLX_ASSIGN_SHELL_PROTECTION (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; WlxMessageBox : PWLX_MESSAGE_BOX (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; WlxDialogBox : PWLX_DIALOG_BOX (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; WlxDialogBoxParam : PWLX_DIALOG_BOX_PARAM (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; WlxDialogBoxIndirect : PWLX_DIALOG_BOX_INDIRECT (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; WlxDialogBoxIndirectParam : PWLX_DIALOG_BOX_INDIRECT_PARAM (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; WlxSwitchDesktopToUser : PWLX_SWITCH_DESKTOP_TO_USER (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; WlxSwitchDesktopToWinlogon : PWLX_SWITCH_DESKTOP_TO_WINLOGON (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; WlxChangePasswordNotify : PWLX_CHANGE_PASSWORD_NOTIFY (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; WlxGetSourceDesktop : PWLX_GET_SOURCE_DESKTOP (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; WlxSetReturnDesktop : PWLX_SET_RETURN_DESKTOP (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; WlxCreateUserDesktop : PWLX_CREATE_USER_DESKTOP (+120, 8byte) qpoke st,120,値 / qpeek(st,120) ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; WlxChangePasswordNotifyEx : PWLX_CHANGE_PASSWORD_NOTIFY_EX (+128, 8byte) qpoke st,128,値 / qpeek(st,128) ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; WlxCloseUserDesktop : PWLX_CLOSE_USER_DESKTOP (+136, 8byte) qpoke st,136,値 / qpeek(st,136) ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; WlxSetOption : PWLX_SET_OPTION (+144, 8byte) qpoke st,144,値 / qpeek(st,144) ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; WlxGetOption : PWLX_GET_OPTION (+152, 8byte) qpoke st,152,値 / qpeek(st,152) ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; WlxWin31Migrate : PWLX_WIN31_MIGRATE (+160, 8byte) qpoke st,160,値 / qpeek(st,160) ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; WlxQueryClientCredentials : PWLX_QUERY_CLIENT_CREDENTIALS (+168, 8byte) qpoke st,168,値 / qpeek(st,168) ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; WlxQueryInetConnectorCredentials : PWLX_QUERY_IC_CREDENTIALS (+176, 8byte) qpoke st,176,値 / qpeek(st,176) ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; WlxDisconnect : PWLX_DISCONNECT (+184, 8byte) qpoke st,184,値 / qpeek(st,184) ※IronHSPのみ。3.7/3.8は lpoke st,184,下位 : lpoke st,188,上位
; WlxQueryTerminalServicesData : PWLX_QUERY_TERMINAL_SERVICES_DATA (+192, 8byte) qpoke st,192,値 / qpeek(st,192) ※IronHSPのみ。3.7/3.8は lpoke st,192,下位 : lpoke st,196,上位
; WlxQueryConsoleSwitchCredentials : PWLX_QUERY_CONSOLESWITCH_CREDENTIALS (+200, 8byte) qpoke st,200,値 / qpeek(st,200) ※IronHSPのみ。3.7/3.8は lpoke st,200,下位 : lpoke st,204,上位
; WlxQueryTsLogonCredentials : PWLX_QUERY_TS_LOGON_CREDENTIALS (+208, 8byte) qpoke st,208,値 / qpeek(st,208) ※IronHSPのみ。3.7/3.8は lpoke st,208,下位 : lpoke st,212,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WLX_DISPATCH_VERSION_1_4
#field intptr WlxUseCtrlAltDel
#field intptr WlxSetContextPointer
#field intptr WlxSasNotify
#field intptr WlxSetTimeout
#field intptr WlxAssignShellProtection
#field intptr WlxMessageBox
#field intptr WlxDialogBox
#field intptr WlxDialogBoxParam
#field intptr WlxDialogBoxIndirect
#field intptr WlxDialogBoxIndirectParam
#field intptr WlxSwitchDesktopToUser
#field intptr WlxSwitchDesktopToWinlogon
#field intptr WlxChangePasswordNotify
#field intptr WlxGetSourceDesktop
#field intptr WlxSetReturnDesktop
#field intptr WlxCreateUserDesktop
#field intptr WlxChangePasswordNotifyEx
#field intptr WlxCloseUserDesktop
#field intptr WlxSetOption
#field intptr WlxGetOption
#field intptr WlxWin31Migrate
#field intptr WlxQueryClientCredentials
#field intptr WlxQueryInetConnectorCredentials
#field intptr WlxDisconnect
#field intptr WlxQueryTerminalServicesData
#field intptr WlxQueryConsoleSwitchCredentials
#field intptr WlxQueryTsLogonCredentials
#endstruct
stdim st, WLX_DISPATCH_VERSION_1_4 ; NSTRUCT 変数を確保