Win32 API 日本語リファレンス
ホームNetworkManagement.NetBios › ADAPTER_STATUS

ADAPTER_STATUS

構造体
サイズx64: 60 バイト / x86: 60 バイト

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
adapter_addressBYTE6+0+0アダプタのMACアドレス(6バイト)。
rev_majorBYTE1+6+6ソフトウェアのメジャーリビジョン番号。
reserved0BYTE1+7+7予約フィールド。
adapter_typeBYTE1+8+8アダプタ種別(トークンリング/イーサネット等)。
rev_minorBYTE1+9+9ソフトウェアのマイナーリビジョン番号。
durationWORD2+10+10アダプタが報告した経過時間(分単位)。
frmr_recvWORD2+12+12受信したFRMRフレーム数。
frmr_xmitWORD2+14+14送信したFRMRフレーム数。
iframe_recv_errWORD2+16+16受信時の情報フレームエラー数。
xmit_abortsWORD2+18+18中断された送信回数。
xmit_successDWORD4+20+20送信に成功したパケット数。
recv_successDWORD4+24+24受信に成功したパケット数。
iframe_xmit_errWORD2+28+28送信時の情報フレームエラー数。
recv_buff_unavailWORD2+30+30受信バッファ不足の発生回数。
t1_timeoutsWORD2+32+32T1タイマーのタイムアウト回数。
ti_timeoutsWORD2+34+34Tiタイマーのタイムアウト回数。
reserved1DWORD4+36+36予約フィールド。
free_ncbsWORD2+40+40現在使用可能なNCBの数。
max_cfg_ncbsWORD2+42+42構成上の最大NCB数。
max_ncbsWORD2+44+44現在の最大NCB数。
xmit_buf_unavailWORD2+46+46送信バッファ不足の発生回数。
max_dgram_sizeWORD2+48+48最大データグラムサイズ(バイト)。
pending_sessWORD2+50+50保留中のセッション数。
max_cfg_sessWORD2+52+52構成上の最大セッション数。
max_sessWORD2+54+54現在の最大セッション数。
max_sess_pkt_sizeWORD2+56+56セッションの最大パケットサイズ(バイト)。
name_countWORD2+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 Structure
import 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: uint16
struct 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