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アダプターのエンコードされたアドレスを指定します。
rev_majorBYTE1+6+6メジャーソフトウェアリリースレベルを指定します。IBM NetBIOS 3.x の場合、この値は 3 です。
reserved0BYTE1+7+7予約済みです。この値は常に 0 です。
adapter_typeBYTE1+8+8アダプターの種類を指定します。この値は、トークンリングアダプターの場合は 0xFF、イーサネットアダプターの場合は 0xFE です。
rev_minorBYTE1+9+9マイナーソフトウェアリリースレベルを指定します。IBM NetBIOS x.0 の場合、この値は 0 です。
durationWORD2+10+10レポート期間の長さを分単位で指定します。
frmr_recvWORD2+12+12受信した FRMR フレームの数を指定します。
frmr_xmitWORD2+14+14送信した FRMR フレームの数を指定します。
iframe_recv_errWORD2+16+16エラーとなって受信された I フレームの数を指定します。
xmit_abortsWORD2+18+18中止された送信の数を指定します。
xmit_successDWORD4+20+20正常に送信されたパケットの数を指定します。
recv_successDWORD4+24+24正常に受信されたパケットの数を指定します。
iframe_xmit_errWORD2+28+28エラーとなって送信された I フレームの数を指定します。
recv_buff_unavailWORD2+30+30リモートコンピューターからの要求を処理するためのバッファーが利用できなかった回数を指定します。
t1_timeoutsWORD2+32+32

DLC T1 タイマーがタイムアウトした回数を指定します。

Windows 95: DLC は現在サポートされていません。

ti_timeoutsWORD2+34+34ti 非アクティブタイマーがタイムアウトした回数を指定します。ti タイマーは、切断されたリンクを検出するために使用されます。
reserved1DWORD4+36+36予約済みです。この値は常に 0 です。
free_ncbsWORD2+40+40現在の空きネットワーク制御ブロックの数を指定します。
max_cfg_ncbsWORD2+42+42IBM NetBIOS 3.0 では未定義です。
max_ncbsWORD2+44+44IBM NetBIOS 3.0 では未定義です。
xmit_buf_unavailWORD2+46+46IBM NetBIOS 3.0 では未定義です。
max_dgram_sizeWORD2+48+48データグラムパケットの最大サイズを指定します。この値は常に 512 バイト以上です。
pending_sessWORD2+50+50保留中のセッションの数を指定します。
max_cfg_sessWORD2+52+52構成されている保留中セッションの最大数を指定します。
max_sessWORD2+54+54IBM NetBIOS 3.0 では未定義です。
max_sess_pkt_sizeWORD2+56+56セッションデータパケットの最大サイズを指定します。
name_countWORD2+58+58ローカル名テーブル内の名前の数を指定します。

公式ドキュメント

[Netbios は Windows Vista、Windows Server 2008、およびそれ以降のバージョンのオペレーティングシステムではサポートされていません]

ADAPTER_STATUS 構造体は、ネットワークアダプターに関する情報を格納します。この構造体は、NCB 構造体の ncb_buffer メンバーによって指されます。ADAPTER_STATUS の後には、システム上のネットワークアダプターを記述するために必要な数だけ NAME_BUFFER 構造体が続きます。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#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