ホーム › Networking.WinSock › NL_NETWORK_CONNECTIVITY_HINT
NL_NETWORK_CONNECTIVITY_HINT
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ConnectivityLevel | NL_NETWORK_CONNECTIVITY_LEVEL_HINT | 4 | +0 | +0 | ネットワーク接続レベルのヒント(インターネット到達可否等)である。 |
| ConnectivityCost | NL_NETWORK_CONNECTIVITY_COST_HINT | 4 | +4 | +4 | ネットワークのコストヒント(従量制等)を示す値である。 |
| ApproachingDataLimit | BOOLEAN | 1 | +8 | +8 | データ通信量の上限に近づいているかを示す真偽値である。 |
| OverDataLimit | BOOLEAN | 1 | +9 | +9 | データ通信量の上限を超過しているかを示す真偽値である。 |
| Roaming | BOOLEAN | 1 | +10 | +10 | ローミング中かどうかを示す真偽値である。 |
各言語での定義
#include <windows.h>
// NL_NETWORK_CONNECTIVITY_HINT (x64 12 / x86 12 バイト)
typedef struct NL_NETWORK_CONNECTIVITY_HINT {
NL_NETWORK_CONNECTIVITY_LEVEL_HINT ConnectivityLevel;
NL_NETWORK_CONNECTIVITY_COST_HINT ConnectivityCost;
BOOLEAN ApproachingDataLimit;
BOOLEAN OverDataLimit;
BOOLEAN Roaming;
} NL_NETWORK_CONNECTIVITY_HINT;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct NL_NETWORK_CONNECTIVITY_HINT
{
public int ConnectivityLevel;
public int ConnectivityCost;
[MarshalAs(UnmanagedType.U1)] public bool ApproachingDataLimit;
[MarshalAs(UnmanagedType.U1)] public bool OverDataLimit;
[MarshalAs(UnmanagedType.U1)] public bool Roaming;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure NL_NETWORK_CONNECTIVITY_HINT
Public ConnectivityLevel As Integer
Public ConnectivityCost As Integer
<MarshalAs(UnmanagedType.U1)> Public ApproachingDataLimit As Boolean
<MarshalAs(UnmanagedType.U1)> Public OverDataLimit As Boolean
<MarshalAs(UnmanagedType.U1)> Public Roaming As Boolean
End Structureimport ctypes
from ctypes import wintypes
class NL_NETWORK_CONNECTIVITY_HINT(ctypes.Structure):
_fields_ = [
("ConnectivityLevel", ctypes.c_int),
("ConnectivityCost", ctypes.c_int),
("ApproachingDataLimit", ctypes.c_byte),
("OverDataLimit", ctypes.c_byte),
("Roaming", ctypes.c_byte),
]#[repr(C)]
pub struct NL_NETWORK_CONNECTIVITY_HINT {
pub ConnectivityLevel: i32,
pub ConnectivityCost: i32,
pub ApproachingDataLimit: u8,
pub OverDataLimit: u8,
pub Roaming: u8,
}import "golang.org/x/sys/windows"
type NL_NETWORK_CONNECTIVITY_HINT struct {
ConnectivityLevel int32
ConnectivityCost int32
ApproachingDataLimit byte
OverDataLimit byte
Roaming byte
}type
NL_NETWORK_CONNECTIVITY_HINT = record
ConnectivityLevel: Integer;
ConnectivityCost: Integer;
ApproachingDataLimit: ByteBool;
OverDataLimit: ByteBool;
Roaming: ByteBool;
end;const NL_NETWORK_CONNECTIVITY_HINT = extern struct {
ConnectivityLevel: i32,
ConnectivityCost: i32,
ApproachingDataLimit: u8,
OverDataLimit: u8,
Roaming: u8,
};type
NL_NETWORK_CONNECTIVITY_HINT {.bycopy.} = object
ConnectivityLevel: int32
ConnectivityCost: int32
ApproachingDataLimit: uint8
OverDataLimit: uint8
Roaming: uint8struct NL_NETWORK_CONNECTIVITY_HINT
{
int ConnectivityLevel;
int ConnectivityCost;
ubyte ApproachingDataLimit;
ubyte OverDataLimit;
ubyte Roaming;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; NL_NETWORK_CONNECTIVITY_HINT サイズ: 12 バイト(x64)
dim st, 3 ; 4byte整数×3(構造体サイズ 12 / 4 切り上げ)
; ConnectivityLevel : NL_NETWORK_CONNECTIVITY_LEVEL_HINT (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; ConnectivityCost : NL_NETWORK_CONNECTIVITY_COST_HINT (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; ApproachingDataLimit : BOOLEAN (+8, 1byte) poke st,8,値 / 値 = peek(st,8)
; OverDataLimit : BOOLEAN (+9, 1byte) poke st,9,値 / 値 = peek(st,9)
; Roaming : BOOLEAN (+10, 1byte) poke st,10,値 / 値 = peek(st,10)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global NL_NETWORK_CONNECTIVITY_HINT
#field int ConnectivityLevel
#field int ConnectivityCost
#field bool1 ApproachingDataLimit
#field bool1 OverDataLimit
#field bool1 Roaming
#endstruct
stdim st, NL_NETWORK_CONNECTIVITY_HINT ; NSTRUCT 変数を確保
st->ConnectivityLevel = 100
mes "ConnectivityLevel=" + st->ConnectivityLevel