EAP_PEER_METHOD_ROUTINES
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| dwVersion | DWORD | 4 | +0 | +0 | 実装者が定義する構造体のバージョンです。 注意 このフィールドの値は Microsoft によって定義されていません。
|
| pEapType | EAP_TYPE* | 8/4 | +8 | +4 | この構造体のメンバーが指す API の実装者に関するベンダー情報を格納する EAP_TYPE 構造体へのポインターです。 |
| EapPeerInitialize | INT_PTR | 8/4 | +16 | +8 | EapPeerInitialize の関数ポインターです。 pEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体へのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory にポインターを渡してこのメモリを解放する必要があります。 |
| EapPeerGetIdentity | INT_PTR | 8/4 | +24 | +12 | EapPeerGetIdentity の関数ポインターです。 dwflagsEAP 認証セッションの動作を示す EAP フラグ の組み合わせです。 dwSizeofConnectionDatapConnectionData で指定された接続データ バッファーのサイズをバイト単位で指定します pConnectionData不透明な構成データ BLOB を格納するバイト バッファーへのポインターです。 dwSizeOfUserDatapUserData で指定されたユーザー データ バッファーのサイズをバイト単位で指定します。 pUserDataユーザー データを事前設定するために使用される、この認証に固有のユーザー データへのポインターです。 この API が初めて呼び出されるとき、または新しい認証セッションが開始されるときは、このパラメーターは NULL です。 それ以外の場合は、EapPeerGetResult で受け取った ppResult パラメーターが指す構造体の pUserData メンバーをこのパラメーターに設定します。 hTokenImpersonateUser認証対象となるユーザーの偽装トークンへのハンドルを指定します。コンピューター認証を行う場合、このハンドルは NULL になります。EAP メソッドはこのハンドルを使用してユーザーを偽装し、ユーザー名、ドメイン名、資格情報などのユーザー固有の情報を取得できます。 pfInvokeUIユーザー ID とユーザー データ BLOB が正常に返されず、メソッドがユーザー インターフェイス ダイアログを通じてユーザーから情報を収集しようとする場合に TRUE を返します。 pdwSizeOfUserDataOutppUserDataOut バッファーのサイズをバイト単位で指定します。 ppUserDataOut返されるユーザー データへのポインターのポインターです。このデータは、入力 pUserData として EapPeerBeginSession に渡されます。 ppwszIdentity返されるユーザー ID へのポインターです。このポインターは ID 応答パケットに含まれ、サーバーに返されます。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体へのポインターのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerBeginSession | INT_PTR | 8/4 | +32 | +16 | EapPeerBeginSession の関数ポインターです。 dwFlags新しい EAP 認証セッションの動作を示す EAP フラグ の組み合わせです。 pAttributeArray認証するエンティティの EAP 属性を指定する EAP_ATTRIBUTES 配列構造体へのポインターです。 hTokenImpersonateUserこのセッションで使用するユーザー偽装トークンへのハンドルを指定します。 dwSizeOfConnectionDatapConnectionData で指定された接続データ バッファーのサイズをバイト単位で指定します。 pConnectionData不透明な構成データ BLOB を格納するバイト バッファーへのポインターです。 dwSizeOfUserDatapUserData で指定されたユーザー データ バッファーのサイズをバイト単位で指定します。 pUserData不透明なユーザー データ BLOB を格納するバイト バッファーへのポインターです。 dwMaxSendPacketSizeセッション中に送信される EAP パケットの最大サイズをバイト単位で指定します。メソッドが最大サイズを超えるパケットを 送信する必要がある場合、そのメソッドは断片化と再構成に対応しなければなりません。 pSessionHandleEAPHost 上の新しい EAP 認証セッションの一意の ID を格納する EAP_SESSION_HANDLE 構造体へのポインターです ppEapErrorこの関数呼び出しの実行中に EAPHost で発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerSetCredentials | INT_PTR | 8/4 | +40 | +20 | EapPeerSetCredentials の関数ポインターです。 sessionHandleEAPHost サーバー上のこの EAP 認証セッションの一意のハンドルを格納する EAP_SESSION_HANDLE 構造体へのポインターです。このハンドルは、以前の EapPeerBeginSession の呼び出しで pSessionHandle パラメーターに返されます。 pwszIdentity資格情報を設定する対象のユーザー ID を指定するポインターです。このユーザー ID 文字列は、EapPeerGetIdentity 関数を呼び出して取得します。 pwszPasswordユーザー ID のクリア テキスト パスワードを格納するポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerProcessRequestPacket | INT_PTR | 8/4 | +48 | +24 | EapPeerProcessRequestPacket の関数ポインターです。 sessionHandleEAPHost 上の EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 cbReceivePacketpReceivePacket で指定された要求パケットのサイズ (バイト単位) です。 pReceivePacket処理する要求パケットを格納する EapPacket 構造体へのポインターです。 pEapOutputパケット処理操作の出力を格納する EapPeerMethodOutput 構造体へのポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerGetResponsePacket | INT_PTR | 8/4 | +56 | +28 | EapPeerGetResponsePacket の関数ポインターです。 sessionHandleEAPHost 上の EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 pcbSendPacket応答パケット用に割り当てられたバッファーのサイズ (バイト単位) を格納する値へのポインターです。戻り時には、このパラメーターは pSendPacket の実際のサイズ (バイト単位) へのポインターを受け取ります。 pSendPacket応答パケットを格納する EapPacket 構造体へのポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerGetResult | INT_PTR | 8/4 | +64 | +32 | EapPeerGetResult の関数ポインターです。 sessionHandleEAPHost 上の EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 reasonppResult に返される認証結果の理由コードを指定する列挙値です。 ppResult認証結果を格納する EapHostPeerMethodResult 構造体へのポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory にポインターを渡してこのメモリを解放する必要があります。 |
| EapPeerGetUIContext | INT_PTR | 8/4 | +72 | +36 | EapPeerGetUIContext の関数ポインターです。 sessionHandleEAPHost 上の EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 pdwSizeOfUIContextDatappUIContextData に返されるユーザー インターフェイス コンテキスト データのバイト バッファーのサイズを指定する値へのポインターです。 ppUIContextDataEAPHost からのサプリカントのユーザー インターフェイス コンテキスト データを含むバイト バッファーを格納するアドレスへのポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、エラー データへのポインターを EapPeerFreeErrorMemory に渡してこのメモリを解放する必要があります。 |
| EapPeerSetUIContext | INT_PTR | 8/4 | +80 | +40 | EapPeerSetUIContext の関数ポインターです。 sessionHandleEAPHost 上の EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 dwSizeOfUIContextDatapUIContextData で指定された UI コンテキスト データのバイト バッファーのサイズを指定する値へのポインターです。 pUIContextDataEAPHost に設定する新しいサプリカントの UI コンテキスト データを含むバイト バッファーを格納するアドレスへのポインターです。 pEapOutputパケット処理操作の出力を格納する EapPeerMethodOutput 構造体へのポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory にポインターを渡してこのメモリを解放する必要があります。 |
| EapPeerGetResponseAttributes | INT_PTR | 8/4 | +88 | +44 | EapPeerGetResponseAttributes の関数ポインターです。 sessionHandleEAPHost 上の EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 pAttribsサプリカントの EAP 認証応答属性の配列を格納する EAP_ATTRIBUTES 構造体へのポインターを受け取ります。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerSetResponseAttributes | INT_PTR | 8/4 | +96 | +48 | EapPeerSetResponseAttributes の関数ポインターです。 sessionHandleEAPHost 上の EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 pAttribsEAPHost 上のサプリカントに設定する新しい EAP 認証応答属性の配列を格納する EAP_ATTRIBUTES 構造体へのポインターです。 pEapOutput更新された属性への応答としてサプリカントが取るべき推奨アクションを指定する EapPeerMethodOutput 構造体へのポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerEndSession | INT_PTR | 8/4 | +104 | +52 | EapPeerEndSession の関数ポインターです。 sessionHandleEAPHost 上で終了する EAP 認証セッションの固有のハンドルを格納する EAP_SESSION_HANDLE 値です。このハンドルは、以前の EapPeerBeginSession の呼び出しによって取得します。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory を呼び出してこのメモリを解放する必要があります。 |
| EapPeerShutdown | INT_PTR | 8/4 | +112 | +56 | EapPeerShutdown の関数ポインターです。 ppEapErrorこの関数呼び出しの実行中に発生したエラーを格納する EAP_ERROR 構造体のアドレスへのポインターです。エラー データを使用した後は、EapPeerFreeErrorMemory にポインターを渡してこのメモリを解放する必要があります。 |
公式ドキュメント
EAPHost ピア メソッド API への関数ポインターのセットを格納します。
解説(Remarks)
各 EAP メソッド DLL は、次の API を実装しなければなりません。
- EapPeerInitialize
- EapPeerBeginSession
- EapPeerGetIdentity
- EapPeerSetCredentials
- EapPeerProcessRequestPacket
- EapPeerGetResponsePacket
- EapPeerGetResult
- EapPeerGetUIContext
- EapPeerSetUIContext
- EapPeerGetResponseAttributes
- EapPeerSetResponseAttributes
- EapPeerEndSession
- EapPeerShutdown
EAP ピア メソッド API セットのその他の関数は、対応するサプリカントの呼び出しなしにピア ベースの EAPHost によって呼び出され、接続の検証やユーザー インターフェイスの表示操作に使用されます。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// EAP_PEER_METHOD_ROUTINES (x64 120 / x86 60 バイト)
typedef struct EAP_PEER_METHOD_ROUTINES {
DWORD dwVersion;
EAP_TYPE* pEapType;
INT_PTR EapPeerInitialize;
INT_PTR EapPeerGetIdentity;
INT_PTR EapPeerBeginSession;
INT_PTR EapPeerSetCredentials;
INT_PTR EapPeerProcessRequestPacket;
INT_PTR EapPeerGetResponsePacket;
INT_PTR EapPeerGetResult;
INT_PTR EapPeerGetUIContext;
INT_PTR EapPeerSetUIContext;
INT_PTR EapPeerGetResponseAttributes;
INT_PTR EapPeerSetResponseAttributes;
INT_PTR EapPeerEndSession;
INT_PTR EapPeerShutdown;
} EAP_PEER_METHOD_ROUTINES;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct EAP_PEER_METHOD_ROUTINES
{
public uint dwVersion;
public IntPtr pEapType;
public IntPtr EapPeerInitialize;
public IntPtr EapPeerGetIdentity;
public IntPtr EapPeerBeginSession;
public IntPtr EapPeerSetCredentials;
public IntPtr EapPeerProcessRequestPacket;
public IntPtr EapPeerGetResponsePacket;
public IntPtr EapPeerGetResult;
public IntPtr EapPeerGetUIContext;
public IntPtr EapPeerSetUIContext;
public IntPtr EapPeerGetResponseAttributes;
public IntPtr EapPeerSetResponseAttributes;
public IntPtr EapPeerEndSession;
public IntPtr EapPeerShutdown;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure EAP_PEER_METHOD_ROUTINES
Public dwVersion As UInteger
Public pEapType As IntPtr
Public EapPeerInitialize As IntPtr
Public EapPeerGetIdentity As IntPtr
Public EapPeerBeginSession As IntPtr
Public EapPeerSetCredentials As IntPtr
Public EapPeerProcessRequestPacket As IntPtr
Public EapPeerGetResponsePacket As IntPtr
Public EapPeerGetResult As IntPtr
Public EapPeerGetUIContext As IntPtr
Public EapPeerSetUIContext As IntPtr
Public EapPeerGetResponseAttributes As IntPtr
Public EapPeerSetResponseAttributes As IntPtr
Public EapPeerEndSession As IntPtr
Public EapPeerShutdown As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class EAP_PEER_METHOD_ROUTINES(ctypes.Structure):
_fields_ = [
("dwVersion", wintypes.DWORD),
("pEapType", ctypes.c_void_p),
("EapPeerInitialize", ctypes.c_ssize_t),
("EapPeerGetIdentity", ctypes.c_ssize_t),
("EapPeerBeginSession", ctypes.c_ssize_t),
("EapPeerSetCredentials", ctypes.c_ssize_t),
("EapPeerProcessRequestPacket", ctypes.c_ssize_t),
("EapPeerGetResponsePacket", ctypes.c_ssize_t),
("EapPeerGetResult", ctypes.c_ssize_t),
("EapPeerGetUIContext", ctypes.c_ssize_t),
("EapPeerSetUIContext", ctypes.c_ssize_t),
("EapPeerGetResponseAttributes", ctypes.c_ssize_t),
("EapPeerSetResponseAttributes", ctypes.c_ssize_t),
("EapPeerEndSession", ctypes.c_ssize_t),
("EapPeerShutdown", ctypes.c_ssize_t),
]#[repr(C)]
pub struct EAP_PEER_METHOD_ROUTINES {
pub dwVersion: u32,
pub pEapType: *mut core::ffi::c_void,
pub EapPeerInitialize: isize,
pub EapPeerGetIdentity: isize,
pub EapPeerBeginSession: isize,
pub EapPeerSetCredentials: isize,
pub EapPeerProcessRequestPacket: isize,
pub EapPeerGetResponsePacket: isize,
pub EapPeerGetResult: isize,
pub EapPeerGetUIContext: isize,
pub EapPeerSetUIContext: isize,
pub EapPeerGetResponseAttributes: isize,
pub EapPeerSetResponseAttributes: isize,
pub EapPeerEndSession: isize,
pub EapPeerShutdown: isize,
}import "golang.org/x/sys/windows"
type EAP_PEER_METHOD_ROUTINES struct {
dwVersion uint32
pEapType uintptr
EapPeerInitialize uintptr
EapPeerGetIdentity uintptr
EapPeerBeginSession uintptr
EapPeerSetCredentials uintptr
EapPeerProcessRequestPacket uintptr
EapPeerGetResponsePacket uintptr
EapPeerGetResult uintptr
EapPeerGetUIContext uintptr
EapPeerSetUIContext uintptr
EapPeerGetResponseAttributes uintptr
EapPeerSetResponseAttributes uintptr
EapPeerEndSession uintptr
EapPeerShutdown uintptr
}type
EAP_PEER_METHOD_ROUTINES = record
dwVersion: DWORD;
pEapType: Pointer;
EapPeerInitialize: NativeInt;
EapPeerGetIdentity: NativeInt;
EapPeerBeginSession: NativeInt;
EapPeerSetCredentials: NativeInt;
EapPeerProcessRequestPacket: NativeInt;
EapPeerGetResponsePacket: NativeInt;
EapPeerGetResult: NativeInt;
EapPeerGetUIContext: NativeInt;
EapPeerSetUIContext: NativeInt;
EapPeerGetResponseAttributes: NativeInt;
EapPeerSetResponseAttributes: NativeInt;
EapPeerEndSession: NativeInt;
EapPeerShutdown: NativeInt;
end;const EAP_PEER_METHOD_ROUTINES = extern struct {
dwVersion: u32,
pEapType: ?*anyopaque,
EapPeerInitialize: isize,
EapPeerGetIdentity: isize,
EapPeerBeginSession: isize,
EapPeerSetCredentials: isize,
EapPeerProcessRequestPacket: isize,
EapPeerGetResponsePacket: isize,
EapPeerGetResult: isize,
EapPeerGetUIContext: isize,
EapPeerSetUIContext: isize,
EapPeerGetResponseAttributes: isize,
EapPeerSetResponseAttributes: isize,
EapPeerEndSession: isize,
EapPeerShutdown: isize,
};type
EAP_PEER_METHOD_ROUTINES {.bycopy.} = object
dwVersion: uint32
pEapType: pointer
EapPeerInitialize: int
EapPeerGetIdentity: int
EapPeerBeginSession: int
EapPeerSetCredentials: int
EapPeerProcessRequestPacket: int
EapPeerGetResponsePacket: int
EapPeerGetResult: int
EapPeerGetUIContext: int
EapPeerSetUIContext: int
EapPeerGetResponseAttributes: int
EapPeerSetResponseAttributes: int
EapPeerEndSession: int
EapPeerShutdown: intstruct EAP_PEER_METHOD_ROUTINES
{
uint dwVersion;
void* pEapType;
ptrdiff_t EapPeerInitialize;
ptrdiff_t EapPeerGetIdentity;
ptrdiff_t EapPeerBeginSession;
ptrdiff_t EapPeerSetCredentials;
ptrdiff_t EapPeerProcessRequestPacket;
ptrdiff_t EapPeerGetResponsePacket;
ptrdiff_t EapPeerGetResult;
ptrdiff_t EapPeerGetUIContext;
ptrdiff_t EapPeerSetUIContext;
ptrdiff_t EapPeerGetResponseAttributes;
ptrdiff_t EapPeerSetResponseAttributes;
ptrdiff_t EapPeerEndSession;
ptrdiff_t EapPeerShutdown;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; EAP_PEER_METHOD_ROUTINES サイズ: 60 バイト(x86)
dim st, 15 ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; dwVersion : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pEapType : EAP_TYPE* (+4, 4byte) varptr(st)+4 を基点に操作(4byte:入れ子/配列)
; EapPeerInitialize : INT_PTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; EapPeerGetIdentity : INT_PTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; EapPeerBeginSession : INT_PTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; EapPeerSetCredentials : INT_PTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; EapPeerProcessRequestPacket : INT_PTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; EapPeerGetResponsePacket : INT_PTR (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; EapPeerGetResult : INT_PTR (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; EapPeerGetUIContext : INT_PTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; EapPeerSetUIContext : INT_PTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; EapPeerGetResponseAttributes : INT_PTR (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; EapPeerSetResponseAttributes : INT_PTR (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; EapPeerEndSession : INT_PTR (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; EapPeerShutdown : INT_PTR (+56, 4byte) st.14 = 値 / 値 = st.14 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; EAP_PEER_METHOD_ROUTINES サイズ: 120 バイト(x64)
dim st, 30 ; 4byte整数×30(構造体サイズ 120 / 4 切り上げ)
; dwVersion : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; pEapType : EAP_TYPE* (+8, 8byte) varptr(st)+8 を基点に操作(8byte:入れ子/配列)
; EapPeerInitialize : INT_PTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; EapPeerGetIdentity : INT_PTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; EapPeerBeginSession : INT_PTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; EapPeerSetCredentials : INT_PTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; EapPeerProcessRequestPacket : INT_PTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; EapPeerGetResponsePacket : INT_PTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; EapPeerGetResult : INT_PTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; EapPeerGetUIContext : INT_PTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; EapPeerSetUIContext : INT_PTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; EapPeerGetResponseAttributes : INT_PTR (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; EapPeerSetResponseAttributes : INT_PTR (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; EapPeerEndSession : INT_PTR (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; EapPeerShutdown : INT_PTR (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global EAP_PEER_METHOD_ROUTINES
#field int dwVersion
#field intptr pEapType
#field intptr EapPeerInitialize
#field intptr EapPeerGetIdentity
#field intptr EapPeerBeginSession
#field intptr EapPeerSetCredentials
#field intptr EapPeerProcessRequestPacket
#field intptr EapPeerGetResponsePacket
#field intptr EapPeerGetResult
#field intptr EapPeerGetUIContext
#field intptr EapPeerSetUIContext
#field intptr EapPeerGetResponseAttributes
#field intptr EapPeerSetResponseAttributes
#field intptr EapPeerEndSession
#field intptr EapPeerShutdown
#endstruct
stdim st, EAP_PEER_METHOD_ROUTINES ; NSTRUCT 変数を確保
st->dwVersion = 100
mes "dwVersion=" + st->dwVersion