ホーム › NetworkManagement.Rras › MPRAPI_ADMIN_DLL_CALLBACKS
MPRAPI_ADMIN_DLL_CALLBACKS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| revision | BYTE | 1 | +0 | +0 | コールバック構造体のリビジョン番号を表すバイト値。 |
| lpfnMprAdminGetIpAddressForUser | PMPRADMINGETIPADDRESSFORUSER | 8/4 | +8 | +4 | ユーザーにIPv4アドレスを割り当てるコールバック関数ポインタ。 |
| lpfnMprAdminReleaseIpAddress | PMPRADMINRELEASEIPADRESS | 8/4 | +16 | +8 | 割り当てたIPv4アドレスを解放するコールバック関数ポインタ。 |
| lpfnMprAdminGetIpv6AddressForUser | PMPRADMINGETIPV6ADDRESSFORUSER | 8/4 | +24 | +12 | ユーザーにIPv6アドレスを割り当てるコールバック関数ポインタ。 |
| lpfnMprAdminReleaseIpV6AddressForUser | PMPRADMINRELEASEIPV6ADDRESSFORUSER | 8/4 | +32 | +16 | 割り当てたIPv6アドレスを解放するコールバック関数ポインタ。 |
| lpfnRasAdminAcceptNewLink | PMPRADMINACCEPTNEWLINK | 8/4 | +40 | +20 | 新規リンク受け入れ時に呼ばれるコールバック関数ポインタ。 |
| lpfnRasAdminLinkHangupNotification | PMPRADMINLINKHANGUPNOTIFICATION | 8/4 | +48 | +24 | リンク切断を通知するコールバック関数ポインタ。 |
| lpfnRasAdminTerminateDll | PMPRADMINTERMINATEDLL | 8/4 | +56 | +28 | DLL終了処理を行うコールバック関数ポインタ。 |
| lpfnRasAdminAcceptNewConnectionEx | PMPRADMINACCEPTNEWCONNECTIONEX | 8/4 | +64 | +32 | 新規接続受け入れ時に呼ばれるコールバック関数ポインタ(拡張版)。 |
| lpfnRasAdminAcceptEndpointChangeEx | PMPRADMINACCEPTTUNNELENDPOINTCHANGEEX | 8/4 | +72 | +36 | トンネルエンドポイント変更を受け入れるコールバック関数ポインタ。 |
| lpfnRasAdminAcceptReauthenticationEx | PMPRADMINACCEPTREAUTHENTICATIONEX | 8/4 | +80 | +40 | 再認証を受け入れるコールバック関数ポインタ(拡張版)。 |
| lpfnRasAdminConnectionHangupNotificationEx | PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX | 8/4 | +88 | +44 | 接続切断を通知するコールバック関数ポインタ(拡張版)。 |
| lpfnRASValidatePreAuthenticatedConnectionEx | PMPRADMINRASVALIDATEPREAUTHENTICATEDCONNECTIONEX | 8/4 | +96 | +48 | 事前認証済み接続を検証するコールバック関数ポインタ。 |
各言語での定義
#include <windows.h>
// MPRAPI_ADMIN_DLL_CALLBACKS (x64 104 / x86 52 バイト)
typedef struct MPRAPI_ADMIN_DLL_CALLBACKS {
BYTE revision;
PMPRADMINGETIPADDRESSFORUSER lpfnMprAdminGetIpAddressForUser;
PMPRADMINRELEASEIPADRESS lpfnMprAdminReleaseIpAddress;
PMPRADMINGETIPV6ADDRESSFORUSER lpfnMprAdminGetIpv6AddressForUser;
PMPRADMINRELEASEIPV6ADDRESSFORUSER lpfnMprAdminReleaseIpV6AddressForUser;
PMPRADMINACCEPTNEWLINK lpfnRasAdminAcceptNewLink;
PMPRADMINLINKHANGUPNOTIFICATION lpfnRasAdminLinkHangupNotification;
PMPRADMINTERMINATEDLL lpfnRasAdminTerminateDll;
PMPRADMINACCEPTNEWCONNECTIONEX lpfnRasAdminAcceptNewConnectionEx;
PMPRADMINACCEPTTUNNELENDPOINTCHANGEEX lpfnRasAdminAcceptEndpointChangeEx;
PMPRADMINACCEPTREAUTHENTICATIONEX lpfnRasAdminAcceptReauthenticationEx;
PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX lpfnRasAdminConnectionHangupNotificationEx;
PMPRADMINRASVALIDATEPREAUTHENTICATEDCONNECTIONEX lpfnRASValidatePreAuthenticatedConnectionEx;
} MPRAPI_ADMIN_DLL_CALLBACKS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MPRAPI_ADMIN_DLL_CALLBACKS
{
public byte revision;
public IntPtr lpfnMprAdminGetIpAddressForUser;
public IntPtr lpfnMprAdminReleaseIpAddress;
public IntPtr lpfnMprAdminGetIpv6AddressForUser;
public IntPtr lpfnMprAdminReleaseIpV6AddressForUser;
public IntPtr lpfnRasAdminAcceptNewLink;
public IntPtr lpfnRasAdminLinkHangupNotification;
public IntPtr lpfnRasAdminTerminateDll;
public IntPtr lpfnRasAdminAcceptNewConnectionEx;
public IntPtr lpfnRasAdminAcceptEndpointChangeEx;
public IntPtr lpfnRasAdminAcceptReauthenticationEx;
public IntPtr lpfnRasAdminConnectionHangupNotificationEx;
public IntPtr lpfnRASValidatePreAuthenticatedConnectionEx;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MPRAPI_ADMIN_DLL_CALLBACKS
Public revision As Byte
Public lpfnMprAdminGetIpAddressForUser As IntPtr
Public lpfnMprAdminReleaseIpAddress As IntPtr
Public lpfnMprAdminGetIpv6AddressForUser As IntPtr
Public lpfnMprAdminReleaseIpV6AddressForUser As IntPtr
Public lpfnRasAdminAcceptNewLink As IntPtr
Public lpfnRasAdminLinkHangupNotification As IntPtr
Public lpfnRasAdminTerminateDll As IntPtr
Public lpfnRasAdminAcceptNewConnectionEx As IntPtr
Public lpfnRasAdminAcceptEndpointChangeEx As IntPtr
Public lpfnRasAdminAcceptReauthenticationEx As IntPtr
Public lpfnRasAdminConnectionHangupNotificationEx As IntPtr
Public lpfnRASValidatePreAuthenticatedConnectionEx As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class MPRAPI_ADMIN_DLL_CALLBACKS(ctypes.Structure):
_fields_ = [
("revision", ctypes.c_ubyte),
("lpfnMprAdminGetIpAddressForUser", ctypes.c_void_p),
("lpfnMprAdminReleaseIpAddress", ctypes.c_void_p),
("lpfnMprAdminGetIpv6AddressForUser", ctypes.c_void_p),
("lpfnMprAdminReleaseIpV6AddressForUser", ctypes.c_void_p),
("lpfnRasAdminAcceptNewLink", ctypes.c_void_p),
("lpfnRasAdminLinkHangupNotification", ctypes.c_void_p),
("lpfnRasAdminTerminateDll", ctypes.c_void_p),
("lpfnRasAdminAcceptNewConnectionEx", ctypes.c_void_p),
("lpfnRasAdminAcceptEndpointChangeEx", ctypes.c_void_p),
("lpfnRasAdminAcceptReauthenticationEx", ctypes.c_void_p),
("lpfnRasAdminConnectionHangupNotificationEx", ctypes.c_void_p),
("lpfnRASValidatePreAuthenticatedConnectionEx", ctypes.c_void_p),
]#[repr(C)]
pub struct MPRAPI_ADMIN_DLL_CALLBACKS {
pub revision: u8,
pub lpfnMprAdminGetIpAddressForUser: *mut core::ffi::c_void,
pub lpfnMprAdminReleaseIpAddress: *mut core::ffi::c_void,
pub lpfnMprAdminGetIpv6AddressForUser: *mut core::ffi::c_void,
pub lpfnMprAdminReleaseIpV6AddressForUser: *mut core::ffi::c_void,
pub lpfnRasAdminAcceptNewLink: *mut core::ffi::c_void,
pub lpfnRasAdminLinkHangupNotification: *mut core::ffi::c_void,
pub lpfnRasAdminTerminateDll: *mut core::ffi::c_void,
pub lpfnRasAdminAcceptNewConnectionEx: *mut core::ffi::c_void,
pub lpfnRasAdminAcceptEndpointChangeEx: *mut core::ffi::c_void,
pub lpfnRasAdminAcceptReauthenticationEx: *mut core::ffi::c_void,
pub lpfnRasAdminConnectionHangupNotificationEx: *mut core::ffi::c_void,
pub lpfnRASValidatePreAuthenticatedConnectionEx: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type MPRAPI_ADMIN_DLL_CALLBACKS struct {
revision byte
lpfnMprAdminGetIpAddressForUser uintptr
lpfnMprAdminReleaseIpAddress uintptr
lpfnMprAdminGetIpv6AddressForUser uintptr
lpfnMprAdminReleaseIpV6AddressForUser uintptr
lpfnRasAdminAcceptNewLink uintptr
lpfnRasAdminLinkHangupNotification uintptr
lpfnRasAdminTerminateDll uintptr
lpfnRasAdminAcceptNewConnectionEx uintptr
lpfnRasAdminAcceptEndpointChangeEx uintptr
lpfnRasAdminAcceptReauthenticationEx uintptr
lpfnRasAdminConnectionHangupNotificationEx uintptr
lpfnRASValidatePreAuthenticatedConnectionEx uintptr
}type
MPRAPI_ADMIN_DLL_CALLBACKS = record
revision: Byte;
lpfnMprAdminGetIpAddressForUser: Pointer;
lpfnMprAdminReleaseIpAddress: Pointer;
lpfnMprAdminGetIpv6AddressForUser: Pointer;
lpfnMprAdminReleaseIpV6AddressForUser: Pointer;
lpfnRasAdminAcceptNewLink: Pointer;
lpfnRasAdminLinkHangupNotification: Pointer;
lpfnRasAdminTerminateDll: Pointer;
lpfnRasAdminAcceptNewConnectionEx: Pointer;
lpfnRasAdminAcceptEndpointChangeEx: Pointer;
lpfnRasAdminAcceptReauthenticationEx: Pointer;
lpfnRasAdminConnectionHangupNotificationEx: Pointer;
lpfnRASValidatePreAuthenticatedConnectionEx: Pointer;
end;const MPRAPI_ADMIN_DLL_CALLBACKS = extern struct {
revision: u8,
lpfnMprAdminGetIpAddressForUser: ?*anyopaque,
lpfnMprAdminReleaseIpAddress: ?*anyopaque,
lpfnMprAdminGetIpv6AddressForUser: ?*anyopaque,
lpfnMprAdminReleaseIpV6AddressForUser: ?*anyopaque,
lpfnRasAdminAcceptNewLink: ?*anyopaque,
lpfnRasAdminLinkHangupNotification: ?*anyopaque,
lpfnRasAdminTerminateDll: ?*anyopaque,
lpfnRasAdminAcceptNewConnectionEx: ?*anyopaque,
lpfnRasAdminAcceptEndpointChangeEx: ?*anyopaque,
lpfnRasAdminAcceptReauthenticationEx: ?*anyopaque,
lpfnRasAdminConnectionHangupNotificationEx: ?*anyopaque,
lpfnRASValidatePreAuthenticatedConnectionEx: ?*anyopaque,
};type
MPRAPI_ADMIN_DLL_CALLBACKS {.bycopy.} = object
revision: uint8
lpfnMprAdminGetIpAddressForUser: pointer
lpfnMprAdminReleaseIpAddress: pointer
lpfnMprAdminGetIpv6AddressForUser: pointer
lpfnMprAdminReleaseIpV6AddressForUser: pointer
lpfnRasAdminAcceptNewLink: pointer
lpfnRasAdminLinkHangupNotification: pointer
lpfnRasAdminTerminateDll: pointer
lpfnRasAdminAcceptNewConnectionEx: pointer
lpfnRasAdminAcceptEndpointChangeEx: pointer
lpfnRasAdminAcceptReauthenticationEx: pointer
lpfnRasAdminConnectionHangupNotificationEx: pointer
lpfnRASValidatePreAuthenticatedConnectionEx: pointerstruct MPRAPI_ADMIN_DLL_CALLBACKS
{
ubyte revision;
void* lpfnMprAdminGetIpAddressForUser;
void* lpfnMprAdminReleaseIpAddress;
void* lpfnMprAdminGetIpv6AddressForUser;
void* lpfnMprAdminReleaseIpV6AddressForUser;
void* lpfnRasAdminAcceptNewLink;
void* lpfnRasAdminLinkHangupNotification;
void* lpfnRasAdminTerminateDll;
void* lpfnRasAdminAcceptNewConnectionEx;
void* lpfnRasAdminAcceptEndpointChangeEx;
void* lpfnRasAdminAcceptReauthenticationEx;
void* lpfnRasAdminConnectionHangupNotificationEx;
void* lpfnRASValidatePreAuthenticatedConnectionEx;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MPRAPI_ADMIN_DLL_CALLBACKS サイズ: 52 バイト(x86)
dim st, 13 ; 4byte整数×13(構造体サイズ 52 / 4 切り上げ)
; revision : BYTE (+0, 1byte) poke st,0,値 / 値 = peek(st,0)
; lpfnMprAdminGetIpAddressForUser : PMPRADMINGETIPADDRESSFORUSER (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; lpfnMprAdminReleaseIpAddress : PMPRADMINRELEASEIPADRESS (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; lpfnMprAdminGetIpv6AddressForUser : PMPRADMINGETIPV6ADDRESSFORUSER (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; lpfnMprAdminReleaseIpV6AddressForUser : PMPRADMINRELEASEIPV6ADDRESSFORUSER (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; lpfnRasAdminAcceptNewLink : PMPRADMINACCEPTNEWLINK (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; lpfnRasAdminLinkHangupNotification : PMPRADMINLINKHANGUPNOTIFICATION (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; lpfnRasAdminTerminateDll : PMPRADMINTERMINATEDLL (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; lpfnRasAdminAcceptNewConnectionEx : PMPRADMINACCEPTNEWCONNECTIONEX (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; lpfnRasAdminAcceptEndpointChangeEx : PMPRADMINACCEPTTUNNELENDPOINTCHANGEEX (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; lpfnRasAdminAcceptReauthenticationEx : PMPRADMINACCEPTREAUTHENTICATIONEX (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; lpfnRasAdminConnectionHangupNotificationEx : PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; lpfnRASValidatePreAuthenticatedConnectionEx : PMPRADMINRASVALIDATEPREAUTHENTICATEDCONNECTIONEX (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MPRAPI_ADMIN_DLL_CALLBACKS サイズ: 104 バイト(x64)
dim st, 26 ; 4byte整数×26(構造体サイズ 104 / 4 切り上げ)
; revision : BYTE (+0, 1byte) poke st,0,値 / 値 = peek(st,0)
; lpfnMprAdminGetIpAddressForUser : PMPRADMINGETIPADDRESSFORUSER (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; lpfnMprAdminReleaseIpAddress : PMPRADMINRELEASEIPADRESS (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; lpfnMprAdminGetIpv6AddressForUser : PMPRADMINGETIPV6ADDRESSFORUSER (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; lpfnMprAdminReleaseIpV6AddressForUser : PMPRADMINRELEASEIPV6ADDRESSFORUSER (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; lpfnRasAdminAcceptNewLink : PMPRADMINACCEPTNEWLINK (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; lpfnRasAdminLinkHangupNotification : PMPRADMINLINKHANGUPNOTIFICATION (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; lpfnRasAdminTerminateDll : PMPRADMINTERMINATEDLL (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; lpfnRasAdminAcceptNewConnectionEx : PMPRADMINACCEPTNEWCONNECTIONEX (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; lpfnRasAdminAcceptEndpointChangeEx : PMPRADMINACCEPTTUNNELENDPOINTCHANGEEX (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; lpfnRasAdminAcceptReauthenticationEx : PMPRADMINACCEPTREAUTHENTICATIONEX (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; lpfnRasAdminConnectionHangupNotificationEx : PMPRADMINCONNECTIONHANGUPNOTIFICATIONEX (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; lpfnRASValidatePreAuthenticatedConnectionEx : PMPRADMINRASVALIDATEPREAUTHENTICATEDCONNECTIONEX (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MPRAPI_ADMIN_DLL_CALLBACKS
#field byte revision
#field intptr lpfnMprAdminGetIpAddressForUser
#field intptr lpfnMprAdminReleaseIpAddress
#field intptr lpfnMprAdminGetIpv6AddressForUser
#field intptr lpfnMprAdminReleaseIpV6AddressForUser
#field intptr lpfnRasAdminAcceptNewLink
#field intptr lpfnRasAdminLinkHangupNotification
#field intptr lpfnRasAdminTerminateDll
#field intptr lpfnRasAdminAcceptNewConnectionEx
#field intptr lpfnRasAdminAcceptEndpointChangeEx
#field intptr lpfnRasAdminAcceptReauthenticationEx
#field intptr lpfnRasAdminConnectionHangupNotificationEx
#field intptr lpfnRASValidatePreAuthenticatedConnectionEx
#endstruct
stdim st, MPRAPI_ADMIN_DLL_CALLBACKS ; NSTRUCT 変数を確保
st->revision = 100
mes "revision=" + st->revision