Win32 API 日本語リファレンス
ホームSecurity.Authentication.Identity › LSA_SECPKG_FUNCTION_TABLE

LSA_SECPKG_FUNCTION_TABLE

構造体
サイズx64: 528 バイト / x86: 264 バイト

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

フィールド

フィールドサイズx64x86説明
CreateLogonSessionPLSA_CREATE_LOGON_SESSION8/4+0+0CreateLogonSession 関数へのポインターです。
DeleteLogonSessionPLSA_DELETE_LOGON_SESSION8/4+8+4DeleteLogonSession 関数へのポインターです。
AddCredentialPLSA_ADD_CREDENTIAL8/4+16+8AddCredential 関数へのポインターです。
GetCredentialsPLSA_GET_CREDENTIALS8/4+24+12GetCredentials 関数へのポインターです。
DeleteCredentialPLSA_DELETE_CREDENTIAL8/4+32+16DeleteCredential 関数へのポインターです。
AllocateLsaHeapPLSA_ALLOCATE_LSA_HEAP8/4+40+20AllocateLsaHeap 関数へのポインターです。
FreeLsaHeapPLSA_FREE_LSA_HEAP8/4+48+24FreeLsaHeap 関数へのポインターです。
AllocateClientBufferPLSA_ALLOCATE_CLIENT_BUFFER8/4+56+28AllocateClientBuffer 関数へのポインターです。
FreeClientBufferPLSA_FREE_CLIENT_BUFFER8/4+64+32FreeClientBuffer 関数へのポインターです。
CopyToClientBufferPLSA_COPY_TO_CLIENT_BUFFER8/4+72+36CopyToClientBuffer 関数へのポインターです。
CopyFromClientBufferPLSA_COPY_FROM_CLIENT_BUFFER8/4+80+40CopyFromClientBuffer 関数へのポインターです。
ImpersonateClientPLSA_IMPERSONATE_CLIENT8/4+88+44ImpersonateClient 関数へのポインターです。
UnloadPackagePLSA_UNLOAD_PACKAGE8/4+96+48UnloadPackage 関数へのポインターです。
DuplicateHandlePLSA_DUPLICATE_HANDLE8/4+104+52DuplicateHandle 関数へのポインターです。
SaveSupplementalCredentialsPLSA_SAVE_SUPPLEMENTAL_CREDENTIALS8/4+112+56SaveSupplementalCredentials 関数へのポインターです。
CreateThreadPLSA_CREATE_THREAD8/4+120+60CreateThread 関数へのポインターです。
GetClientInfoPLSA_GET_CLIENT_INFO8/4+128+64GetClientInfo 関数へのポインターです。
RegisterNotificationPLSA_REGISTER_NOTIFICATION8/4+136+68RegisterNotification 関数へのポインターです。
CancelNotificationPLSA_CANCEL_NOTIFICATION8/4+144+72CancelNotification 関数へのポインターです。
MapBufferPLSA_MAP_BUFFER8/4+152+76MapBuffer 関数へのポインターです。
CreateTokenPLSA_CREATE_TOKEN8/4+160+80CreateToken 関数へのポインターです。
AuditLogonPLSA_AUDIT_LOGON8/4+168+84AuditLogon 関数へのポインターです。
CallPackagePLSA_CALL_PACKAGE8/4+176+88CallPackage 関数へのポインターです。
FreeReturnBufferPLSA_FREE_LSA_HEAP8/4+184+92FreeReturnBuffer 関数へのポインターです。
GetCallInfoPLSA_GET_CALL_INFO8/4+192+96GetCallInfo 関数へのポインターです。
CallPackageExPLSA_CALL_PACKAGEEX8/4+200+100CallPackageEx 関数へのポインターです。
CreateSharedMemoryPLSA_CREATE_SHARED_MEMORY8/4+208+104CreateSharedMemory 関数へのポインターです。
AllocateSharedMemoryPLSA_ALLOCATE_SHARED_MEMORY8/4+216+108AllocateSharedMemory 関数へのポインターです。
FreeSharedMemoryPLSA_FREE_SHARED_MEMORY8/4+224+112FreeSharedMemory 関数へのポインターです。
DeleteSharedMemoryPLSA_DELETE_SHARED_MEMORY8/4+232+116DeleteSharedMemory 関数へのポインターです。
OpenSamUserPLSA_OPEN_SAM_USER8/4+240+120OpenSamUser 関数へのポインターです。
GetUserCredentialsPLSA_GET_USER_CREDENTIALS8/4+248+124GetUserCredentials 関数へのポインターです。
GetUserAuthDataPLSA_GET_USER_AUTH_DATA8/4+256+128GetUserAuthData 関数へのポインターです。
CloseSamUserPLSA_CLOSE_SAM_USER8/4+264+132CloseSamUser 関数へのポインターです。
ConvertAuthDataToTokenPLSA_CONVERT_AUTH_DATA_TO_TOKEN8/4+272+136ConvertAuthDataToToken 関数へのポインターです。
ClientCallbackPLSA_CLIENT_CALLBACK8/4+280+140ClientCallback 関数へのポインターです。
UpdateCredentialsPLSA_UPDATE_PRIMARY_CREDENTIALS8/4+288+144UpdateCredentials 関数へのポインターです。
GetAuthDataForUserPLSA_GET_AUTH_DATA_FOR_USER8/4+296+148GetAuthDataForUser 関数へのポインターです。
CrackSingleNamePLSA_CRACK_SINGLE_NAME8/4+304+152CrackSingleName 関数へのポインターです。
AuditAccountLogonPLSA_AUDIT_ACCOUNT_LOGON8/4+312+156AuditAccountLogon 関数へのポインターです。
CallPackagePassthroughPLSA_CALL_PACKAGE_PASSTHROUGH8/4+320+160CallPackagePassthrough 関数へのポインターです。
CrediReadCredReadFn8/4+328+164CrediRead 関数へのポインターです。
CrediReadDomainCredentialsCredReadDomainCredentialsFn8/4+336+168CrediReadDomainCredentials 関数へのポインターです。
CrediFreeCredentialsCredFreeCredentialsFn8/4+344+172CrediFreeCredentials 関数へのポインターです。
LsaProtectMemoryPLSA_PROTECT_MEMORY8/4+352+176LsaProtectMemory 関数へのポインターです。
LsaUnprotectMemoryPLSA_PROTECT_MEMORY8/4+360+180LsaUnprotectMemory 関数へのポインターです。
OpenTokenByLogonIdPLSA_OPEN_TOKEN_BY_LOGON_ID8/4+368+184OpenTokenByLogonId 関数へのポインターです。
ExpandAuthDataForDomainPLSA_EXPAND_AUTH_DATA_FOR_DOMAIN8/4+376+188ExpandAuthDataForDomain 関数へのポインターです。
AllocatePrivateHeapPLSA_ALLOCATE_PRIVATE_HEAP8/4+384+192AllocatePrivateHeap 関数へのポインターです。
FreePrivateHeapPLSA_FREE_PRIVATE_HEAP8/4+392+196FreePrivateHeap 関数へのポインターです。
CreateTokenExPLSA_CREATE_TOKEN_EX8/4+400+200CreateTokenEx 関数へのポインターです。
CrediWriteCredWriteFn8/4+408+204CrediWrite 関数へのポインターです。
CrediUnmarshalandDecodeStringCrediUnmarshalandDecodeStringFn8/4+416+208

CrediUnmarshalandDecodeString 関数へのポインターです。

Windows Server 2003 および Windows XP: この関数は実装されていません。

DummyFunction6PLSA_PROTECT_MEMORY8/4+424+212

Windows 8 以降で導入された、Microsoft 内部でのみ使用される関数です。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この関数は実装されていません。

GetExtendedCallFlagsPLSA_GET_EXTENDED_CALL_FLAGS8/4+432+216

GetExtendedCallFlags 関数へのポインターです。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この関数は実装されていません。

DuplicateTokenHandlePLSA_DUPLICATE_HANDLE8/4+440+220

DuplicateTokenHandle 関数へのポインターです。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この関数は実装されていません。

GetServiceAccountPasswordPLSA_GET_SERVICE_ACCOUNT_PASSWORD8/4+448+224

GetServiceAccountPassword 関数へのポインターです。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この関数は実装されていません。

DummyFunction7PLSA_PROTECT_MEMORY8/4+456+228

Windows 8 以降で導入された、Microsoft 内部でのみ使用される関数です。

Windows Server 2008 R2、Windows 7、Windows Server 2008、Windows Vista、Windows Server 2003 および Windows XP: この関数は実装されていません。

AuditLogonExPLSA_AUDIT_LOGON_EX8/4+464+232AuditLogonEx 関数へのポインターです。
CheckProtectedUserByTokenPLSA_CHECK_PROTECTED_USER_BY_TOKEN8/4+472+236CheckProtectedUserByToken 関数へのポインターです。
QueryClientRequestPLSA_QUERY_CLIENT_REQUEST8/4+480+240QueryClientRequest 関数へのポインターです。
GetAppModeInfoPLSA_GET_APP_MODE_INFO8/4+488+244GetAppModeInfo 関数へのポインターです。
SetAppModeInfoPLSA_SET_APP_MODE_INFO8/4+496+248SetAppModeInfo 関数へのポインターです。
GetClientInfoExPLSA_GET_CLIENT_INFO_EX8/4+504+252拡張版のクライアント情報取得関数へのポインタ。
GetSecpkgFailureReasonPLSA_GET_SECPKG_FAILURE_REASON8/4+512+256パッケージの失敗理由を取得する関数へのポインタ。
SetSecpkgFailureReasonPLSA_SET_SECPKG_FAILURE_REASON8/4+520+260パッケージの失敗理由を設定する関数へのポインタ。

公式ドキュメント

LSA_SECPKG_FUNCTION_TABLE 構造体は、セキュリティパッケージが呼び出せる LSA 関数へのポインターを格納します。ローカルセキュリティ機関 (LSA) は、セキュリティパッケージの SpInitialize 関数を呼び出す際に、この構造体をパッケージへ渡します。

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

各言語での定義

#include <windows.h>

// LSA_SECPKG_FUNCTION_TABLE  (x64 528 / x86 264 バイト)
typedef struct LSA_SECPKG_FUNCTION_TABLE {
    PLSA_CREATE_LOGON_SESSION CreateLogonSession;
    PLSA_DELETE_LOGON_SESSION DeleteLogonSession;
    PLSA_ADD_CREDENTIAL AddCredential;
    PLSA_GET_CREDENTIALS GetCredentials;
    PLSA_DELETE_CREDENTIAL DeleteCredential;
    PLSA_ALLOCATE_LSA_HEAP AllocateLsaHeap;
    PLSA_FREE_LSA_HEAP FreeLsaHeap;
    PLSA_ALLOCATE_CLIENT_BUFFER AllocateClientBuffer;
    PLSA_FREE_CLIENT_BUFFER FreeClientBuffer;
    PLSA_COPY_TO_CLIENT_BUFFER CopyToClientBuffer;
    PLSA_COPY_FROM_CLIENT_BUFFER CopyFromClientBuffer;
    PLSA_IMPERSONATE_CLIENT ImpersonateClient;
    PLSA_UNLOAD_PACKAGE UnloadPackage;
    PLSA_DUPLICATE_HANDLE DuplicateHandle;
    PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS SaveSupplementalCredentials;
    PLSA_CREATE_THREAD CreateThread;
    PLSA_GET_CLIENT_INFO GetClientInfo;
    PLSA_REGISTER_NOTIFICATION RegisterNotification;
    PLSA_CANCEL_NOTIFICATION CancelNotification;
    PLSA_MAP_BUFFER MapBuffer;
    PLSA_CREATE_TOKEN CreateToken;
    PLSA_AUDIT_LOGON AuditLogon;
    PLSA_CALL_PACKAGE CallPackage;
    PLSA_FREE_LSA_HEAP FreeReturnBuffer;
    PLSA_GET_CALL_INFO GetCallInfo;
    PLSA_CALL_PACKAGEEX CallPackageEx;
    PLSA_CREATE_SHARED_MEMORY CreateSharedMemory;
    PLSA_ALLOCATE_SHARED_MEMORY AllocateSharedMemory;
    PLSA_FREE_SHARED_MEMORY FreeSharedMemory;
    PLSA_DELETE_SHARED_MEMORY DeleteSharedMemory;
    PLSA_OPEN_SAM_USER OpenSamUser;
    PLSA_GET_USER_CREDENTIALS GetUserCredentials;
    PLSA_GET_USER_AUTH_DATA GetUserAuthData;
    PLSA_CLOSE_SAM_USER CloseSamUser;
    PLSA_CONVERT_AUTH_DATA_TO_TOKEN ConvertAuthDataToToken;
    PLSA_CLIENT_CALLBACK ClientCallback;
    PLSA_UPDATE_PRIMARY_CREDENTIALS UpdateCredentials;
    PLSA_GET_AUTH_DATA_FOR_USER GetAuthDataForUser;
    PLSA_CRACK_SINGLE_NAME CrackSingleName;
    PLSA_AUDIT_ACCOUNT_LOGON AuditAccountLogon;
    PLSA_CALL_PACKAGE_PASSTHROUGH CallPackagePassthrough;
    CredReadFn CrediRead;
    CredReadDomainCredentialsFn CrediReadDomainCredentials;
    CredFreeCredentialsFn CrediFreeCredentials;
    PLSA_PROTECT_MEMORY LsaProtectMemory;
    PLSA_PROTECT_MEMORY LsaUnprotectMemory;
    PLSA_OPEN_TOKEN_BY_LOGON_ID OpenTokenByLogonId;
    PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN ExpandAuthDataForDomain;
    PLSA_ALLOCATE_PRIVATE_HEAP AllocatePrivateHeap;
    PLSA_FREE_PRIVATE_HEAP FreePrivateHeap;
    PLSA_CREATE_TOKEN_EX CreateTokenEx;
    CredWriteFn CrediWrite;
    CrediUnmarshalandDecodeStringFn CrediUnmarshalandDecodeString;
    PLSA_PROTECT_MEMORY DummyFunction6;
    PLSA_GET_EXTENDED_CALL_FLAGS GetExtendedCallFlags;
    PLSA_DUPLICATE_HANDLE DuplicateTokenHandle;
    PLSA_GET_SERVICE_ACCOUNT_PASSWORD GetServiceAccountPassword;
    PLSA_PROTECT_MEMORY DummyFunction7;
    PLSA_AUDIT_LOGON_EX AuditLogonEx;
    PLSA_CHECK_PROTECTED_USER_BY_TOKEN CheckProtectedUserByToken;
    PLSA_QUERY_CLIENT_REQUEST QueryClientRequest;
    PLSA_GET_APP_MODE_INFO GetAppModeInfo;
    PLSA_SET_APP_MODE_INFO SetAppModeInfo;
    PLSA_GET_CLIENT_INFO_EX GetClientInfoEx;
    PLSA_GET_SECPKG_FAILURE_REASON GetSecpkgFailureReason;
    PLSA_SET_SECPKG_FAILURE_REASON SetSecpkgFailureReason;
} LSA_SECPKG_FUNCTION_TABLE;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct LSA_SECPKG_FUNCTION_TABLE
{
    public IntPtr CreateLogonSession;
    public IntPtr DeleteLogonSession;
    public IntPtr AddCredential;
    public IntPtr GetCredentials;
    public IntPtr DeleteCredential;
    public IntPtr AllocateLsaHeap;
    public IntPtr FreeLsaHeap;
    public IntPtr AllocateClientBuffer;
    public IntPtr FreeClientBuffer;
    public IntPtr CopyToClientBuffer;
    public IntPtr CopyFromClientBuffer;
    public IntPtr ImpersonateClient;
    public IntPtr UnloadPackage;
    public IntPtr DuplicateHandle;
    public IntPtr SaveSupplementalCredentials;
    public IntPtr CreateThread;
    public IntPtr GetClientInfo;
    public IntPtr RegisterNotification;
    public IntPtr CancelNotification;
    public IntPtr MapBuffer;
    public IntPtr CreateToken;
    public IntPtr AuditLogon;
    public IntPtr CallPackage;
    public IntPtr FreeReturnBuffer;
    public IntPtr GetCallInfo;
    public IntPtr CallPackageEx;
    public IntPtr CreateSharedMemory;
    public IntPtr AllocateSharedMemory;
    public IntPtr FreeSharedMemory;
    public IntPtr DeleteSharedMemory;
    public IntPtr OpenSamUser;
    public IntPtr GetUserCredentials;
    public IntPtr GetUserAuthData;
    public IntPtr CloseSamUser;
    public IntPtr ConvertAuthDataToToken;
    public IntPtr ClientCallback;
    public IntPtr UpdateCredentials;
    public IntPtr GetAuthDataForUser;
    public IntPtr CrackSingleName;
    public IntPtr AuditAccountLogon;
    public IntPtr CallPackagePassthrough;
    public IntPtr CrediRead;
    public IntPtr CrediReadDomainCredentials;
    public IntPtr CrediFreeCredentials;
    public IntPtr LsaProtectMemory;
    public IntPtr LsaUnprotectMemory;
    public IntPtr OpenTokenByLogonId;
    public IntPtr ExpandAuthDataForDomain;
    public IntPtr AllocatePrivateHeap;
    public IntPtr FreePrivateHeap;
    public IntPtr CreateTokenEx;
    public IntPtr CrediWrite;
    public IntPtr CrediUnmarshalandDecodeString;
    public IntPtr DummyFunction6;
    public IntPtr GetExtendedCallFlags;
    public IntPtr DuplicateTokenHandle;
    public IntPtr GetServiceAccountPassword;
    public IntPtr DummyFunction7;
    public IntPtr AuditLogonEx;
    public IntPtr CheckProtectedUserByToken;
    public IntPtr QueryClientRequest;
    public IntPtr GetAppModeInfo;
    public IntPtr SetAppModeInfo;
    public IntPtr GetClientInfoEx;
    public IntPtr GetSecpkgFailureReason;
    public IntPtr SetSecpkgFailureReason;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure LSA_SECPKG_FUNCTION_TABLE
    Public CreateLogonSession As IntPtr
    Public DeleteLogonSession As IntPtr
    Public AddCredential As IntPtr
    Public GetCredentials As IntPtr
    Public DeleteCredential As IntPtr
    Public AllocateLsaHeap As IntPtr
    Public FreeLsaHeap As IntPtr
    Public AllocateClientBuffer As IntPtr
    Public FreeClientBuffer As IntPtr
    Public CopyToClientBuffer As IntPtr
    Public CopyFromClientBuffer As IntPtr
    Public ImpersonateClient As IntPtr
    Public UnloadPackage As IntPtr
    Public DuplicateHandle As IntPtr
    Public SaveSupplementalCredentials As IntPtr
    Public CreateThread As IntPtr
    Public GetClientInfo As IntPtr
    Public RegisterNotification As IntPtr
    Public CancelNotification As IntPtr
    Public MapBuffer As IntPtr
    Public CreateToken As IntPtr
    Public AuditLogon As IntPtr
    Public CallPackage As IntPtr
    Public FreeReturnBuffer As IntPtr
    Public GetCallInfo As IntPtr
    Public CallPackageEx As IntPtr
    Public CreateSharedMemory As IntPtr
    Public AllocateSharedMemory As IntPtr
    Public FreeSharedMemory As IntPtr
    Public DeleteSharedMemory As IntPtr
    Public OpenSamUser As IntPtr
    Public GetUserCredentials As IntPtr
    Public GetUserAuthData As IntPtr
    Public CloseSamUser As IntPtr
    Public ConvertAuthDataToToken As IntPtr
    Public ClientCallback As IntPtr
    Public UpdateCredentials As IntPtr
    Public GetAuthDataForUser As IntPtr
    Public CrackSingleName As IntPtr
    Public AuditAccountLogon As IntPtr
    Public CallPackagePassthrough As IntPtr
    Public CrediRead As IntPtr
    Public CrediReadDomainCredentials As IntPtr
    Public CrediFreeCredentials As IntPtr
    Public LsaProtectMemory As IntPtr
    Public LsaUnprotectMemory As IntPtr
    Public OpenTokenByLogonId As IntPtr
    Public ExpandAuthDataForDomain As IntPtr
    Public AllocatePrivateHeap As IntPtr
    Public FreePrivateHeap As IntPtr
    Public CreateTokenEx As IntPtr
    Public CrediWrite As IntPtr
    Public CrediUnmarshalandDecodeString As IntPtr
    Public DummyFunction6 As IntPtr
    Public GetExtendedCallFlags As IntPtr
    Public DuplicateTokenHandle As IntPtr
    Public GetServiceAccountPassword As IntPtr
    Public DummyFunction7 As IntPtr
    Public AuditLogonEx As IntPtr
    Public CheckProtectedUserByToken As IntPtr
    Public QueryClientRequest As IntPtr
    Public GetAppModeInfo As IntPtr
    Public SetAppModeInfo As IntPtr
    Public GetClientInfoEx As IntPtr
    Public GetSecpkgFailureReason As IntPtr
    Public SetSecpkgFailureReason As IntPtr
End Structure
import ctypes
from ctypes import wintypes

class LSA_SECPKG_FUNCTION_TABLE(ctypes.Structure):
    _fields_ = [
        ("CreateLogonSession", ctypes.c_void_p),
        ("DeleteLogonSession", ctypes.c_void_p),
        ("AddCredential", ctypes.c_void_p),
        ("GetCredentials", ctypes.c_void_p),
        ("DeleteCredential", ctypes.c_void_p),
        ("AllocateLsaHeap", ctypes.c_void_p),
        ("FreeLsaHeap", ctypes.c_void_p),
        ("AllocateClientBuffer", ctypes.c_void_p),
        ("FreeClientBuffer", ctypes.c_void_p),
        ("CopyToClientBuffer", ctypes.c_void_p),
        ("CopyFromClientBuffer", ctypes.c_void_p),
        ("ImpersonateClient", ctypes.c_void_p),
        ("UnloadPackage", ctypes.c_void_p),
        ("DuplicateHandle", ctypes.c_void_p),
        ("SaveSupplementalCredentials", ctypes.c_void_p),
        ("CreateThread", ctypes.c_void_p),
        ("GetClientInfo", ctypes.c_void_p),
        ("RegisterNotification", ctypes.c_void_p),
        ("CancelNotification", ctypes.c_void_p),
        ("MapBuffer", ctypes.c_void_p),
        ("CreateToken", ctypes.c_void_p),
        ("AuditLogon", ctypes.c_void_p),
        ("CallPackage", ctypes.c_void_p),
        ("FreeReturnBuffer", ctypes.c_void_p),
        ("GetCallInfo", ctypes.c_void_p),
        ("CallPackageEx", ctypes.c_void_p),
        ("CreateSharedMemory", ctypes.c_void_p),
        ("AllocateSharedMemory", ctypes.c_void_p),
        ("FreeSharedMemory", ctypes.c_void_p),
        ("DeleteSharedMemory", ctypes.c_void_p),
        ("OpenSamUser", ctypes.c_void_p),
        ("GetUserCredentials", ctypes.c_void_p),
        ("GetUserAuthData", ctypes.c_void_p),
        ("CloseSamUser", ctypes.c_void_p),
        ("ConvertAuthDataToToken", ctypes.c_void_p),
        ("ClientCallback", ctypes.c_void_p),
        ("UpdateCredentials", ctypes.c_void_p),
        ("GetAuthDataForUser", ctypes.c_void_p),
        ("CrackSingleName", ctypes.c_void_p),
        ("AuditAccountLogon", ctypes.c_void_p),
        ("CallPackagePassthrough", ctypes.c_void_p),
        ("CrediRead", ctypes.c_void_p),
        ("CrediReadDomainCredentials", ctypes.c_void_p),
        ("CrediFreeCredentials", ctypes.c_void_p),
        ("LsaProtectMemory", ctypes.c_void_p),
        ("LsaUnprotectMemory", ctypes.c_void_p),
        ("OpenTokenByLogonId", ctypes.c_void_p),
        ("ExpandAuthDataForDomain", ctypes.c_void_p),
        ("AllocatePrivateHeap", ctypes.c_void_p),
        ("FreePrivateHeap", ctypes.c_void_p),
        ("CreateTokenEx", ctypes.c_void_p),
        ("CrediWrite", ctypes.c_void_p),
        ("CrediUnmarshalandDecodeString", ctypes.c_void_p),
        ("DummyFunction6", ctypes.c_void_p),
        ("GetExtendedCallFlags", ctypes.c_void_p),
        ("DuplicateTokenHandle", ctypes.c_void_p),
        ("GetServiceAccountPassword", ctypes.c_void_p),
        ("DummyFunction7", ctypes.c_void_p),
        ("AuditLogonEx", ctypes.c_void_p),
        ("CheckProtectedUserByToken", ctypes.c_void_p),
        ("QueryClientRequest", ctypes.c_void_p),
        ("GetAppModeInfo", ctypes.c_void_p),
        ("SetAppModeInfo", ctypes.c_void_p),
        ("GetClientInfoEx", ctypes.c_void_p),
        ("GetSecpkgFailureReason", ctypes.c_void_p),
        ("SetSecpkgFailureReason", ctypes.c_void_p),
    ]
#[repr(C)]
pub struct LSA_SECPKG_FUNCTION_TABLE {
    pub CreateLogonSession: *mut core::ffi::c_void,
    pub DeleteLogonSession: *mut core::ffi::c_void,
    pub AddCredential: *mut core::ffi::c_void,
    pub GetCredentials: *mut core::ffi::c_void,
    pub DeleteCredential: *mut core::ffi::c_void,
    pub AllocateLsaHeap: *mut core::ffi::c_void,
    pub FreeLsaHeap: *mut core::ffi::c_void,
    pub AllocateClientBuffer: *mut core::ffi::c_void,
    pub FreeClientBuffer: *mut core::ffi::c_void,
    pub CopyToClientBuffer: *mut core::ffi::c_void,
    pub CopyFromClientBuffer: *mut core::ffi::c_void,
    pub ImpersonateClient: *mut core::ffi::c_void,
    pub UnloadPackage: *mut core::ffi::c_void,
    pub DuplicateHandle: *mut core::ffi::c_void,
    pub SaveSupplementalCredentials: *mut core::ffi::c_void,
    pub CreateThread: *mut core::ffi::c_void,
    pub GetClientInfo: *mut core::ffi::c_void,
    pub RegisterNotification: *mut core::ffi::c_void,
    pub CancelNotification: *mut core::ffi::c_void,
    pub MapBuffer: *mut core::ffi::c_void,
    pub CreateToken: *mut core::ffi::c_void,
    pub AuditLogon: *mut core::ffi::c_void,
    pub CallPackage: *mut core::ffi::c_void,
    pub FreeReturnBuffer: *mut core::ffi::c_void,
    pub GetCallInfo: *mut core::ffi::c_void,
    pub CallPackageEx: *mut core::ffi::c_void,
    pub CreateSharedMemory: *mut core::ffi::c_void,
    pub AllocateSharedMemory: *mut core::ffi::c_void,
    pub FreeSharedMemory: *mut core::ffi::c_void,
    pub DeleteSharedMemory: *mut core::ffi::c_void,
    pub OpenSamUser: *mut core::ffi::c_void,
    pub GetUserCredentials: *mut core::ffi::c_void,
    pub GetUserAuthData: *mut core::ffi::c_void,
    pub CloseSamUser: *mut core::ffi::c_void,
    pub ConvertAuthDataToToken: *mut core::ffi::c_void,
    pub ClientCallback: *mut core::ffi::c_void,
    pub UpdateCredentials: *mut core::ffi::c_void,
    pub GetAuthDataForUser: *mut core::ffi::c_void,
    pub CrackSingleName: *mut core::ffi::c_void,
    pub AuditAccountLogon: *mut core::ffi::c_void,
    pub CallPackagePassthrough: *mut core::ffi::c_void,
    pub CrediRead: *mut core::ffi::c_void,
    pub CrediReadDomainCredentials: *mut core::ffi::c_void,
    pub CrediFreeCredentials: *mut core::ffi::c_void,
    pub LsaProtectMemory: *mut core::ffi::c_void,
    pub LsaUnprotectMemory: *mut core::ffi::c_void,
    pub OpenTokenByLogonId: *mut core::ffi::c_void,
    pub ExpandAuthDataForDomain: *mut core::ffi::c_void,
    pub AllocatePrivateHeap: *mut core::ffi::c_void,
    pub FreePrivateHeap: *mut core::ffi::c_void,
    pub CreateTokenEx: *mut core::ffi::c_void,
    pub CrediWrite: *mut core::ffi::c_void,
    pub CrediUnmarshalandDecodeString: *mut core::ffi::c_void,
    pub DummyFunction6: *mut core::ffi::c_void,
    pub GetExtendedCallFlags: *mut core::ffi::c_void,
    pub DuplicateTokenHandle: *mut core::ffi::c_void,
    pub GetServiceAccountPassword: *mut core::ffi::c_void,
    pub DummyFunction7: *mut core::ffi::c_void,
    pub AuditLogonEx: *mut core::ffi::c_void,
    pub CheckProtectedUserByToken: *mut core::ffi::c_void,
    pub QueryClientRequest: *mut core::ffi::c_void,
    pub GetAppModeInfo: *mut core::ffi::c_void,
    pub SetAppModeInfo: *mut core::ffi::c_void,
    pub GetClientInfoEx: *mut core::ffi::c_void,
    pub GetSecpkgFailureReason: *mut core::ffi::c_void,
    pub SetSecpkgFailureReason: *mut core::ffi::c_void,
}
import "golang.org/x/sys/windows"

type LSA_SECPKG_FUNCTION_TABLE struct {
	CreateLogonSession uintptr
	DeleteLogonSession uintptr
	AddCredential uintptr
	GetCredentials uintptr
	DeleteCredential uintptr
	AllocateLsaHeap uintptr
	FreeLsaHeap uintptr
	AllocateClientBuffer uintptr
	FreeClientBuffer uintptr
	CopyToClientBuffer uintptr
	CopyFromClientBuffer uintptr
	ImpersonateClient uintptr
	UnloadPackage uintptr
	DuplicateHandle uintptr
	SaveSupplementalCredentials uintptr
	CreateThread uintptr
	GetClientInfo uintptr
	RegisterNotification uintptr
	CancelNotification uintptr
	MapBuffer uintptr
	CreateToken uintptr
	AuditLogon uintptr
	CallPackage uintptr
	FreeReturnBuffer uintptr
	GetCallInfo uintptr
	CallPackageEx uintptr
	CreateSharedMemory uintptr
	AllocateSharedMemory uintptr
	FreeSharedMemory uintptr
	DeleteSharedMemory uintptr
	OpenSamUser uintptr
	GetUserCredentials uintptr
	GetUserAuthData uintptr
	CloseSamUser uintptr
	ConvertAuthDataToToken uintptr
	ClientCallback uintptr
	UpdateCredentials uintptr
	GetAuthDataForUser uintptr
	CrackSingleName uintptr
	AuditAccountLogon uintptr
	CallPackagePassthrough uintptr
	CrediRead uintptr
	CrediReadDomainCredentials uintptr
	CrediFreeCredentials uintptr
	LsaProtectMemory uintptr
	LsaUnprotectMemory uintptr
	OpenTokenByLogonId uintptr
	ExpandAuthDataForDomain uintptr
	AllocatePrivateHeap uintptr
	FreePrivateHeap uintptr
	CreateTokenEx uintptr
	CrediWrite uintptr
	CrediUnmarshalandDecodeString uintptr
	DummyFunction6 uintptr
	GetExtendedCallFlags uintptr
	DuplicateTokenHandle uintptr
	GetServiceAccountPassword uintptr
	DummyFunction7 uintptr
	AuditLogonEx uintptr
	CheckProtectedUserByToken uintptr
	QueryClientRequest uintptr
	GetAppModeInfo uintptr
	SetAppModeInfo uintptr
	GetClientInfoEx uintptr
	GetSecpkgFailureReason uintptr
	SetSecpkgFailureReason uintptr
}
type
  LSA_SECPKG_FUNCTION_TABLE = record
    CreateLogonSession: Pointer;
    DeleteLogonSession: Pointer;
    AddCredential: Pointer;
    GetCredentials: Pointer;
    DeleteCredential: Pointer;
    AllocateLsaHeap: Pointer;
    FreeLsaHeap: Pointer;
    AllocateClientBuffer: Pointer;
    FreeClientBuffer: Pointer;
    CopyToClientBuffer: Pointer;
    CopyFromClientBuffer: Pointer;
    ImpersonateClient: Pointer;
    UnloadPackage: Pointer;
    DuplicateHandle: Pointer;
    SaveSupplementalCredentials: Pointer;
    CreateThread: Pointer;
    GetClientInfo: Pointer;
    RegisterNotification: Pointer;
    CancelNotification: Pointer;
    MapBuffer: Pointer;
    CreateToken: Pointer;
    AuditLogon: Pointer;
    CallPackage: Pointer;
    FreeReturnBuffer: Pointer;
    GetCallInfo: Pointer;
    CallPackageEx: Pointer;
    CreateSharedMemory: Pointer;
    AllocateSharedMemory: Pointer;
    FreeSharedMemory: Pointer;
    DeleteSharedMemory: Pointer;
    OpenSamUser: Pointer;
    GetUserCredentials: Pointer;
    GetUserAuthData: Pointer;
    CloseSamUser: Pointer;
    ConvertAuthDataToToken: Pointer;
    ClientCallback: Pointer;
    UpdateCredentials: Pointer;
    GetAuthDataForUser: Pointer;
    CrackSingleName: Pointer;
    AuditAccountLogon: Pointer;
    CallPackagePassthrough: Pointer;
    CrediRead: Pointer;
    CrediReadDomainCredentials: Pointer;
    CrediFreeCredentials: Pointer;
    LsaProtectMemory: Pointer;
    LsaUnprotectMemory: Pointer;
    OpenTokenByLogonId: Pointer;
    ExpandAuthDataForDomain: Pointer;
    AllocatePrivateHeap: Pointer;
    FreePrivateHeap: Pointer;
    CreateTokenEx: Pointer;
    CrediWrite: Pointer;
    CrediUnmarshalandDecodeString: Pointer;
    DummyFunction6: Pointer;
    GetExtendedCallFlags: Pointer;
    DuplicateTokenHandle: Pointer;
    GetServiceAccountPassword: Pointer;
    DummyFunction7: Pointer;
    AuditLogonEx: Pointer;
    CheckProtectedUserByToken: Pointer;
    QueryClientRequest: Pointer;
    GetAppModeInfo: Pointer;
    SetAppModeInfo: Pointer;
    GetClientInfoEx: Pointer;
    GetSecpkgFailureReason: Pointer;
    SetSecpkgFailureReason: Pointer;
  end;
const LSA_SECPKG_FUNCTION_TABLE = extern struct {
    CreateLogonSession: ?*anyopaque,
    DeleteLogonSession: ?*anyopaque,
    AddCredential: ?*anyopaque,
    GetCredentials: ?*anyopaque,
    DeleteCredential: ?*anyopaque,
    AllocateLsaHeap: ?*anyopaque,
    FreeLsaHeap: ?*anyopaque,
    AllocateClientBuffer: ?*anyopaque,
    FreeClientBuffer: ?*anyopaque,
    CopyToClientBuffer: ?*anyopaque,
    CopyFromClientBuffer: ?*anyopaque,
    ImpersonateClient: ?*anyopaque,
    UnloadPackage: ?*anyopaque,
    DuplicateHandle: ?*anyopaque,
    SaveSupplementalCredentials: ?*anyopaque,
    CreateThread: ?*anyopaque,
    GetClientInfo: ?*anyopaque,
    RegisterNotification: ?*anyopaque,
    CancelNotification: ?*anyopaque,
    MapBuffer: ?*anyopaque,
    CreateToken: ?*anyopaque,
    AuditLogon: ?*anyopaque,
    CallPackage: ?*anyopaque,
    FreeReturnBuffer: ?*anyopaque,
    GetCallInfo: ?*anyopaque,
    CallPackageEx: ?*anyopaque,
    CreateSharedMemory: ?*anyopaque,
    AllocateSharedMemory: ?*anyopaque,
    FreeSharedMemory: ?*anyopaque,
    DeleteSharedMemory: ?*anyopaque,
    OpenSamUser: ?*anyopaque,
    GetUserCredentials: ?*anyopaque,
    GetUserAuthData: ?*anyopaque,
    CloseSamUser: ?*anyopaque,
    ConvertAuthDataToToken: ?*anyopaque,
    ClientCallback: ?*anyopaque,
    UpdateCredentials: ?*anyopaque,
    GetAuthDataForUser: ?*anyopaque,
    CrackSingleName: ?*anyopaque,
    AuditAccountLogon: ?*anyopaque,
    CallPackagePassthrough: ?*anyopaque,
    CrediRead: ?*anyopaque,
    CrediReadDomainCredentials: ?*anyopaque,
    CrediFreeCredentials: ?*anyopaque,
    LsaProtectMemory: ?*anyopaque,
    LsaUnprotectMemory: ?*anyopaque,
    OpenTokenByLogonId: ?*anyopaque,
    ExpandAuthDataForDomain: ?*anyopaque,
    AllocatePrivateHeap: ?*anyopaque,
    FreePrivateHeap: ?*anyopaque,
    CreateTokenEx: ?*anyopaque,
    CrediWrite: ?*anyopaque,
    CrediUnmarshalandDecodeString: ?*anyopaque,
    DummyFunction6: ?*anyopaque,
    GetExtendedCallFlags: ?*anyopaque,
    DuplicateTokenHandle: ?*anyopaque,
    GetServiceAccountPassword: ?*anyopaque,
    DummyFunction7: ?*anyopaque,
    AuditLogonEx: ?*anyopaque,
    CheckProtectedUserByToken: ?*anyopaque,
    QueryClientRequest: ?*anyopaque,
    GetAppModeInfo: ?*anyopaque,
    SetAppModeInfo: ?*anyopaque,
    GetClientInfoEx: ?*anyopaque,
    GetSecpkgFailureReason: ?*anyopaque,
    SetSecpkgFailureReason: ?*anyopaque,
};
type
  LSA_SECPKG_FUNCTION_TABLE {.bycopy.} = object
    CreateLogonSession: pointer
    DeleteLogonSession: pointer
    AddCredential: pointer
    GetCredentials: pointer
    DeleteCredential: pointer
    AllocateLsaHeap: pointer
    FreeLsaHeap: pointer
    AllocateClientBuffer: pointer
    FreeClientBuffer: pointer
    CopyToClientBuffer: pointer
    CopyFromClientBuffer: pointer
    ImpersonateClient: pointer
    UnloadPackage: pointer
    DuplicateHandle: pointer
    SaveSupplementalCredentials: pointer
    CreateThread: pointer
    GetClientInfo: pointer
    RegisterNotification: pointer
    CancelNotification: pointer
    MapBuffer: pointer
    CreateToken: pointer
    AuditLogon: pointer
    CallPackage: pointer
    FreeReturnBuffer: pointer
    GetCallInfo: pointer
    CallPackageEx: pointer
    CreateSharedMemory: pointer
    AllocateSharedMemory: pointer
    FreeSharedMemory: pointer
    DeleteSharedMemory: pointer
    OpenSamUser: pointer
    GetUserCredentials: pointer
    GetUserAuthData: pointer
    CloseSamUser: pointer
    ConvertAuthDataToToken: pointer
    ClientCallback: pointer
    UpdateCredentials: pointer
    GetAuthDataForUser: pointer
    CrackSingleName: pointer
    AuditAccountLogon: pointer
    CallPackagePassthrough: pointer
    CrediRead: pointer
    CrediReadDomainCredentials: pointer
    CrediFreeCredentials: pointer
    LsaProtectMemory: pointer
    LsaUnprotectMemory: pointer
    OpenTokenByLogonId: pointer
    ExpandAuthDataForDomain: pointer
    AllocatePrivateHeap: pointer
    FreePrivateHeap: pointer
    CreateTokenEx: pointer
    CrediWrite: pointer
    CrediUnmarshalandDecodeString: pointer
    DummyFunction6: pointer
    GetExtendedCallFlags: pointer
    DuplicateTokenHandle: pointer
    GetServiceAccountPassword: pointer
    DummyFunction7: pointer
    AuditLogonEx: pointer
    CheckProtectedUserByToken: pointer
    QueryClientRequest: pointer
    GetAppModeInfo: pointer
    SetAppModeInfo: pointer
    GetClientInfoEx: pointer
    GetSecpkgFailureReason: pointer
    SetSecpkgFailureReason: pointer
struct LSA_SECPKG_FUNCTION_TABLE
{
    void* CreateLogonSession;
    void* DeleteLogonSession;
    void* AddCredential;
    void* GetCredentials;
    void* DeleteCredential;
    void* AllocateLsaHeap;
    void* FreeLsaHeap;
    void* AllocateClientBuffer;
    void* FreeClientBuffer;
    void* CopyToClientBuffer;
    void* CopyFromClientBuffer;
    void* ImpersonateClient;
    void* UnloadPackage;
    void* DuplicateHandle;
    void* SaveSupplementalCredentials;
    void* CreateThread;
    void* GetClientInfo;
    void* RegisterNotification;
    void* CancelNotification;
    void* MapBuffer;
    void* CreateToken;
    void* AuditLogon;
    void* CallPackage;
    void* FreeReturnBuffer;
    void* GetCallInfo;
    void* CallPackageEx;
    void* CreateSharedMemory;
    void* AllocateSharedMemory;
    void* FreeSharedMemory;
    void* DeleteSharedMemory;
    void* OpenSamUser;
    void* GetUserCredentials;
    void* GetUserAuthData;
    void* CloseSamUser;
    void* ConvertAuthDataToToken;
    void* ClientCallback;
    void* UpdateCredentials;
    void* GetAuthDataForUser;
    void* CrackSingleName;
    void* AuditAccountLogon;
    void* CallPackagePassthrough;
    void* CrediRead;
    void* CrediReadDomainCredentials;
    void* CrediFreeCredentials;
    void* LsaProtectMemory;
    void* LsaUnprotectMemory;
    void* OpenTokenByLogonId;
    void* ExpandAuthDataForDomain;
    void* AllocatePrivateHeap;
    void* FreePrivateHeap;
    void* CreateTokenEx;
    void* CrediWrite;
    void* CrediUnmarshalandDecodeString;
    void* DummyFunction6;
    void* GetExtendedCallFlags;
    void* DuplicateTokenHandle;
    void* GetServiceAccountPassword;
    void* DummyFunction7;
    void* AuditLogonEx;
    void* CheckProtectedUserByToken;
    void* QueryClientRequest;
    void* GetAppModeInfo;
    void* SetAppModeInfo;
    void* GetClientInfoEx;
    void* GetSecpkgFailureReason;
    void* SetSecpkgFailureReason;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; LSA_SECPKG_FUNCTION_TABLE サイズ: 264 バイト(x86)
dim st, 66    ; 4byte整数×66(構造体サイズ 264 / 4 切り上げ)
; CreateLogonSession : PLSA_CREATE_LOGON_SESSION (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; DeleteLogonSession : PLSA_DELETE_LOGON_SESSION (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; AddCredential : PLSA_ADD_CREDENTIAL (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; GetCredentials : PLSA_GET_CREDENTIALS (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; DeleteCredential : PLSA_DELETE_CREDENTIAL (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; AllocateLsaHeap : PLSA_ALLOCATE_LSA_HEAP (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; FreeLsaHeap : PLSA_FREE_LSA_HEAP (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; AllocateClientBuffer : PLSA_ALLOCATE_CLIENT_BUFFER (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; FreeClientBuffer : PLSA_FREE_CLIENT_BUFFER (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; CopyToClientBuffer : PLSA_COPY_TO_CLIENT_BUFFER (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; CopyFromClientBuffer : PLSA_COPY_FROM_CLIENT_BUFFER (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; ImpersonateClient : PLSA_IMPERSONATE_CLIENT (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; UnloadPackage : PLSA_UNLOAD_PACKAGE (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; DuplicateHandle : PLSA_DUPLICATE_HANDLE (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; SaveSupplementalCredentials : PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; CreateThread : PLSA_CREATE_THREAD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; GetClientInfo : PLSA_GET_CLIENT_INFO (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; RegisterNotification : PLSA_REGISTER_NOTIFICATION (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; CancelNotification : PLSA_CANCEL_NOTIFICATION (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; MapBuffer : PLSA_MAP_BUFFER (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; CreateToken : PLSA_CREATE_TOKEN (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; AuditLogon : PLSA_AUDIT_LOGON (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; CallPackage : PLSA_CALL_PACKAGE (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; FreeReturnBuffer : PLSA_FREE_LSA_HEAP (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; GetCallInfo : PLSA_GET_CALL_INFO (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; CallPackageEx : PLSA_CALL_PACKAGEEX (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; CreateSharedMemory : PLSA_CREATE_SHARED_MEMORY (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; AllocateSharedMemory : PLSA_ALLOCATE_SHARED_MEMORY (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; FreeSharedMemory : PLSA_FREE_SHARED_MEMORY (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; DeleteSharedMemory : PLSA_DELETE_SHARED_MEMORY (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; OpenSamUser : PLSA_OPEN_SAM_USER (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; GetUserCredentials : PLSA_GET_USER_CREDENTIALS (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; GetUserAuthData : PLSA_GET_USER_AUTH_DATA (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; CloseSamUser : PLSA_CLOSE_SAM_USER (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; ConvertAuthDataToToken : PLSA_CONVERT_AUTH_DATA_TO_TOKEN (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; ClientCallback : PLSA_CLIENT_CALLBACK (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; UpdateCredentials : PLSA_UPDATE_PRIMARY_CREDENTIALS (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; GetAuthDataForUser : PLSA_GET_AUTH_DATA_FOR_USER (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; CrackSingleName : PLSA_CRACK_SINGLE_NAME (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; AuditAccountLogon : PLSA_AUDIT_ACCOUNT_LOGON (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; CallPackagePassthrough : PLSA_CALL_PACKAGE_PASSTHROUGH (+160, 4byte)  st.40 = 値  /  値 = st.40   (lpoke/lpeek も可)
; CrediRead : CredReadFn (+164, 4byte)  st.41 = 値  /  値 = st.41   (lpoke/lpeek も可)
; CrediReadDomainCredentials : CredReadDomainCredentialsFn (+168, 4byte)  st.42 = 値  /  値 = st.42   (lpoke/lpeek も可)
; CrediFreeCredentials : CredFreeCredentialsFn (+172, 4byte)  st.43 = 値  /  値 = st.43   (lpoke/lpeek も可)
; LsaProtectMemory : PLSA_PROTECT_MEMORY (+176, 4byte)  st.44 = 値  /  値 = st.44   (lpoke/lpeek も可)
; LsaUnprotectMemory : PLSA_PROTECT_MEMORY (+180, 4byte)  st.45 = 値  /  値 = st.45   (lpoke/lpeek も可)
; OpenTokenByLogonId : PLSA_OPEN_TOKEN_BY_LOGON_ID (+184, 4byte)  st.46 = 値  /  値 = st.46   (lpoke/lpeek も可)
; ExpandAuthDataForDomain : PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN (+188, 4byte)  st.47 = 値  /  値 = st.47   (lpoke/lpeek も可)
; AllocatePrivateHeap : PLSA_ALLOCATE_PRIVATE_HEAP (+192, 4byte)  st.48 = 値  /  値 = st.48   (lpoke/lpeek も可)
; FreePrivateHeap : PLSA_FREE_PRIVATE_HEAP (+196, 4byte)  st.49 = 値  /  値 = st.49   (lpoke/lpeek も可)
; CreateTokenEx : PLSA_CREATE_TOKEN_EX (+200, 4byte)  st.50 = 値  /  値 = st.50   (lpoke/lpeek も可)
; CrediWrite : CredWriteFn (+204, 4byte)  st.51 = 値  /  値 = st.51   (lpoke/lpeek も可)
; CrediUnmarshalandDecodeString : CrediUnmarshalandDecodeStringFn (+208, 4byte)  st.52 = 値  /  値 = st.52   (lpoke/lpeek も可)
; DummyFunction6 : PLSA_PROTECT_MEMORY (+212, 4byte)  st.53 = 値  /  値 = st.53   (lpoke/lpeek も可)
; GetExtendedCallFlags : PLSA_GET_EXTENDED_CALL_FLAGS (+216, 4byte)  st.54 = 値  /  値 = st.54   (lpoke/lpeek も可)
; DuplicateTokenHandle : PLSA_DUPLICATE_HANDLE (+220, 4byte)  st.55 = 値  /  値 = st.55   (lpoke/lpeek も可)
; GetServiceAccountPassword : PLSA_GET_SERVICE_ACCOUNT_PASSWORD (+224, 4byte)  st.56 = 値  /  値 = st.56   (lpoke/lpeek も可)
; DummyFunction7 : PLSA_PROTECT_MEMORY (+228, 4byte)  st.57 = 値  /  値 = st.57   (lpoke/lpeek も可)
; AuditLogonEx : PLSA_AUDIT_LOGON_EX (+232, 4byte)  st.58 = 値  /  値 = st.58   (lpoke/lpeek も可)
; CheckProtectedUserByToken : PLSA_CHECK_PROTECTED_USER_BY_TOKEN (+236, 4byte)  st.59 = 値  /  値 = st.59   (lpoke/lpeek も可)
; QueryClientRequest : PLSA_QUERY_CLIENT_REQUEST (+240, 4byte)  st.60 = 値  /  値 = st.60   (lpoke/lpeek も可)
; GetAppModeInfo : PLSA_GET_APP_MODE_INFO (+244, 4byte)  st.61 = 値  /  値 = st.61   (lpoke/lpeek も可)
; SetAppModeInfo : PLSA_SET_APP_MODE_INFO (+248, 4byte)  st.62 = 値  /  値 = st.62   (lpoke/lpeek も可)
; GetClientInfoEx : PLSA_GET_CLIENT_INFO_EX (+252, 4byte)  st.63 = 値  /  値 = st.63   (lpoke/lpeek も可)
; GetSecpkgFailureReason : PLSA_GET_SECPKG_FAILURE_REASON (+256, 4byte)  st.64 = 値  /  値 = st.64   (lpoke/lpeek も可)
; SetSecpkgFailureReason : PLSA_SET_SECPKG_FAILURE_REASON (+260, 4byte)  st.65 = 値  /  値 = st.65   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; LSA_SECPKG_FUNCTION_TABLE サイズ: 528 バイト(x64)
dim st, 132    ; 4byte整数×132(構造体サイズ 528 / 4 切り上げ)
; CreateLogonSession : PLSA_CREATE_LOGON_SESSION (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; DeleteLogonSession : PLSA_DELETE_LOGON_SESSION (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; AddCredential : PLSA_ADD_CREDENTIAL (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; GetCredentials : PLSA_GET_CREDENTIALS (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; DeleteCredential : PLSA_DELETE_CREDENTIAL (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; AllocateLsaHeap : PLSA_ALLOCATE_LSA_HEAP (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; FreeLsaHeap : PLSA_FREE_LSA_HEAP (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; AllocateClientBuffer : PLSA_ALLOCATE_CLIENT_BUFFER (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; FreeClientBuffer : PLSA_FREE_CLIENT_BUFFER (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; CopyToClientBuffer : PLSA_COPY_TO_CLIENT_BUFFER (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; CopyFromClientBuffer : PLSA_COPY_FROM_CLIENT_BUFFER (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; ImpersonateClient : PLSA_IMPERSONATE_CLIENT (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; UnloadPackage : PLSA_UNLOAD_PACKAGE (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; DuplicateHandle : PLSA_DUPLICATE_HANDLE (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; SaveSupplementalCredentials : PLSA_SAVE_SUPPLEMENTAL_CREDENTIALS (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; CreateThread : PLSA_CREATE_THREAD (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; GetClientInfo : PLSA_GET_CLIENT_INFO (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; RegisterNotification : PLSA_REGISTER_NOTIFICATION (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; CancelNotification : PLSA_CANCEL_NOTIFICATION (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; MapBuffer : PLSA_MAP_BUFFER (+152, 8byte)  qpoke st,152,値 / qpeek(st,152)  ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; CreateToken : PLSA_CREATE_TOKEN (+160, 8byte)  qpoke st,160,値 / qpeek(st,160)  ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; AuditLogon : PLSA_AUDIT_LOGON (+168, 8byte)  qpoke st,168,値 / qpeek(st,168)  ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; CallPackage : PLSA_CALL_PACKAGE (+176, 8byte)  qpoke st,176,値 / qpeek(st,176)  ※IronHSPのみ。3.7/3.8は lpoke st,176,下位 : lpoke st,180,上位
; FreeReturnBuffer : PLSA_FREE_LSA_HEAP (+184, 8byte)  qpoke st,184,値 / qpeek(st,184)  ※IronHSPのみ。3.7/3.8は lpoke st,184,下位 : lpoke st,188,上位
; GetCallInfo : PLSA_GET_CALL_INFO (+192, 8byte)  qpoke st,192,値 / qpeek(st,192)  ※IronHSPのみ。3.7/3.8は lpoke st,192,下位 : lpoke st,196,上位
; CallPackageEx : PLSA_CALL_PACKAGEEX (+200, 8byte)  qpoke st,200,値 / qpeek(st,200)  ※IronHSPのみ。3.7/3.8は lpoke st,200,下位 : lpoke st,204,上位
; CreateSharedMemory : PLSA_CREATE_SHARED_MEMORY (+208, 8byte)  qpoke st,208,値 / qpeek(st,208)  ※IronHSPのみ。3.7/3.8は lpoke st,208,下位 : lpoke st,212,上位
; AllocateSharedMemory : PLSA_ALLOCATE_SHARED_MEMORY (+216, 8byte)  qpoke st,216,値 / qpeek(st,216)  ※IronHSPのみ。3.7/3.8は lpoke st,216,下位 : lpoke st,220,上位
; FreeSharedMemory : PLSA_FREE_SHARED_MEMORY (+224, 8byte)  qpoke st,224,値 / qpeek(st,224)  ※IronHSPのみ。3.7/3.8は lpoke st,224,下位 : lpoke st,228,上位
; DeleteSharedMemory : PLSA_DELETE_SHARED_MEMORY (+232, 8byte)  qpoke st,232,値 / qpeek(st,232)  ※IronHSPのみ。3.7/3.8は lpoke st,232,下位 : lpoke st,236,上位
; OpenSamUser : PLSA_OPEN_SAM_USER (+240, 8byte)  qpoke st,240,値 / qpeek(st,240)  ※IronHSPのみ。3.7/3.8は lpoke st,240,下位 : lpoke st,244,上位
; GetUserCredentials : PLSA_GET_USER_CREDENTIALS (+248, 8byte)  qpoke st,248,値 / qpeek(st,248)  ※IronHSPのみ。3.7/3.8は lpoke st,248,下位 : lpoke st,252,上位
; GetUserAuthData : PLSA_GET_USER_AUTH_DATA (+256, 8byte)  qpoke st,256,値 / qpeek(st,256)  ※IronHSPのみ。3.7/3.8は lpoke st,256,下位 : lpoke st,260,上位
; CloseSamUser : PLSA_CLOSE_SAM_USER (+264, 8byte)  qpoke st,264,値 / qpeek(st,264)  ※IronHSPのみ。3.7/3.8は lpoke st,264,下位 : lpoke st,268,上位
; ConvertAuthDataToToken : PLSA_CONVERT_AUTH_DATA_TO_TOKEN (+272, 8byte)  qpoke st,272,値 / qpeek(st,272)  ※IronHSPのみ。3.7/3.8は lpoke st,272,下位 : lpoke st,276,上位
; ClientCallback : PLSA_CLIENT_CALLBACK (+280, 8byte)  qpoke st,280,値 / qpeek(st,280)  ※IronHSPのみ。3.7/3.8は lpoke st,280,下位 : lpoke st,284,上位
; UpdateCredentials : PLSA_UPDATE_PRIMARY_CREDENTIALS (+288, 8byte)  qpoke st,288,値 / qpeek(st,288)  ※IronHSPのみ。3.7/3.8は lpoke st,288,下位 : lpoke st,292,上位
; GetAuthDataForUser : PLSA_GET_AUTH_DATA_FOR_USER (+296, 8byte)  qpoke st,296,値 / qpeek(st,296)  ※IronHSPのみ。3.7/3.8は lpoke st,296,下位 : lpoke st,300,上位
; CrackSingleName : PLSA_CRACK_SINGLE_NAME (+304, 8byte)  qpoke st,304,値 / qpeek(st,304)  ※IronHSPのみ。3.7/3.8は lpoke st,304,下位 : lpoke st,308,上位
; AuditAccountLogon : PLSA_AUDIT_ACCOUNT_LOGON (+312, 8byte)  qpoke st,312,値 / qpeek(st,312)  ※IronHSPのみ。3.7/3.8は lpoke st,312,下位 : lpoke st,316,上位
; CallPackagePassthrough : PLSA_CALL_PACKAGE_PASSTHROUGH (+320, 8byte)  qpoke st,320,値 / qpeek(st,320)  ※IronHSPのみ。3.7/3.8は lpoke st,320,下位 : lpoke st,324,上位
; CrediRead : CredReadFn (+328, 8byte)  qpoke st,328,値 / qpeek(st,328)  ※IronHSPのみ。3.7/3.8は lpoke st,328,下位 : lpoke st,332,上位
; CrediReadDomainCredentials : CredReadDomainCredentialsFn (+336, 8byte)  qpoke st,336,値 / qpeek(st,336)  ※IronHSPのみ。3.7/3.8は lpoke st,336,下位 : lpoke st,340,上位
; CrediFreeCredentials : CredFreeCredentialsFn (+344, 8byte)  qpoke st,344,値 / qpeek(st,344)  ※IronHSPのみ。3.7/3.8は lpoke st,344,下位 : lpoke st,348,上位
; LsaProtectMemory : PLSA_PROTECT_MEMORY (+352, 8byte)  qpoke st,352,値 / qpeek(st,352)  ※IronHSPのみ。3.7/3.8は lpoke st,352,下位 : lpoke st,356,上位
; LsaUnprotectMemory : PLSA_PROTECT_MEMORY (+360, 8byte)  qpoke st,360,値 / qpeek(st,360)  ※IronHSPのみ。3.7/3.8は lpoke st,360,下位 : lpoke st,364,上位
; OpenTokenByLogonId : PLSA_OPEN_TOKEN_BY_LOGON_ID (+368, 8byte)  qpoke st,368,値 / qpeek(st,368)  ※IronHSPのみ。3.7/3.8は lpoke st,368,下位 : lpoke st,372,上位
; ExpandAuthDataForDomain : PLSA_EXPAND_AUTH_DATA_FOR_DOMAIN (+376, 8byte)  qpoke st,376,値 / qpeek(st,376)  ※IronHSPのみ。3.7/3.8は lpoke st,376,下位 : lpoke st,380,上位
; AllocatePrivateHeap : PLSA_ALLOCATE_PRIVATE_HEAP (+384, 8byte)  qpoke st,384,値 / qpeek(st,384)  ※IronHSPのみ。3.7/3.8は lpoke st,384,下位 : lpoke st,388,上位
; FreePrivateHeap : PLSA_FREE_PRIVATE_HEAP (+392, 8byte)  qpoke st,392,値 / qpeek(st,392)  ※IronHSPのみ。3.7/3.8は lpoke st,392,下位 : lpoke st,396,上位
; CreateTokenEx : PLSA_CREATE_TOKEN_EX (+400, 8byte)  qpoke st,400,値 / qpeek(st,400)  ※IronHSPのみ。3.7/3.8は lpoke st,400,下位 : lpoke st,404,上位
; CrediWrite : CredWriteFn (+408, 8byte)  qpoke st,408,値 / qpeek(st,408)  ※IronHSPのみ。3.7/3.8は lpoke st,408,下位 : lpoke st,412,上位
; CrediUnmarshalandDecodeString : CrediUnmarshalandDecodeStringFn (+416, 8byte)  qpoke st,416,値 / qpeek(st,416)  ※IronHSPのみ。3.7/3.8は lpoke st,416,下位 : lpoke st,420,上位
; DummyFunction6 : PLSA_PROTECT_MEMORY (+424, 8byte)  qpoke st,424,値 / qpeek(st,424)  ※IronHSPのみ。3.7/3.8は lpoke st,424,下位 : lpoke st,428,上位
; GetExtendedCallFlags : PLSA_GET_EXTENDED_CALL_FLAGS (+432, 8byte)  qpoke st,432,値 / qpeek(st,432)  ※IronHSPのみ。3.7/3.8は lpoke st,432,下位 : lpoke st,436,上位
; DuplicateTokenHandle : PLSA_DUPLICATE_HANDLE (+440, 8byte)  qpoke st,440,値 / qpeek(st,440)  ※IronHSPのみ。3.7/3.8は lpoke st,440,下位 : lpoke st,444,上位
; GetServiceAccountPassword : PLSA_GET_SERVICE_ACCOUNT_PASSWORD (+448, 8byte)  qpoke st,448,値 / qpeek(st,448)  ※IronHSPのみ。3.7/3.8は lpoke st,448,下位 : lpoke st,452,上位
; DummyFunction7 : PLSA_PROTECT_MEMORY (+456, 8byte)  qpoke st,456,値 / qpeek(st,456)  ※IronHSPのみ。3.7/3.8は lpoke st,456,下位 : lpoke st,460,上位
; AuditLogonEx : PLSA_AUDIT_LOGON_EX (+464, 8byte)  qpoke st,464,値 / qpeek(st,464)  ※IronHSPのみ。3.7/3.8は lpoke st,464,下位 : lpoke st,468,上位
; CheckProtectedUserByToken : PLSA_CHECK_PROTECTED_USER_BY_TOKEN (+472, 8byte)  qpoke st,472,値 / qpeek(st,472)  ※IronHSPのみ。3.7/3.8は lpoke st,472,下位 : lpoke st,476,上位
; QueryClientRequest : PLSA_QUERY_CLIENT_REQUEST (+480, 8byte)  qpoke st,480,値 / qpeek(st,480)  ※IronHSPのみ。3.7/3.8は lpoke st,480,下位 : lpoke st,484,上位
; GetAppModeInfo : PLSA_GET_APP_MODE_INFO (+488, 8byte)  qpoke st,488,値 / qpeek(st,488)  ※IronHSPのみ。3.7/3.8は lpoke st,488,下位 : lpoke st,492,上位
; SetAppModeInfo : PLSA_SET_APP_MODE_INFO (+496, 8byte)  qpoke st,496,値 / qpeek(st,496)  ※IronHSPのみ。3.7/3.8は lpoke st,496,下位 : lpoke st,500,上位
; GetClientInfoEx : PLSA_GET_CLIENT_INFO_EX (+504, 8byte)  qpoke st,504,値 / qpeek(st,504)  ※IronHSPのみ。3.7/3.8は lpoke st,504,下位 : lpoke st,508,上位
; GetSecpkgFailureReason : PLSA_GET_SECPKG_FAILURE_REASON (+512, 8byte)  qpoke st,512,値 / qpeek(st,512)  ※IronHSPのみ。3.7/3.8は lpoke st,512,下位 : lpoke st,516,上位
; SetSecpkgFailureReason : PLSA_SET_SECPKG_FAILURE_REASON (+520, 8byte)  qpoke st,520,値 / qpeek(st,520)  ※IronHSPのみ。3.7/3.8は lpoke st,520,下位 : lpoke st,524,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global LSA_SECPKG_FUNCTION_TABLE
    #field intptr CreateLogonSession
    #field intptr DeleteLogonSession
    #field intptr AddCredential
    #field intptr GetCredentials
    #field intptr DeleteCredential
    #field intptr AllocateLsaHeap
    #field intptr FreeLsaHeap
    #field intptr AllocateClientBuffer
    #field intptr FreeClientBuffer
    #field intptr CopyToClientBuffer
    #field intptr CopyFromClientBuffer
    #field intptr ImpersonateClient
    #field intptr UnloadPackage
    #field intptr DuplicateHandle
    #field intptr SaveSupplementalCredentials
    #field intptr CreateThread
    #field intptr GetClientInfo
    #field intptr RegisterNotification
    #field intptr CancelNotification
    #field intptr MapBuffer
    #field intptr CreateToken
    #field intptr AuditLogon
    #field intptr CallPackage
    #field intptr FreeReturnBuffer
    #field intptr GetCallInfo
    #field intptr CallPackageEx
    #field intptr CreateSharedMemory
    #field intptr AllocateSharedMemory
    #field intptr FreeSharedMemory
    #field intptr DeleteSharedMemory
    #field intptr OpenSamUser
    #field intptr GetUserCredentials
    #field intptr GetUserAuthData
    #field intptr CloseSamUser
    #field intptr ConvertAuthDataToToken
    #field intptr ClientCallback
    #field intptr UpdateCredentials
    #field intptr GetAuthDataForUser
    #field intptr CrackSingleName
    #field intptr AuditAccountLogon
    #field intptr CallPackagePassthrough
    #field intptr CrediRead
    #field intptr CrediReadDomainCredentials
    #field intptr CrediFreeCredentials
    #field intptr LsaProtectMemory
    #field intptr LsaUnprotectMemory
    #field intptr OpenTokenByLogonId
    #field intptr ExpandAuthDataForDomain
    #field intptr AllocatePrivateHeap
    #field intptr FreePrivateHeap
    #field intptr CreateTokenEx
    #field intptr CrediWrite
    #field intptr CrediUnmarshalandDecodeString
    #field intptr DummyFunction6
    #field intptr GetExtendedCallFlags
    #field intptr DuplicateTokenHandle
    #field intptr GetServiceAccountPassword
    #field intptr DummyFunction7
    #field intptr AuditLogonEx
    #field intptr CheckProtectedUserByToken
    #field intptr QueryClientRequest
    #field intptr GetAppModeInfo
    #field intptr SetAppModeInfo
    #field intptr GetClientInfoEx
    #field intptr GetSecpkgFailureReason
    #field intptr SetSecpkgFailureReason
#endstruct

stdim st, LSA_SECPKG_FUNCTION_TABLE        ; NSTRUCT 変数を確保