ホーム › NetworkManagement.Rras › RAS_CONNECTION_EX
RAS_CONNECTION_EX
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Header | MPRAPI_OBJECT_HEADER | 4 | +0 | +0 | RAS_CONNECTION_EX 構造体のバージョンを指定する MPRAPI_OBJECT_HEADER 構造体です。 注意 Header の revision メンバーは MPRAPI_RAS_CONNECTION_OBJECT_REVISION_1 でなければならず、type は MPRAPI_OBJECT_TYPE_RAS_CONNECTION_OBJECT でなければなりません。
| ||||||||||||||
| dwConnectDuration | DWORD | 4 | +4 | +4 | 接続の継続時間を秒単位で表す値です。 | ||||||||||||||
| dwInterfaceType | ROUTER_INTERFACE_TYPE | 4 | +8 | +8 | 接続インターフェイスの種類を識別する ROUTER_INTERFACE_TYPE 列挙型です。 | ||||||||||||||
| dwConnectionFlags | RAS_FLAGS | 4 | +12 | +12 | 接続の属性を指定するフラグのビットマップです。dwConnectionFlags には、次の値のうち少なくとも 1 つが含まれていなければなりません。
| ||||||||||||||
| wszInterfaceName | WCHAR | 514 | +16 | +16 | この接続のインターフェイス名を格納する、null で終わる Unicode 文字列です。 | ||||||||||||||
| wszUserName | WCHAR | 514 | +530 | +530 | 接続にログオンしているユーザーの名前を格納する、null で終わる Unicode 文字列です。 | ||||||||||||||
| wszLogonDomain | WCHAR | 32 | +1044 | +1044 | 接続したユーザーが認証されるドメインを格納する、null で終わる Unicode 文字列です。 | ||||||||||||||
| wszRemoteComputer | WCHAR | 34 | +1076 | +1076 | リモート コンピューターの名前を格納する、null で終わる Unicode 文字列です。 | ||||||||||||||
| guid | GUID | 16 | +1112 | +1112 | 接続を識別する GUID です。着信接続の場合、この GUID は接続がアクティブである間のみ有効です。 | ||||||||||||||
| rasQuarState | RAS_QUARANTINE_STATE | 4 | +1128 | +1128 | 接続の NAP 検疫状態を指定する RAS_QUARANTINE_STATE 構造体です。 | ||||||||||||||
| probationTime | FILETIME | 8 | +1132 | +1132 | 接続が検疫から解除されるまでに必要な時間を指定する FILETIME 構造体です。この時間を過ぎると接続は切断されます。この値は、rasQuarState の値が RAS_QUAR_STATE_PROBATION の場合にのみ有効です。 | ||||||||||||||
| dwBytesXmited | DWORD | 4 | +1140 | +1140 | 接続で送信されたバイト数を指定する値です。 | ||||||||||||||
| dwBytesRcved | DWORD | 4 | +1144 | +1144 | 接続で受信されたバイト数を指定する値です。 | ||||||||||||||
| dwFramesXmited | DWORD | 4 | +1148 | +1148 | 接続で送信されたフレーム数を指定する値です。 | ||||||||||||||
| dwFramesRcved | DWORD | 4 | +1152 | +1152 | 接続で受信されたフレーム数を指定する値です。 | ||||||||||||||
| dwCrcErr | DWORD | 4 | +1156 | +1156 | 接続で発生した巡回冗長検査 (CRC) エラーの数を指定する値です。 | ||||||||||||||
| dwTimeoutErr | DWORD | 4 | +1160 | +1160 | 接続で発生したタイムアウト エラーの数を指定する値です。 | ||||||||||||||
| dwAlignmentErr | DWORD | 4 | +1164 | +1164 | 接続で発生したアラインメント エラーの数を指定する値です。 | ||||||||||||||
| dwHardwareOverrunErr | DWORD | 4 | +1168 | +1168 | 接続で発生したハードウェア オーバーラン エラーの数を指定する値です。 | ||||||||||||||
| dwFramingErr | DWORD | 4 | +1172 | +1172 | 接続で発生したフレーミング エラーの数を指定する値です。 | ||||||||||||||
| dwBufferOverrunErr | DWORD | 4 | +1176 | +1176 | 接続で発生したバッファー オーバーラン エラーの数を指定する値です。 | ||||||||||||||
| dwCompressionRatioIn | DWORD | 4 | +1180 | +1180 | この接続で受信されたデータが圧縮されている割合をパーセントで指定する値です。dwCompressionRatioIn は、圧縮されたデータのサイズを、同じデータの非圧縮状態でのサイズで割った値です。 | ||||||||||||||
| dwCompressionRatioOut | DWORD | 4 | +1184 | +1184 | この接続で送信されたデータが圧縮されている割合をパーセントで指定する値です。この比率は、圧縮されたデータのサイズを、同じデータの非圧縮状態でのサイズで割った値です。 | ||||||||||||||
| dwNumSwitchOvers | DWORD | 4 | +1188 | +1188 | RFC4555 で定義されている、接続で発生した IKEv2 Mobility and Multihoming Protocol (MOBIKE) の切り替え回数を指定する値です。dwNumSwitchOvers は、dwConnectionFlags が RAS_FLAGS_IKEV2_CONNECTION の場合にのみ有効です。 | ||||||||||||||
| wszRemoteEndpointAddress | WCHAR | 130 | +1192 | +1192 | 接続におけるリモート コンピューターの IP アドレスを格納する、null で終わる Unicode 文字列です。この文字列は "a.b.c.d" の形式です。 | ||||||||||||||
| wszLocalEndpointAddress | WCHAR | 130 | +1322 | +1322 | 接続におけるローカル コンピューターの IP アドレスを格納する、null で終わる Unicode 文字列です。この文字列は "a.b.c.d" の形式です。 | ||||||||||||||
| ProjectionInfo | PROJECTION_INFO | 200 | +1456 | +1456 | PPP_PROJECTION_INFO または IKEV2_PROJECTION_INFO のいずれかの構造体を格納する PROJECTION_INFO 構造体です。 | ||||||||||||||
| hConnection | HANDLE | 8/4 | +1656 | +1656 | RAS 接続のハンドルです。 | ||||||||||||||
| hInterface | HANDLE | 8/4 | +1664 | +1660 | RAS 接続インターフェイスのハンドルです。 |
公式ドキュメント
RAS_CONNECTION_EX 構造体は、接続に関する固有の情報を格納します。この情報には、接続に関連付けられたユーザー名、ドメイン、グローバル一意識別子 (GUID)、ネットワーク アクセス保護 (NAP) の検疫状態、パケット統計、および Point-to-Point (PPP) と Internet Key Exchange version 2 (IKEv2) に関連する情報が含まれます。
RAS_CONNECTION_EX 構造体には、RAS_CONNECTION_0、 RAS_CONNECTION_1、RAS_CONNECTION_2、RAS_CONNECTION_3 を合わせた構造体とほぼ同じ情報が含まれます。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#include <windows.h>
// MPRAPI_OBJECT_HEADER (x64 4 / x86 4 バイト)
typedef struct MPRAPI_OBJECT_HEADER {
BYTE revision;
BYTE type;
WORD size;
} MPRAPI_OBJECT_HEADER;
// FILETIME (x64 8 / x86 8 バイト)
typedef struct FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
// PROJECTION_INFO (x64 200 / x86 200 バイト)
typedef struct PROJECTION_INFO {
BYTE projectionInfoType;
_Anonymous_e__Union Anonymous;
} PROJECTION_INFO;
// RAS_CONNECTION_EX (x64 1672 / x86 1664 バイト)
typedef struct RAS_CONNECTION_EX {
MPRAPI_OBJECT_HEADER Header;
DWORD dwConnectDuration;
ROUTER_INTERFACE_TYPE dwInterfaceType;
RAS_FLAGS dwConnectionFlags;
WCHAR wszInterfaceName[257];
WCHAR wszUserName[257];
WCHAR wszLogonDomain[16];
WCHAR wszRemoteComputer[17];
GUID guid;
RAS_QUARANTINE_STATE rasQuarState;
FILETIME probationTime;
DWORD dwBytesXmited;
DWORD dwBytesRcved;
DWORD dwFramesXmited;
DWORD dwFramesRcved;
DWORD dwCrcErr;
DWORD dwTimeoutErr;
DWORD dwAlignmentErr;
DWORD dwHardwareOverrunErr;
DWORD dwFramingErr;
DWORD dwBufferOverrunErr;
DWORD dwCompressionRatioIn;
DWORD dwCompressionRatioOut;
DWORD dwNumSwitchOvers;
WCHAR wszRemoteEndpointAddress[65];
WCHAR wszLocalEndpointAddress[65];
PROJECTION_INFO ProjectionInfo;
HANDLE hConnection;
HANDLE hInterface;
} RAS_CONNECTION_EX;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MPRAPI_OBJECT_HEADER
{
public byte revision;
public byte type;
public ushort size;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
public uint dwLowDateTime;
public uint dwHighDateTime;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PROJECTION_INFO
{
public byte projectionInfoType;
public _Anonymous_e__Union Anonymous;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RAS_CONNECTION_EX
{
public MPRAPI_OBJECT_HEADER Header;
public uint dwConnectDuration;
public int dwInterfaceType;
public uint dwConnectionFlags;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)] public string wszInterfaceName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)] public string wszUserName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)] public string wszLogonDomain;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)] public string wszRemoteComputer;
public Guid guid;
public int rasQuarState;
public FILETIME probationTime;
public uint dwBytesXmited;
public uint dwBytesRcved;
public uint dwFramesXmited;
public uint dwFramesRcved;
public uint dwCrcErr;
public uint dwTimeoutErr;
public uint dwAlignmentErr;
public uint dwHardwareOverrunErr;
public uint dwFramingErr;
public uint dwBufferOverrunErr;
public uint dwCompressionRatioIn;
public uint dwCompressionRatioOut;
public uint dwNumSwitchOvers;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 65)] public string wszRemoteEndpointAddress;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 65)] public string wszLocalEndpointAddress;
public PROJECTION_INFO ProjectionInfo;
public IntPtr hConnection;
public IntPtr hInterface;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MPRAPI_OBJECT_HEADER
Public revision As Byte
Public type As Byte
Public size As UShort
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FILETIME
Public dwLowDateTime As UInteger
Public dwHighDateTime As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PROJECTION_INFO
Public projectionInfoType As Byte
Public Anonymous As _Anonymous_e__Union
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RAS_CONNECTION_EX
Public Header As MPRAPI_OBJECT_HEADER
Public dwConnectDuration As UInteger
Public dwInterfaceType As Integer
Public dwConnectionFlags As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> Public wszInterfaceName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> Public wszUserName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=16)> Public wszLogonDomain As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=17)> Public wszRemoteComputer As String
Public guid As Guid
Public rasQuarState As Integer
Public probationTime As FILETIME
Public dwBytesXmited As UInteger
Public dwBytesRcved As UInteger
Public dwFramesXmited As UInteger
Public dwFramesRcved As UInteger
Public dwCrcErr As UInteger
Public dwTimeoutErr As UInteger
Public dwAlignmentErr As UInteger
Public dwHardwareOverrunErr As UInteger
Public dwFramingErr As UInteger
Public dwBufferOverrunErr As UInteger
Public dwCompressionRatioIn As UInteger
Public dwCompressionRatioOut As UInteger
Public dwNumSwitchOvers As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=65)> Public wszRemoteEndpointAddress As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=65)> Public wszLocalEndpointAddress As String
Public ProjectionInfo As PROJECTION_INFO
Public hConnection As IntPtr
Public hInterface As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class MPRAPI_OBJECT_HEADER(ctypes.Structure):
_fields_ = [
("revision", ctypes.c_ubyte),
("type", ctypes.c_ubyte),
("size", ctypes.c_ushort),
]
class FILETIME(ctypes.Structure):
_fields_ = [
("dwLowDateTime", wintypes.DWORD),
("dwHighDateTime", wintypes.DWORD),
]
class PROJECTION_INFO(ctypes.Structure):
_fields_ = [
("projectionInfoType", ctypes.c_ubyte),
("Anonymous", _Anonymous_e__Union),
]
class RAS_CONNECTION_EX(ctypes.Structure):
_fields_ = [
("Header", MPRAPI_OBJECT_HEADER),
("dwConnectDuration", wintypes.DWORD),
("dwInterfaceType", ctypes.c_int),
("dwConnectionFlags", wintypes.DWORD),
("wszInterfaceName", ctypes.c_wchar * 257),
("wszUserName", ctypes.c_wchar * 257),
("wszLogonDomain", ctypes.c_wchar * 16),
("wszRemoteComputer", ctypes.c_wchar * 17),
("guid", GUID),
("rasQuarState", ctypes.c_int),
("probationTime", FILETIME),
("dwBytesXmited", wintypes.DWORD),
("dwBytesRcved", wintypes.DWORD),
("dwFramesXmited", wintypes.DWORD),
("dwFramesRcved", wintypes.DWORD),
("dwCrcErr", wintypes.DWORD),
("dwTimeoutErr", wintypes.DWORD),
("dwAlignmentErr", wintypes.DWORD),
("dwHardwareOverrunErr", wintypes.DWORD),
("dwFramingErr", wintypes.DWORD),
("dwBufferOverrunErr", wintypes.DWORD),
("dwCompressionRatioIn", wintypes.DWORD),
("dwCompressionRatioOut", wintypes.DWORD),
("dwNumSwitchOvers", wintypes.DWORD),
("wszRemoteEndpointAddress", ctypes.c_wchar * 65),
("wszLocalEndpointAddress", ctypes.c_wchar * 65),
("ProjectionInfo", PROJECTION_INFO),
("hConnection", ctypes.c_void_p),
("hInterface", ctypes.c_void_p),
]#[repr(C)]
pub struct MPRAPI_OBJECT_HEADER {
pub revision: u8,
pub type: u8,
pub size: u16,
}
#[repr(C)]
pub struct FILETIME {
pub dwLowDateTime: u32,
pub dwHighDateTime: u32,
}
#[repr(C)]
pub struct PROJECTION_INFO {
pub projectionInfoType: u8,
pub Anonymous: _Anonymous_e__Union,
}
#[repr(C)]
pub struct RAS_CONNECTION_EX {
pub Header: MPRAPI_OBJECT_HEADER,
pub dwConnectDuration: u32,
pub dwInterfaceType: i32,
pub dwConnectionFlags: u32,
pub wszInterfaceName: [u16; 257],
pub wszUserName: [u16; 257],
pub wszLogonDomain: [u16; 16],
pub wszRemoteComputer: [u16; 17],
pub guid: GUID,
pub rasQuarState: i32,
pub probationTime: FILETIME,
pub dwBytesXmited: u32,
pub dwBytesRcved: u32,
pub dwFramesXmited: u32,
pub dwFramesRcved: u32,
pub dwCrcErr: u32,
pub dwTimeoutErr: u32,
pub dwAlignmentErr: u32,
pub dwHardwareOverrunErr: u32,
pub dwFramingErr: u32,
pub dwBufferOverrunErr: u32,
pub dwCompressionRatioIn: u32,
pub dwCompressionRatioOut: u32,
pub dwNumSwitchOvers: u32,
pub wszRemoteEndpointAddress: [u16; 65],
pub wszLocalEndpointAddress: [u16; 65],
pub ProjectionInfo: PROJECTION_INFO,
pub hConnection: *mut core::ffi::c_void,
pub hInterface: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type MPRAPI_OBJECT_HEADER struct {
revision byte
type byte
size uint16
}
type FILETIME struct {
dwLowDateTime uint32
dwHighDateTime uint32
}
type PROJECTION_INFO struct {
projectionInfoType byte
Anonymous _Anonymous_e__Union
}
type RAS_CONNECTION_EX struct {
Header MPRAPI_OBJECT_HEADER
dwConnectDuration uint32
dwInterfaceType int32
dwConnectionFlags uint32
wszInterfaceName [257]uint16
wszUserName [257]uint16
wszLogonDomain [16]uint16
wszRemoteComputer [17]uint16
guid windows.GUID
rasQuarState int32
probationTime FILETIME
dwBytesXmited uint32
dwBytesRcved uint32
dwFramesXmited uint32
dwFramesRcved uint32
dwCrcErr uint32
dwTimeoutErr uint32
dwAlignmentErr uint32
dwHardwareOverrunErr uint32
dwFramingErr uint32
dwBufferOverrunErr uint32
dwCompressionRatioIn uint32
dwCompressionRatioOut uint32
dwNumSwitchOvers uint32
wszRemoteEndpointAddress [65]uint16
wszLocalEndpointAddress [65]uint16
ProjectionInfo PROJECTION_INFO
hConnection uintptr
hInterface uintptr
}type
MPRAPI_OBJECT_HEADER = record
revision: Byte;
type: Byte;
size: Word;
end;
FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
PROJECTION_INFO = record
projectionInfoType: Byte;
Anonymous: _Anonymous_e__Union;
end;
RAS_CONNECTION_EX = record
Header: MPRAPI_OBJECT_HEADER;
dwConnectDuration: DWORD;
dwInterfaceType: Integer;
dwConnectionFlags: DWORD;
wszInterfaceName: array[0..256] of WideChar;
wszUserName: array[0..256] of WideChar;
wszLogonDomain: array[0..15] of WideChar;
wszRemoteComputer: array[0..16] of WideChar;
guid: TGUID;
rasQuarState: Integer;
probationTime: FILETIME;
dwBytesXmited: DWORD;
dwBytesRcved: DWORD;
dwFramesXmited: DWORD;
dwFramesRcved: DWORD;
dwCrcErr: DWORD;
dwTimeoutErr: DWORD;
dwAlignmentErr: DWORD;
dwHardwareOverrunErr: DWORD;
dwFramingErr: DWORD;
dwBufferOverrunErr: DWORD;
dwCompressionRatioIn: DWORD;
dwCompressionRatioOut: DWORD;
dwNumSwitchOvers: DWORD;
wszRemoteEndpointAddress: array[0..64] of WideChar;
wszLocalEndpointAddress: array[0..64] of WideChar;
ProjectionInfo: PROJECTION_INFO;
hConnection: Pointer;
hInterface: Pointer;
end;const MPRAPI_OBJECT_HEADER = extern struct {
revision: u8,
type: u8,
size: u16,
};
const FILETIME = extern struct {
dwLowDateTime: u32,
dwHighDateTime: u32,
};
const PROJECTION_INFO = extern struct {
projectionInfoType: u8,
Anonymous: _Anonymous_e__Union,
};
const RAS_CONNECTION_EX = extern struct {
Header: MPRAPI_OBJECT_HEADER,
dwConnectDuration: u32,
dwInterfaceType: i32,
dwConnectionFlags: u32,
wszInterfaceName: [257]u16,
wszUserName: [257]u16,
wszLogonDomain: [16]u16,
wszRemoteComputer: [17]u16,
guid: GUID,
rasQuarState: i32,
probationTime: FILETIME,
dwBytesXmited: u32,
dwBytesRcved: u32,
dwFramesXmited: u32,
dwFramesRcved: u32,
dwCrcErr: u32,
dwTimeoutErr: u32,
dwAlignmentErr: u32,
dwHardwareOverrunErr: u32,
dwFramingErr: u32,
dwBufferOverrunErr: u32,
dwCompressionRatioIn: u32,
dwCompressionRatioOut: u32,
dwNumSwitchOvers: u32,
wszRemoteEndpointAddress: [65]u16,
wszLocalEndpointAddress: [65]u16,
ProjectionInfo: PROJECTION_INFO,
hConnection: ?*anyopaque,
hInterface: ?*anyopaque,
};type
MPRAPI_OBJECT_HEADER {.bycopy.} = object
revision: uint8
type: uint8
size: uint16
FILETIME {.bycopy.} = object
dwLowDateTime: uint32
dwHighDateTime: uint32
PROJECTION_INFO {.bycopy.} = object
projectionInfoType: uint8
Anonymous: _Anonymous_e__Union
RAS_CONNECTION_EX {.bycopy.} = object
Header: MPRAPI_OBJECT_HEADER
dwConnectDuration: uint32
dwInterfaceType: int32
dwConnectionFlags: uint32
wszInterfaceName: array[257, uint16]
wszUserName: array[257, uint16]
wszLogonDomain: array[16, uint16]
wszRemoteComputer: array[17, uint16]
guid: GUID
rasQuarState: int32
probationTime: FILETIME
dwBytesXmited: uint32
dwBytesRcved: uint32
dwFramesXmited: uint32
dwFramesRcved: uint32
dwCrcErr: uint32
dwTimeoutErr: uint32
dwAlignmentErr: uint32
dwHardwareOverrunErr: uint32
dwFramingErr: uint32
dwBufferOverrunErr: uint32
dwCompressionRatioIn: uint32
dwCompressionRatioOut: uint32
dwNumSwitchOvers: uint32
wszRemoteEndpointAddress: array[65, uint16]
wszLocalEndpointAddress: array[65, uint16]
ProjectionInfo: PROJECTION_INFO
hConnection: pointer
hInterface: pointerstruct MPRAPI_OBJECT_HEADER
{
ubyte revision;
ubyte type;
ushort size;
}
struct FILETIME
{
uint dwLowDateTime;
uint dwHighDateTime;
}
struct PROJECTION_INFO
{
ubyte projectionInfoType;
_Anonymous_e__Union Anonymous;
}
struct RAS_CONNECTION_EX
{
MPRAPI_OBJECT_HEADER Header;
uint dwConnectDuration;
int dwInterfaceType;
uint dwConnectionFlags;
wchar[257] wszInterfaceName;
wchar[257] wszUserName;
wchar[16] wszLogonDomain;
wchar[17] wszRemoteComputer;
GUID guid;
int rasQuarState;
FILETIME probationTime;
uint dwBytesXmited;
uint dwBytesRcved;
uint dwFramesXmited;
uint dwFramesRcved;
uint dwCrcErr;
uint dwTimeoutErr;
uint dwAlignmentErr;
uint dwHardwareOverrunErr;
uint dwFramingErr;
uint dwBufferOverrunErr;
uint dwCompressionRatioIn;
uint dwCompressionRatioOut;
uint dwNumSwitchOvers;
wchar[65] wszRemoteEndpointAddress;
wchar[65] wszLocalEndpointAddress;
PROJECTION_INFO ProjectionInfo;
void* hConnection;
void* hInterface;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; RAS_CONNECTION_EX サイズ: 1664 バイト(x86)
dim st, 416 ; 4byte整数×416(構造体サイズ 1664 / 4 切り上げ)
; Header : MPRAPI_OBJECT_HEADER (+0, 4byte) varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; dwConnectDuration : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwInterfaceType : ROUTER_INTERFACE_TYPE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwConnectionFlags : RAS_FLAGS (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; wszInterfaceName : WCHAR (+16, 514byte) varptr(st)+16 を基点に操作(514byte:入れ子/配列)
; wszUserName : WCHAR (+530, 514byte) varptr(st)+530 を基点に操作(514byte:入れ子/配列)
; wszLogonDomain : WCHAR (+1044, 32byte) varptr(st)+1044 を基点に操作(32byte:入れ子/配列)
; wszRemoteComputer : WCHAR (+1076, 34byte) varptr(st)+1076 を基点に操作(34byte:入れ子/配列)
; guid : GUID (+1112, 16byte) varptr(st)+1112 を基点に操作(16byte:入れ子/配列)
; rasQuarState : RAS_QUARANTINE_STATE (+1128, 4byte) st.282 = 値 / 値 = st.282 (lpoke/lpeek も可)
; probationTime : FILETIME (+1132, 8byte) varptr(st)+1132 を基点に操作(8byte:入れ子/配列)
; dwBytesXmited : DWORD (+1140, 4byte) st.285 = 値 / 値 = st.285 (lpoke/lpeek も可)
; dwBytesRcved : DWORD (+1144, 4byte) st.286 = 値 / 値 = st.286 (lpoke/lpeek も可)
; dwFramesXmited : DWORD (+1148, 4byte) st.287 = 値 / 値 = st.287 (lpoke/lpeek も可)
; dwFramesRcved : DWORD (+1152, 4byte) st.288 = 値 / 値 = st.288 (lpoke/lpeek も可)
; dwCrcErr : DWORD (+1156, 4byte) st.289 = 値 / 値 = st.289 (lpoke/lpeek も可)
; dwTimeoutErr : DWORD (+1160, 4byte) st.290 = 値 / 値 = st.290 (lpoke/lpeek も可)
; dwAlignmentErr : DWORD (+1164, 4byte) st.291 = 値 / 値 = st.291 (lpoke/lpeek も可)
; dwHardwareOverrunErr : DWORD (+1168, 4byte) st.292 = 値 / 値 = st.292 (lpoke/lpeek も可)
; dwFramingErr : DWORD (+1172, 4byte) st.293 = 値 / 値 = st.293 (lpoke/lpeek も可)
; dwBufferOverrunErr : DWORD (+1176, 4byte) st.294 = 値 / 値 = st.294 (lpoke/lpeek も可)
; dwCompressionRatioIn : DWORD (+1180, 4byte) st.295 = 値 / 値 = st.295 (lpoke/lpeek も可)
; dwCompressionRatioOut : DWORD (+1184, 4byte) st.296 = 値 / 値 = st.296 (lpoke/lpeek も可)
; dwNumSwitchOvers : DWORD (+1188, 4byte) st.297 = 値 / 値 = st.297 (lpoke/lpeek も可)
; wszRemoteEndpointAddress : WCHAR (+1192, 130byte) varptr(st)+1192 を基点に操作(130byte:入れ子/配列)
; wszLocalEndpointAddress : WCHAR (+1322, 130byte) varptr(st)+1322 を基点に操作(130byte:入れ子/配列)
; ProjectionInfo : PROJECTION_INFO (+1456, 200byte) varptr(st)+1456 を基点に操作(200byte:入れ子/配列)
; hConnection : HANDLE (+1656, 4byte) st.414 = 値 / 値 = st.414 (lpoke/lpeek も可)
; hInterface : HANDLE (+1660, 4byte) st.415 = 値 / 値 = st.415 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RAS_CONNECTION_EX サイズ: 1672 バイト(x64)
dim st, 418 ; 4byte整数×418(構造体サイズ 1672 / 4 切り上げ)
; Header : MPRAPI_OBJECT_HEADER (+0, 4byte) varptr(st)+0 を基点に操作(4byte:入れ子/配列)
; dwConnectDuration : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwInterfaceType : ROUTER_INTERFACE_TYPE (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwConnectionFlags : RAS_FLAGS (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; wszInterfaceName : WCHAR (+16, 514byte) varptr(st)+16 を基点に操作(514byte:入れ子/配列)
; wszUserName : WCHAR (+530, 514byte) varptr(st)+530 を基点に操作(514byte:入れ子/配列)
; wszLogonDomain : WCHAR (+1044, 32byte) varptr(st)+1044 を基点に操作(32byte:入れ子/配列)
; wszRemoteComputer : WCHAR (+1076, 34byte) varptr(st)+1076 を基点に操作(34byte:入れ子/配列)
; guid : GUID (+1112, 16byte) varptr(st)+1112 を基点に操作(16byte:入れ子/配列)
; rasQuarState : RAS_QUARANTINE_STATE (+1128, 4byte) st.282 = 値 / 値 = st.282 (lpoke/lpeek も可)
; probationTime : FILETIME (+1132, 8byte) varptr(st)+1132 を基点に操作(8byte:入れ子/配列)
; dwBytesXmited : DWORD (+1140, 4byte) st.285 = 値 / 値 = st.285 (lpoke/lpeek も可)
; dwBytesRcved : DWORD (+1144, 4byte) st.286 = 値 / 値 = st.286 (lpoke/lpeek も可)
; dwFramesXmited : DWORD (+1148, 4byte) st.287 = 値 / 値 = st.287 (lpoke/lpeek も可)
; dwFramesRcved : DWORD (+1152, 4byte) st.288 = 値 / 値 = st.288 (lpoke/lpeek も可)
; dwCrcErr : DWORD (+1156, 4byte) st.289 = 値 / 値 = st.289 (lpoke/lpeek も可)
; dwTimeoutErr : DWORD (+1160, 4byte) st.290 = 値 / 値 = st.290 (lpoke/lpeek も可)
; dwAlignmentErr : DWORD (+1164, 4byte) st.291 = 値 / 値 = st.291 (lpoke/lpeek も可)
; dwHardwareOverrunErr : DWORD (+1168, 4byte) st.292 = 値 / 値 = st.292 (lpoke/lpeek も可)
; dwFramingErr : DWORD (+1172, 4byte) st.293 = 値 / 値 = st.293 (lpoke/lpeek も可)
; dwBufferOverrunErr : DWORD (+1176, 4byte) st.294 = 値 / 値 = st.294 (lpoke/lpeek も可)
; dwCompressionRatioIn : DWORD (+1180, 4byte) st.295 = 値 / 値 = st.295 (lpoke/lpeek も可)
; dwCompressionRatioOut : DWORD (+1184, 4byte) st.296 = 値 / 値 = st.296 (lpoke/lpeek も可)
; dwNumSwitchOvers : DWORD (+1188, 4byte) st.297 = 値 / 値 = st.297 (lpoke/lpeek も可)
; wszRemoteEndpointAddress : WCHAR (+1192, 130byte) varptr(st)+1192 を基点に操作(130byte:入れ子/配列)
; wszLocalEndpointAddress : WCHAR (+1322, 130byte) varptr(st)+1322 を基点に操作(130byte:入れ子/配列)
; ProjectionInfo : PROJECTION_INFO (+1456, 200byte) varptr(st)+1456 を基点に操作(200byte:入れ子/配列)
; hConnection : HANDLE (+1656, 8byte) qpoke st,1656,値 / qpeek(st,1656) ※IronHSPのみ。3.7/3.8は lpoke st,1656,下位 : lpoke st,1660,上位
; hInterface : HANDLE (+1664, 8byte) qpoke st,1664,値 / qpeek(st,1664) ※IronHSPのみ。3.7/3.8は lpoke st,1664,下位 : lpoke st,1668,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global MPRAPI_OBJECT_HEADER
#field byte revision
#field byte type
#field short size
#endstruct
#defstruct global GUID, pack=1
#field int Data1
#field short Data2
#field short Data3
#field byte Data4 8
#endstruct
#defstruct global FILETIME
#field int dwLowDateTime
#field int dwHighDateTime
#endstruct
#defstruct global PROJECTION_INFO
#field byte projectionInfoType
#field byte Anonymous 192
#endstruct
#defstruct global RAS_CONNECTION_EX
#field MPRAPI_OBJECT_HEADER Header
#field int dwConnectDuration
#field int dwInterfaceType
#field int dwConnectionFlags
#field wchar wszInterfaceName 257
#field wchar wszUserName 257
#field wchar wszLogonDomain 16
#field wchar wszRemoteComputer 17
#field GUID guid
#field int rasQuarState
#field FILETIME probationTime
#field int dwBytesXmited
#field int dwBytesRcved
#field int dwFramesXmited
#field int dwFramesRcved
#field int dwCrcErr
#field int dwTimeoutErr
#field int dwAlignmentErr
#field int dwHardwareOverrunErr
#field int dwFramingErr
#field int dwBufferOverrunErr
#field int dwCompressionRatioIn
#field int dwCompressionRatioOut
#field int dwNumSwitchOvers
#field wchar wszRemoteEndpointAddress 65
#field wchar wszLocalEndpointAddress 65
#field PROJECTION_INFO ProjectionInfo
#field intptr hConnection
#field intptr hInterface
#endstruct
stdim st, RAS_CONNECTION_EX ; NSTRUCT 変数を確保
st->dwConnectDuration = 100
mes "dwConnectDuration=" + st->dwConnectDuration