ホーム › NetworkManagement.Rras › MPR_INTERFACE_1
MPR_INTERFACE_1
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 | ||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| wszInterfaceName | WCHAR | 514 | +0 | +0 | インターフェイスの名前を格納する Unicode 文字列へのポインターです。 | ||||||||||||||||
| hInterface | HANDLE | 8/4 | +520 | +516 | インターフェイスのハンドルです。 | ||||||||||||||||
| fEnabled | BOOL | 4 | +528 | +520 | インターフェイスが有効かどうかを指定します。インターフェイスが有効な場合は TRUE、管理上無効にされている場合は FALSE になります。 | ||||||||||||||||
| dwIfType | ROUTER_INTERFACE_TYPE | 4 | +532 | +524 | インターフェイスの種類を指定します。 | ||||||||||||||||
| dwConnectionState | ROUTER_CONNECTION_STATE | 4 | +536 | +528 | 接続済み、切断済み、到達不能など、インターフェイスの現在の状態を指定します。指定可能な状態の一覧については、 ROUTER_CONNECTION_STATE を参照してください。 | ||||||||||||||||
| fUnReachabilityReasons | DWORD | 4 | +540 | +532 | インターフェイスが到達不能であった理由を表す値を指定します。指定可能な値の一覧については、 Unreachability Reasons を参照してください。 | ||||||||||||||||
| dwLastError | DWORD | 4 | +544 | +536 | インターフェイスの接続に失敗した場合、0 以外の値が指定されます。 | ||||||||||||||||
| lpwsDialoutHoursRestriction | LPWSTR | 8/4 | +552 | +540 | ダイヤルアウトが制限される時間帯を指定する Unicode 文字列へのポインターです。この文字列の形式は次のとおりです。
ここで day は、曜日に対応する数字です。
time range は HH:MM-HH:MM の形式で、24 時間表記を使用します。 上記の構文における <space> は空白文字を表します。<NULL> は NULL 文字を表します。 制限文字列は、連続する 2 つの NULL 文字で終端されます。 例:
上記の文字列は、ダイヤルアウトを火曜日と木曜日の 9:00 から 12:00 まで、および 13:00 から 17:30 までに制限します。 |
公式ドキュメント
MPR_INTERFACE_1 構造体は、特定のルーターインターフェイスの構成情報と状態情報を格納します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// MPR_INTERFACE_1 (x64 560 / x86 544 バイト)
typedef struct MPR_INTERFACE_1 {
WCHAR wszInterfaceName[257];
HANDLE hInterface;
BOOL fEnabled;
ROUTER_INTERFACE_TYPE dwIfType;
ROUTER_CONNECTION_STATE dwConnectionState;
DWORD fUnReachabilityReasons;
DWORD dwLastError;
LPWSTR lpwsDialoutHoursRestriction;
} MPR_INTERFACE_1;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MPR_INTERFACE_1
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 257)] public string wszInterfaceName;
public IntPtr hInterface;
[MarshalAs(UnmanagedType.Bool)] public bool fEnabled;
public int dwIfType;
public int dwConnectionState;
public uint fUnReachabilityReasons;
public uint dwLastError;
public IntPtr lpwsDialoutHoursRestriction;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MPR_INTERFACE_1
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=257)> Public wszInterfaceName As String
Public hInterface As IntPtr
<MarshalAs(UnmanagedType.Bool)> Public fEnabled As Boolean
Public dwIfType As Integer
Public dwConnectionState As Integer
Public fUnReachabilityReasons As UInteger
Public dwLastError As UInteger
Public lpwsDialoutHoursRestriction As IntPtr
End Structureimport ctypes
from ctypes import wintypes
class MPR_INTERFACE_1(ctypes.Structure):
_fields_ = [
("wszInterfaceName", ctypes.c_wchar * 257),
("hInterface", ctypes.c_void_p),
("fEnabled", wintypes.BOOL),
("dwIfType", ctypes.c_int),
("dwConnectionState", ctypes.c_int),
("fUnReachabilityReasons", wintypes.DWORD),
("dwLastError", wintypes.DWORD),
("lpwsDialoutHoursRestriction", ctypes.c_void_p),
]#[repr(C)]
pub struct MPR_INTERFACE_1 {
pub wszInterfaceName: [u16; 257],
pub hInterface: *mut core::ffi::c_void,
pub fEnabled: i32,
pub dwIfType: i32,
pub dwConnectionState: i32,
pub fUnReachabilityReasons: u32,
pub dwLastError: u32,
pub lpwsDialoutHoursRestriction: *mut core::ffi::c_void,
}import "golang.org/x/sys/windows"
type MPR_INTERFACE_1 struct {
wszInterfaceName [257]uint16
hInterface uintptr
fEnabled int32
dwIfType int32
dwConnectionState int32
fUnReachabilityReasons uint32
dwLastError uint32
lpwsDialoutHoursRestriction uintptr
}type
MPR_INTERFACE_1 = record
wszInterfaceName: array[0..256] of WideChar;
hInterface: Pointer;
fEnabled: BOOL;
dwIfType: Integer;
dwConnectionState: Integer;
fUnReachabilityReasons: DWORD;
dwLastError: DWORD;
lpwsDialoutHoursRestriction: Pointer;
end;const MPR_INTERFACE_1 = extern struct {
wszInterfaceName: [257]u16,
hInterface: ?*anyopaque,
fEnabled: i32,
dwIfType: i32,
dwConnectionState: i32,
fUnReachabilityReasons: u32,
dwLastError: u32,
lpwsDialoutHoursRestriction: ?*anyopaque,
};type
MPR_INTERFACE_1 {.bycopy.} = object
wszInterfaceName: array[257, uint16]
hInterface: pointer
fEnabled: int32
dwIfType: int32
dwConnectionState: int32
fUnReachabilityReasons: uint32
dwLastError: uint32
lpwsDialoutHoursRestriction: pointerstruct MPR_INTERFACE_1
{
wchar[257] wszInterfaceName;
void* hInterface;
int fEnabled;
int dwIfType;
int dwConnectionState;
uint fUnReachabilityReasons;
uint dwLastError;
void* lpwsDialoutHoursRestriction;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; MPR_INTERFACE_1 サイズ: 544 バイト(x86)
dim st, 136 ; 4byte整数×136(構造体サイズ 544 / 4 切り上げ)
; wszInterfaceName : WCHAR (+0, 514byte) varptr(st)+0 を基点に操作(514byte:入れ子/配列)
; hInterface : HANDLE (+516, 4byte) st.129 = 値 / 値 = st.129 (lpoke/lpeek も可)
; fEnabled : BOOL (+520, 4byte) st.130 = 値 / 値 = st.130 (lpoke/lpeek も可)
; dwIfType : ROUTER_INTERFACE_TYPE (+524, 4byte) st.131 = 値 / 値 = st.131 (lpoke/lpeek も可)
; dwConnectionState : ROUTER_CONNECTION_STATE (+528, 4byte) st.132 = 値 / 値 = st.132 (lpoke/lpeek も可)
; fUnReachabilityReasons : DWORD (+532, 4byte) st.133 = 値 / 値 = st.133 (lpoke/lpeek も可)
; dwLastError : DWORD (+536, 4byte) st.134 = 値 / 値 = st.134 (lpoke/lpeek も可)
; lpwsDialoutHoursRestriction : LPWSTR (+540, 4byte) st.135 = 値 / 値 = st.135 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MPR_INTERFACE_1 サイズ: 560 バイト(x64)
dim st, 140 ; 4byte整数×140(構造体サイズ 560 / 4 切り上げ)
; wszInterfaceName : WCHAR (+0, 514byte) varptr(st)+0 を基点に操作(514byte:入れ子/配列)
; hInterface : HANDLE (+520, 8byte) qpoke st,520,値 / qpeek(st,520) ※IronHSPのみ。3.7/3.8は lpoke st,520,下位 : lpoke st,524,上位
; fEnabled : BOOL (+528, 4byte) st.132 = 値 / 値 = st.132 (lpoke/lpeek も可)
; dwIfType : ROUTER_INTERFACE_TYPE (+532, 4byte) st.133 = 値 / 値 = st.133 (lpoke/lpeek も可)
; dwConnectionState : ROUTER_CONNECTION_STATE (+536, 4byte) st.134 = 値 / 値 = st.134 (lpoke/lpeek も可)
; fUnReachabilityReasons : DWORD (+540, 4byte) st.135 = 値 / 値 = st.135 (lpoke/lpeek も可)
; dwLastError : DWORD (+544, 4byte) st.136 = 値 / 値 = st.136 (lpoke/lpeek も可)
; lpwsDialoutHoursRestriction : LPWSTR (+552, 8byte) qpoke st,552,値 / qpeek(st,552) ※IronHSPのみ。3.7/3.8は lpoke st,552,下位 : lpoke st,556,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MPR_INTERFACE_1
#field wchar wszInterfaceName 257
#field intptr hInterface
#field bool fEnabled
#field int dwIfType
#field int dwConnectionState
#field int fUnReachabilityReasons
#field int dwLastError
#field intptr lpwsDialoutHoursRestriction
#endstruct
stdim st, MPR_INTERFACE_1 ; NSTRUCT 変数を確保
st->fEnabled = 100
mes "fEnabled=" + st->fEnabled