ホーム › NetworkManagement.NetBios › ADAPTER_STATUS
ADAPTER_STATUS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| adapter_address | BYTE | 6 | +0 | +0 | アダプタのMACアドレス(6バイト)。 |
| rev_major | BYTE | 1 | +6 | +6 | ソフトウェアのメジャーリビジョン番号。 |
| reserved0 | BYTE | 1 | +7 | +7 | 予約フィールド。 |
| adapter_type | BYTE | 1 | +8 | +8 | アダプタ種別(トークンリング/イーサネット等)。 |
| rev_minor | BYTE | 1 | +9 | +9 | ソフトウェアのマイナーリビジョン番号。 |
| duration | WORD | 2 | +10 | +10 | アダプタが報告した経過時間(分単位)。 |
| frmr_recv | WORD | 2 | +12 | +12 | 受信したFRMRフレーム数。 |
| frmr_xmit | WORD | 2 | +14 | +14 | 送信したFRMRフレーム数。 |
| iframe_recv_err | WORD | 2 | +16 | +16 | 受信時の情報フレームエラー数。 |
| xmit_aborts | WORD | 2 | +18 | +18 | 中断された送信回数。 |
| xmit_success | DWORD | 4 | +20 | +20 | 送信に成功したパケット数。 |
| recv_success | DWORD | 4 | +24 | +24 | 受信に成功したパケット数。 |
| iframe_xmit_err | WORD | 2 | +28 | +28 | 送信時の情報フレームエラー数。 |
| recv_buff_unavail | WORD | 2 | +30 | +30 | 受信バッファ不足の発生回数。 |
| t1_timeouts | WORD | 2 | +32 | +32 | T1タイマーのタイムアウト回数。 |
| ti_timeouts | WORD | 2 | +34 | +34 | Tiタイマーのタイムアウト回数。 |
| reserved1 | DWORD | 4 | +36 | +36 | 予約フィールド。 |
| free_ncbs | WORD | 2 | +40 | +40 | 現在使用可能なNCBの数。 |
| max_cfg_ncbs | WORD | 2 | +42 | +42 | 構成上の最大NCB数。 |
| max_ncbs | WORD | 2 | +44 | +44 | 現在の最大NCB数。 |
| xmit_buf_unavail | WORD | 2 | +46 | +46 | 送信バッファ不足の発生回数。 |
| max_dgram_size | WORD | 2 | +48 | +48 | 最大データグラムサイズ(バイト)。 |
| pending_sess | WORD | 2 | +50 | +50 | 保留中のセッション数。 |
| max_cfg_sess | WORD | 2 | +52 | +52 | 構成上の最大セッション数。 |
| max_sess | WORD | 2 | +54 | +54 | 現在の最大セッション数。 |
| max_sess_pkt_size | WORD | 2 | +56 | +56 | セッションの最大パケットサイズ(バイト)。 |
| name_count | WORD | 2 | +58 | +58 | ローカル名テーブルに登録された名前の数。 |
各言語での定義
#include <windows.h>
// ADAPTER_STATUS (x64 60 / x86 60 バイト)
typedef struct ADAPTER_STATUS {
BYTE adapter_address[6];
BYTE rev_major;
BYTE reserved0;
BYTE adapter_type;
BYTE rev_minor;
WORD duration;
WORD frmr_recv;
WORD frmr_xmit;
WORD iframe_recv_err;
WORD xmit_aborts;
DWORD xmit_success;
DWORD recv_success;
WORD iframe_xmit_err;
WORD recv_buff_unavail;
WORD t1_timeouts;
WORD ti_timeouts;
DWORD reserved1;
WORD free_ncbs;
WORD max_cfg_ncbs;
WORD max_ncbs;
WORD xmit_buf_unavail;
WORD max_dgram_size;
WORD pending_sess;
WORD max_cfg_sess;
WORD max_sess;
WORD max_sess_pkt_size;
WORD name_count;
} ADAPTER_STATUS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct ADAPTER_STATUS
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] adapter_address;
public byte rev_major;
public byte reserved0;
public byte adapter_type;
public byte rev_minor;
public ushort duration;
public ushort frmr_recv;
public ushort frmr_xmit;
public ushort iframe_recv_err;
public ushort xmit_aborts;
public uint xmit_success;
public uint recv_success;
public ushort iframe_xmit_err;
public ushort recv_buff_unavail;
public ushort t1_timeouts;
public ushort ti_timeouts;
public uint reserved1;
public ushort free_ncbs;
public ushort max_cfg_ncbs;
public ushort max_ncbs;
public ushort xmit_buf_unavail;
public ushort max_dgram_size;
public ushort pending_sess;
public ushort max_cfg_sess;
public ushort max_sess;
public ushort max_sess_pkt_size;
public ushort name_count;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure ADAPTER_STATUS
<MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public adapter_address() As Byte
Public rev_major As Byte
Public reserved0 As Byte
Public adapter_type As Byte
Public rev_minor As Byte
Public duration As UShort
Public frmr_recv As UShort
Public frmr_xmit As UShort
Public iframe_recv_err As UShort
Public xmit_aborts As UShort
Public xmit_success As UInteger
Public recv_success As UInteger
Public iframe_xmit_err As UShort
Public recv_buff_unavail As UShort
Public t1_timeouts As UShort
Public ti_timeouts As UShort
Public reserved1 As UInteger
Public free_ncbs As UShort
Public max_cfg_ncbs As UShort
Public max_ncbs As UShort
Public xmit_buf_unavail As UShort
Public max_dgram_size As UShort
Public pending_sess As UShort
Public max_cfg_sess As UShort
Public max_sess As UShort
Public max_sess_pkt_size As UShort
Public name_count As UShort
End Structureimport ctypes
from ctypes import wintypes
class ADAPTER_STATUS(ctypes.Structure):
_fields_ = [
("adapter_address", ctypes.c_ubyte * 6),
("rev_major", ctypes.c_ubyte),
("reserved0", ctypes.c_ubyte),
("adapter_type", ctypes.c_ubyte),
("rev_minor", ctypes.c_ubyte),
("duration", ctypes.c_ushort),
("frmr_recv", ctypes.c_ushort),
("frmr_xmit", ctypes.c_ushort),
("iframe_recv_err", ctypes.c_ushort),
("xmit_aborts", ctypes.c_ushort),
("xmit_success", wintypes.DWORD),
("recv_success", wintypes.DWORD),
("iframe_xmit_err", ctypes.c_ushort),
("recv_buff_unavail", ctypes.c_ushort),
("t1_timeouts", ctypes.c_ushort),
("ti_timeouts", ctypes.c_ushort),
("reserved1", wintypes.DWORD),
("free_ncbs", ctypes.c_ushort),
("max_cfg_ncbs", ctypes.c_ushort),
("max_ncbs", ctypes.c_ushort),
("xmit_buf_unavail", ctypes.c_ushort),
("max_dgram_size", ctypes.c_ushort),
("pending_sess", ctypes.c_ushort),
("max_cfg_sess", ctypes.c_ushort),
("max_sess", ctypes.c_ushort),
("max_sess_pkt_size", ctypes.c_ushort),
("name_count", ctypes.c_ushort),
]#[repr(C)]
pub struct ADAPTER_STATUS {
pub adapter_address: [u8; 6],
pub rev_major: u8,
pub reserved0: u8,
pub adapter_type: u8,
pub rev_minor: u8,
pub duration: u16,
pub frmr_recv: u16,
pub frmr_xmit: u16,
pub iframe_recv_err: u16,
pub xmit_aborts: u16,
pub xmit_success: u32,
pub recv_success: u32,
pub iframe_xmit_err: u16,
pub recv_buff_unavail: u16,
pub t1_timeouts: u16,
pub ti_timeouts: u16,
pub reserved1: u32,
pub free_ncbs: u16,
pub max_cfg_ncbs: u16,
pub max_ncbs: u16,
pub xmit_buf_unavail: u16,
pub max_dgram_size: u16,
pub pending_sess: u16,
pub max_cfg_sess: u16,
pub max_sess: u16,
pub max_sess_pkt_size: u16,
pub name_count: u16,
}import "golang.org/x/sys/windows"
type ADAPTER_STATUS struct {
adapter_address [6]byte
rev_major byte
reserved0 byte
adapter_type byte
rev_minor byte
duration uint16
frmr_recv uint16
frmr_xmit uint16
iframe_recv_err uint16
xmit_aborts uint16
xmit_success uint32
recv_success uint32
iframe_xmit_err uint16
recv_buff_unavail uint16
t1_timeouts uint16
ti_timeouts uint16
reserved1 uint32
free_ncbs uint16
max_cfg_ncbs uint16
max_ncbs uint16
xmit_buf_unavail uint16
max_dgram_size uint16
pending_sess uint16
max_cfg_sess uint16
max_sess uint16
max_sess_pkt_size uint16
name_count uint16
}type
ADAPTER_STATUS = record
adapter_address: array[0..5] of Byte;
rev_major: Byte;
reserved0: Byte;
adapter_type: Byte;
rev_minor: Byte;
duration: Word;
frmr_recv: Word;
frmr_xmit: Word;
iframe_recv_err: Word;
xmit_aborts: Word;
xmit_success: DWORD;
recv_success: DWORD;
iframe_xmit_err: Word;
recv_buff_unavail: Word;
t1_timeouts: Word;
ti_timeouts: Word;
reserved1: DWORD;
free_ncbs: Word;
max_cfg_ncbs: Word;
max_ncbs: Word;
xmit_buf_unavail: Word;
max_dgram_size: Word;
pending_sess: Word;
max_cfg_sess: Word;
max_sess: Word;
max_sess_pkt_size: Word;
name_count: Word;
end;const ADAPTER_STATUS = extern struct {
adapter_address: [6]u8,
rev_major: u8,
reserved0: u8,
adapter_type: u8,
rev_minor: u8,
duration: u16,
frmr_recv: u16,
frmr_xmit: u16,
iframe_recv_err: u16,
xmit_aborts: u16,
xmit_success: u32,
recv_success: u32,
iframe_xmit_err: u16,
recv_buff_unavail: u16,
t1_timeouts: u16,
ti_timeouts: u16,
reserved1: u32,
free_ncbs: u16,
max_cfg_ncbs: u16,
max_ncbs: u16,
xmit_buf_unavail: u16,
max_dgram_size: u16,
pending_sess: u16,
max_cfg_sess: u16,
max_sess: u16,
max_sess_pkt_size: u16,
name_count: u16,
};type
ADAPTER_STATUS {.bycopy.} = object
adapter_address: array[6, uint8]
rev_major: uint8
reserved0: uint8
adapter_type: uint8
rev_minor: uint8
duration: uint16
frmr_recv: uint16
frmr_xmit: uint16
iframe_recv_err: uint16
xmit_aborts: uint16
xmit_success: uint32
recv_success: uint32
iframe_xmit_err: uint16
recv_buff_unavail: uint16
t1_timeouts: uint16
ti_timeouts: uint16
reserved1: uint32
free_ncbs: uint16
max_cfg_ncbs: uint16
max_ncbs: uint16
xmit_buf_unavail: uint16
max_dgram_size: uint16
pending_sess: uint16
max_cfg_sess: uint16
max_sess: uint16
max_sess_pkt_size: uint16
name_count: uint16struct ADAPTER_STATUS
{
ubyte[6] adapter_address;
ubyte rev_major;
ubyte reserved0;
ubyte adapter_type;
ubyte rev_minor;
ushort duration;
ushort frmr_recv;
ushort frmr_xmit;
ushort iframe_recv_err;
ushort xmit_aborts;
uint xmit_success;
uint recv_success;
ushort iframe_xmit_err;
ushort recv_buff_unavail;
ushort t1_timeouts;
ushort ti_timeouts;
uint reserved1;
ushort free_ncbs;
ushort max_cfg_ncbs;
ushort max_ncbs;
ushort xmit_buf_unavail;
ushort max_dgram_size;
ushort pending_sess;
ushort max_cfg_sess;
ushort max_sess;
ushort max_sess_pkt_size;
ushort name_count;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; ADAPTER_STATUS サイズ: 60 バイト(x64)
dim st, 15 ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; adapter_address : BYTE (+0, 6byte) varptr(st)+0 を基点に操作(6byte:入れ子/配列)
; rev_major : BYTE (+6, 1byte) poke st,6,値 / 値 = peek(st,6)
; reserved0 : BYTE (+7, 1byte) poke st,7,値 / 値 = peek(st,7)
; adapter_type : BYTE (+8, 1byte) poke st,8,値 / 値 = peek(st,8)
; rev_minor : BYTE (+9, 1byte) poke st,9,値 / 値 = peek(st,9)
; duration : WORD (+10, 2byte) wpoke st,10,値 / 値 = wpeek(st,10)
; frmr_recv : WORD (+12, 2byte) wpoke st,12,値 / 値 = wpeek(st,12)
; frmr_xmit : WORD (+14, 2byte) wpoke st,14,値 / 値 = wpeek(st,14)
; iframe_recv_err : WORD (+16, 2byte) wpoke st,16,値 / 値 = wpeek(st,16)
; xmit_aborts : WORD (+18, 2byte) wpoke st,18,値 / 値 = wpeek(st,18)
; xmit_success : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; recv_success : DWORD (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; iframe_xmit_err : WORD (+28, 2byte) wpoke st,28,値 / 値 = wpeek(st,28)
; recv_buff_unavail : WORD (+30, 2byte) wpoke st,30,値 / 値 = wpeek(st,30)
; t1_timeouts : WORD (+32, 2byte) wpoke st,32,値 / 値 = wpeek(st,32)
; ti_timeouts : WORD (+34, 2byte) wpoke st,34,値 / 値 = wpeek(st,34)
; reserved1 : DWORD (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; free_ncbs : WORD (+40, 2byte) wpoke st,40,値 / 値 = wpeek(st,40)
; max_cfg_ncbs : WORD (+42, 2byte) wpoke st,42,値 / 値 = wpeek(st,42)
; max_ncbs : WORD (+44, 2byte) wpoke st,44,値 / 値 = wpeek(st,44)
; xmit_buf_unavail : WORD (+46, 2byte) wpoke st,46,値 / 値 = wpeek(st,46)
; max_dgram_size : WORD (+48, 2byte) wpoke st,48,値 / 値 = wpeek(st,48)
; pending_sess : WORD (+50, 2byte) wpoke st,50,値 / 値 = wpeek(st,50)
; max_cfg_sess : WORD (+52, 2byte) wpoke st,52,値 / 値 = wpeek(st,52)
; max_sess : WORD (+54, 2byte) wpoke st,54,値 / 値 = wpeek(st,54)
; max_sess_pkt_size : WORD (+56, 2byte) wpoke st,56,値 / 値 = wpeek(st,56)
; name_count : WORD (+58, 2byte) wpoke st,58,値 / 値 = wpeek(st,58)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global ADAPTER_STATUS
#field byte adapter_address 6
#field byte rev_major
#field byte reserved0
#field byte adapter_type
#field byte rev_minor
#field short duration
#field short frmr_recv
#field short frmr_xmit
#field short iframe_recv_err
#field short xmit_aborts
#field int xmit_success
#field int recv_success
#field short iframe_xmit_err
#field short recv_buff_unavail
#field short t1_timeouts
#field short ti_timeouts
#field int reserved1
#field short free_ncbs
#field short max_cfg_ncbs
#field short max_ncbs
#field short xmit_buf_unavail
#field short max_dgram_size
#field short pending_sess
#field short max_cfg_sess
#field short max_sess
#field short max_sess_pkt_size
#field short name_count
#endstruct
stdim st, ADAPTER_STATUS ; NSTRUCT 変数を確保
st->rev_major = 100
mes "rev_major=" + st->rev_major