ホーム › NetworkManagement.Rras › RAS_PORT_0
RAS_PORT_0
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| hPort | HANDLE | 8/4 | +0 | +0 | RASポートを識別するハンドル。 |
| hConnection | HANDLE | 8/4 | +8 | +4 | このポートに関連付く接続のハンドル。 |
| dwPortCondition | RAS_PORT_CONDITION | 4 | +16 | +8 | ポートの状態を表すRAS_PORT_CONDITION列挙値。 |
| dwTotalNumberOfCalls | DWORD | 4 | +20 | +12 | このポートで処理された通話の総数。 |
| dwConnectDuration | DWORD | 4 | +24 | +16 | 現在の接続が確立してからの経過時間(ミリ秒)。 |
| wszPortName | WCHAR | 34 | +28 | +20 | ポートの名前を表すワイド文字列。 |
| wszMediaName | WCHAR | 34 | +62 | +54 | ポートが使用するメディアの名前(ワイド文字列)。 |
| wszDeviceName | WCHAR | 258 | +96 | +88 | ポートに関連付くデバイスの名前(ワイド文字列)。 |
| wszDeviceType | WCHAR | 34 | +354 | +346 | ポートに関連付くデバイスの種別(ワイド文字列)。 |
各言語での定義
#include <windows.h>
// RAS_PORT_0 (x64 392 / x86 380 バイト)
typedef struct RAS_PORT_0 {
HANDLE hPort;
HANDLE hConnection;
RAS_PORT_CONDITION dwPortCondition;
DWORD dwTotalNumberOfCalls;
DWORD dwConnectDuration;
WCHAR wszPortName[17];
WCHAR wszMediaName[17];
WCHAR wszDeviceName[129];
WCHAR wszDeviceType[17];
} RAS_PORT_0;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RAS_PORT_0
{
public IntPtr hPort;
public IntPtr hConnection;
public int dwPortCondition;
public uint dwTotalNumberOfCalls;
public uint dwConnectDuration;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)] public string wszPortName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)] public string wszMediaName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 129)] public string wszDeviceName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 17)] public string wszDeviceType;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RAS_PORT_0
Public hPort As IntPtr
Public hConnection As IntPtr
Public dwPortCondition As Integer
Public dwTotalNumberOfCalls As UInteger
Public dwConnectDuration As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=17)> Public wszPortName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=17)> Public wszMediaName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=129)> Public wszDeviceName As String
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=17)> Public wszDeviceType As String
End Structureimport ctypes
from ctypes import wintypes
class RAS_PORT_0(ctypes.Structure):
_fields_ = [
("hPort", ctypes.c_void_p),
("hConnection", ctypes.c_void_p),
("dwPortCondition", ctypes.c_int),
("dwTotalNumberOfCalls", wintypes.DWORD),
("dwConnectDuration", wintypes.DWORD),
("wszPortName", ctypes.c_wchar * 17),
("wszMediaName", ctypes.c_wchar * 17),
("wszDeviceName", ctypes.c_wchar * 129),
("wszDeviceType", ctypes.c_wchar * 17),
]#[repr(C)]
pub struct RAS_PORT_0 {
pub hPort: *mut core::ffi::c_void,
pub hConnection: *mut core::ffi::c_void,
pub dwPortCondition: i32,
pub dwTotalNumberOfCalls: u32,
pub dwConnectDuration: u32,
pub wszPortName: [u16; 17],
pub wszMediaName: [u16; 17],
pub wszDeviceName: [u16; 129],
pub wszDeviceType: [u16; 17],
}import "golang.org/x/sys/windows"
type RAS_PORT_0 struct {
hPort uintptr
hConnection uintptr
dwPortCondition int32
dwTotalNumberOfCalls uint32
dwConnectDuration uint32
wszPortName [17]uint16
wszMediaName [17]uint16
wszDeviceName [129]uint16
wszDeviceType [17]uint16
}type
RAS_PORT_0 = record
hPort: Pointer;
hConnection: Pointer;
dwPortCondition: Integer;
dwTotalNumberOfCalls: DWORD;
dwConnectDuration: DWORD;
wszPortName: array[0..16] of WideChar;
wszMediaName: array[0..16] of WideChar;
wszDeviceName: array[0..128] of WideChar;
wszDeviceType: array[0..16] of WideChar;
end;const RAS_PORT_0 = extern struct {
hPort: ?*anyopaque,
hConnection: ?*anyopaque,
dwPortCondition: i32,
dwTotalNumberOfCalls: u32,
dwConnectDuration: u32,
wszPortName: [17]u16,
wszMediaName: [17]u16,
wszDeviceName: [129]u16,
wszDeviceType: [17]u16,
};type
RAS_PORT_0 {.bycopy.} = object
hPort: pointer
hConnection: pointer
dwPortCondition: int32
dwTotalNumberOfCalls: uint32
dwConnectDuration: uint32
wszPortName: array[17, uint16]
wszMediaName: array[17, uint16]
wszDeviceName: array[129, uint16]
wszDeviceType: array[17, uint16]struct RAS_PORT_0
{
void* hPort;
void* hConnection;
int dwPortCondition;
uint dwTotalNumberOfCalls;
uint dwConnectDuration;
wchar[17] wszPortName;
wchar[17] wszMediaName;
wchar[129] wszDeviceName;
wchar[17] wszDeviceType;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; RAS_PORT_0 サイズ: 380 バイト(x86)
dim st, 95 ; 4byte整数×95(構造体サイズ 380 / 4 切り上げ)
; hPort : HANDLE (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; hConnection : HANDLE (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; dwPortCondition : RAS_PORT_CONDITION (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; dwTotalNumberOfCalls : DWORD (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; dwConnectDuration : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; wszPortName : WCHAR (+20, 34byte) varptr(st)+20 を基点に操作(34byte:入れ子/配列)
; wszMediaName : WCHAR (+54, 34byte) varptr(st)+54 を基点に操作(34byte:入れ子/配列)
; wszDeviceName : WCHAR (+88, 258byte) varptr(st)+88 を基点に操作(258byte:入れ子/配列)
; wszDeviceType : WCHAR (+346, 34byte) varptr(st)+346 を基点に操作(34byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RAS_PORT_0 サイズ: 392 バイト(x64)
dim st, 98 ; 4byte整数×98(構造体サイズ 392 / 4 切り上げ)
; hPort : HANDLE (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; hConnection : HANDLE (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; dwPortCondition : RAS_PORT_CONDITION (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; dwTotalNumberOfCalls : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; dwConnectDuration : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; wszPortName : WCHAR (+28, 34byte) varptr(st)+28 を基点に操作(34byte:入れ子/配列)
; wszMediaName : WCHAR (+62, 34byte) varptr(st)+62 を基点に操作(34byte:入れ子/配列)
; wszDeviceName : WCHAR (+96, 258byte) varptr(st)+96 を基点に操作(258byte:入れ子/配列)
; wszDeviceType : WCHAR (+354, 34byte) varptr(st)+354 を基点に操作(34byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global RAS_PORT_0
#field intptr hPort
#field intptr hConnection
#field int dwPortCondition
#field int dwTotalNumberOfCalls
#field int dwConnectDuration
#field wchar wszPortName 17
#field wchar wszMediaName 17
#field wchar wszDeviceName 129
#field wchar wszDeviceType 17
#endstruct
stdim st, RAS_PORT_0 ; NSTRUCT 変数を確保
st->dwPortCondition = 100
mes "dwPortCondition=" + st->dwPortCondition