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

WLX_DISPATCH_VERSION_1_3

構造体
サイズx64: 200 バイト / x86: 100 バイト

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

フィールド

フィールドサイズx64x86説明
WlxUseCtrlAltDelPWLX_USE_CTRL_ALT_DEL8/4+0+0WlxUseCtrlAltDel 関数へのポインターです。
WlxSetContextPointerPWLX_SET_CONTEXT_POINTER8/4+8+4WlxSetContextPointer 関数へのポインターです。
WlxSasNotifyPWLX_SAS_NOTIFY8/4+16+8WlxSasNotify 関数へのポインターです。
WlxSetTimeoutPWLX_SET_TIMEOUT8/4+24+12WlxSetTimeout 関数へのポインターです。
WlxAssignShellProtectionPWLX_ASSIGN_SHELL_PROTECTION8/4+32+16WlxAssignShellProtection 関数へのポインターです。
WlxMessageBoxPWLX_MESSAGE_BOX8/4+40+20WlxMessageBox 関数へのポインターです。
WlxDialogBoxPWLX_DIALOG_BOX8/4+48+24WlxDialogBox 関数へのポインターです。
WlxDialogBoxParamPWLX_DIALOG_BOX_PARAM8/4+56+28WlxDialogBoxParam 関数へのポインターです。
WlxDialogBoxIndirectPWLX_DIALOG_BOX_INDIRECT8/4+64+32WlxDialogBoxIndirect 関数へのポインターです。
WlxDialogBoxIndirectParamPWLX_DIALOG_BOX_INDIRECT_PARAM8/4+72+36WlxDialogBoxIndirectParam 関数へのポインターです。
WlxSwitchDesktopToUserPWLX_SWITCH_DESKTOP_TO_USER8/4+80+40WlxSwitchDesktopToUser 関数へのポインターです。
WlxSwitchDesktopToWinlogonPWLX_SWITCH_DESKTOP_TO_WINLOGON8/4+88+44WlxSwitchDesktopToWinlogon 関数へのポインターです。
WlxChangePasswordNotifyPWLX_CHANGE_PASSWORD_NOTIFY8/4+96+48WlxChangePasswordNotify 関数へのポインターです。
WlxGetSourceDesktopPWLX_GET_SOURCE_DESKTOP8/4+104+52WlxGetSourceDesktop 関数へのポインターです。
WlxSetReturnDesktopPWLX_SET_RETURN_DESKTOP8/4+112+56WlxSetReturnDesktop 関数へのポインターです。
WlxCreateUserDesktopPWLX_CREATE_USER_DESKTOP8/4+120+60WlxCreateUserDesktop 関数へのポインターです。
WlxChangePasswordNotifyExPWLX_CHANGE_PASSWORD_NOTIFY_EX8/4+128+64WlxChangePasswordNotifyEx 関数へのポインターです。
WlxCloseUserDesktopPWLX_CLOSE_USER_DESKTOP8/4+136+68WlxCloseUserDesktop 関数へのポインターです。
WlxSetOptionPWLX_SET_OPTION8/4+144+72WlxSetOption 関数へのポインターです。
WlxGetOptionPWLX_GET_OPTION8/4+152+76WlxGetOption 関数へのポインターです。
WlxWin31MigratePWLX_WIN31_MIGRATE8/4+160+80WlxWin31Migrate 関数へのポインターです。
WlxQueryClientCredentialsPWLX_QUERY_CLIENT_CREDENTIALS8/4+168+84WlxQueryClientCredentials 関数へのポインターです。
WlxQueryInetConnectorCredentialsPWLX_QUERY_IC_CREDENTIALS8/4+176+88WlxQueryInetConnectorCredentials 関数へのポインターです。
WlxDisconnectPWLX_DISCONNECT8/4+184+92WlxDisconnect 関数へのポインターです。
WlxQueryTerminalServicesDataPWLX_QUERY_TERMINAL_SERVICES_DATA8/4+192+96WlxQueryTerminalServicesData 関数へのポインターです。

公式ドキュメント

[WLX_DISPATCH_VERSION_1_3 構造体は、Windows Server 2008 および Windows Vista 以降では使用できなくなりました。]

WLX_DISPATCH_VERSION_1_3 構造体は、 WlxInitialize 呼び出しで GINA DLL に渡される Winlogon バージョン 1.3 の関数ディスパッチテーブルの形式を定義します。

このディスパッチテーブルは、GINA DLL が WlxNegotiate の実装でバージョン 1.3 を指定した場合に使用されます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// WLX_DISPATCH_VERSION_1_3  (x64 200 / x86 100 バイト)
typedef struct WLX_DISPATCH_VERSION_1_3 {
    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;
} WLX_DISPATCH_VERSION_1_3;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct WLX_DISPATCH_VERSION_1_3
{
    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;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure WLX_DISPATCH_VERSION_1_3
    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
End Structure
import ctypes
from ctypes import wintypes

class WLX_DISPATCH_VERSION_1_3(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),
    ]
#[repr(C)]
pub struct WLX_DISPATCH_VERSION_1_3 {
    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,
}
import "golang.org/x/sys/windows"

type WLX_DISPATCH_VERSION_1_3 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
}
type
  WLX_DISPATCH_VERSION_1_3 = 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;
  end;
const WLX_DISPATCH_VERSION_1_3 = 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,
};
type
  WLX_DISPATCH_VERSION_1_3 {.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
struct WLX_DISPATCH_VERSION_1_3
{
    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;
}

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_3 サイズ: 100 バイト(x86)
dim st, 25    ; 4byte整数×25(構造体サイズ 100 / 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 も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; WLX_DISPATCH_VERSION_1_3 サイズ: 200 バイト(x64)
dim st, 50    ; 4byte整数×50(構造体サイズ 200 / 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,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global WLX_DISPATCH_VERSION_1_3
    #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
#endstruct

stdim st, WLX_DISPATCH_VERSION_1_3        ; NSTRUCT 変数を確保