Win32 API 日本語リファレンス
ホームNetworking.WinSock › IPX_SPXCONNSTATUS_DATA

IPX_SPXCONNSTATUS_DATA

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

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

フィールド

フィールドサイズx64x86説明
ConnectionStateBYTE1+0+0SPX接続の状態を示す値である。
WatchDogActiveBYTE1+1+1ウォッチドッグタイマが有効かどうかを示す値である。
LocalConnectionIdWORD2+2+2ローカル側の接続IDである。
RemoteConnectionIdWORD2+4+4リモート側の接続IDである。
LocalSequenceNumberWORD2+6+6ローカル側の送信シーケンス番号である。
LocalAckNumberWORD2+8+8ローカル側の確認応答番号である。
LocalAllocNumberWORD2+10+10ローカル側の割り当て番号(受信可能枠)である。
RemoteAckNumberWORD2+12+12リモート側の確認応答番号である。
RemoteAllocNumberWORD2+14+14リモート側の割り当て番号(受信可能枠)である。
LocalSocketWORD2+16+16ローカル側のIPXソケット番号である。
ImmediateAddressBYTE6+18+18次ホップ(直近)のノードアドレス(6バイト)である。
RemoteNetworkBYTE4+24+24リモートのネットワーク番号(4バイト)である。
RemoteNodeBYTE6+28+28リモートのノード番号(6バイト)である。
RemoteSocketWORD2+34+34リモート側のIPXソケット番号である。
RetransmissionCountWORD2+36+36再送回数である。
EstimatedRoundTripDelayWORD2+38+38推定ラウンドトリップ遅延(ミリ秒)である。
RetransmittedPacketsWORD2+40+40再送されたパケットの累計数である。
SuppressedPacketWORD2+42+42抑制されたパケットの数である。

各言語での定義

#include <windows.h>

// IPX_SPXCONNSTATUS_DATA  (x64 44 / x86 44 バイト)
typedef struct IPX_SPXCONNSTATUS_DATA {
    BYTE ConnectionState;
    BYTE WatchDogActive;
    WORD LocalConnectionId;
    WORD RemoteConnectionId;
    WORD LocalSequenceNumber;
    WORD LocalAckNumber;
    WORD LocalAllocNumber;
    WORD RemoteAckNumber;
    WORD RemoteAllocNumber;
    WORD LocalSocket;
    BYTE ImmediateAddress[6];
    BYTE RemoteNetwork[4];
    BYTE RemoteNode[6];
    WORD RemoteSocket;
    WORD RetransmissionCount;
    WORD EstimatedRoundTripDelay;
    WORD RetransmittedPackets;
    WORD SuppressedPacket;
} IPX_SPXCONNSTATUS_DATA;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct IPX_SPXCONNSTATUS_DATA
{
    public byte ConnectionState;
    public byte WatchDogActive;
    public ushort LocalConnectionId;
    public ushort RemoteConnectionId;
    public ushort LocalSequenceNumber;
    public ushort LocalAckNumber;
    public ushort LocalAllocNumber;
    public ushort RemoteAckNumber;
    public ushort RemoteAllocNumber;
    public ushort LocalSocket;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] ImmediateAddress;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)] public byte[] RemoteNetwork;
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 6)] public byte[] RemoteNode;
    public ushort RemoteSocket;
    public ushort RetransmissionCount;
    public ushort EstimatedRoundTripDelay;
    public ushort RetransmittedPackets;
    public ushort SuppressedPacket;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure IPX_SPXCONNSTATUS_DATA
    Public ConnectionState As Byte
    Public WatchDogActive As Byte
    Public LocalConnectionId As UShort
    Public RemoteConnectionId As UShort
    Public LocalSequenceNumber As UShort
    Public LocalAckNumber As UShort
    Public LocalAllocNumber As UShort
    Public RemoteAckNumber As UShort
    Public RemoteAllocNumber As UShort
    Public LocalSocket As UShort
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public ImmediateAddress() As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=4)> Public RemoteNetwork() As Byte
    <MarshalAs(UnmanagedType.ByValArray, SizeConst:=6)> Public RemoteNode() As Byte
    Public RemoteSocket As UShort
    Public RetransmissionCount As UShort
    Public EstimatedRoundTripDelay As UShort
    Public RetransmittedPackets As UShort
    Public SuppressedPacket As UShort
End Structure
import ctypes
from ctypes import wintypes

class IPX_SPXCONNSTATUS_DATA(ctypes.Structure):
    _fields_ = [
        ("ConnectionState", ctypes.c_ubyte),
        ("WatchDogActive", ctypes.c_ubyte),
        ("LocalConnectionId", ctypes.c_ushort),
        ("RemoteConnectionId", ctypes.c_ushort),
        ("LocalSequenceNumber", ctypes.c_ushort),
        ("LocalAckNumber", ctypes.c_ushort),
        ("LocalAllocNumber", ctypes.c_ushort),
        ("RemoteAckNumber", ctypes.c_ushort),
        ("RemoteAllocNumber", ctypes.c_ushort),
        ("LocalSocket", ctypes.c_ushort),
        ("ImmediateAddress", ctypes.c_ubyte * 6),
        ("RemoteNetwork", ctypes.c_ubyte * 4),
        ("RemoteNode", ctypes.c_ubyte * 6),
        ("RemoteSocket", ctypes.c_ushort),
        ("RetransmissionCount", ctypes.c_ushort),
        ("EstimatedRoundTripDelay", ctypes.c_ushort),
        ("RetransmittedPackets", ctypes.c_ushort),
        ("SuppressedPacket", ctypes.c_ushort),
    ]
#[repr(C)]
pub struct IPX_SPXCONNSTATUS_DATA {
    pub ConnectionState: u8,
    pub WatchDogActive: u8,
    pub LocalConnectionId: u16,
    pub RemoteConnectionId: u16,
    pub LocalSequenceNumber: u16,
    pub LocalAckNumber: u16,
    pub LocalAllocNumber: u16,
    pub RemoteAckNumber: u16,
    pub RemoteAllocNumber: u16,
    pub LocalSocket: u16,
    pub ImmediateAddress: [u8; 6],
    pub RemoteNetwork: [u8; 4],
    pub RemoteNode: [u8; 6],
    pub RemoteSocket: u16,
    pub RetransmissionCount: u16,
    pub EstimatedRoundTripDelay: u16,
    pub RetransmittedPackets: u16,
    pub SuppressedPacket: u16,
}
import "golang.org/x/sys/windows"

type IPX_SPXCONNSTATUS_DATA struct {
	ConnectionState byte
	WatchDogActive byte
	LocalConnectionId uint16
	RemoteConnectionId uint16
	LocalSequenceNumber uint16
	LocalAckNumber uint16
	LocalAllocNumber uint16
	RemoteAckNumber uint16
	RemoteAllocNumber uint16
	LocalSocket uint16
	ImmediateAddress [6]byte
	RemoteNetwork [4]byte
	RemoteNode [6]byte
	RemoteSocket uint16
	RetransmissionCount uint16
	EstimatedRoundTripDelay uint16
	RetransmittedPackets uint16
	SuppressedPacket uint16
}
type
  IPX_SPXCONNSTATUS_DATA = record
    ConnectionState: Byte;
    WatchDogActive: Byte;
    LocalConnectionId: Word;
    RemoteConnectionId: Word;
    LocalSequenceNumber: Word;
    LocalAckNumber: Word;
    LocalAllocNumber: Word;
    RemoteAckNumber: Word;
    RemoteAllocNumber: Word;
    LocalSocket: Word;
    ImmediateAddress: array[0..5] of Byte;
    RemoteNetwork: array[0..3] of Byte;
    RemoteNode: array[0..5] of Byte;
    RemoteSocket: Word;
    RetransmissionCount: Word;
    EstimatedRoundTripDelay: Word;
    RetransmittedPackets: Word;
    SuppressedPacket: Word;
  end;
const IPX_SPXCONNSTATUS_DATA = extern struct {
    ConnectionState: u8,
    WatchDogActive: u8,
    LocalConnectionId: u16,
    RemoteConnectionId: u16,
    LocalSequenceNumber: u16,
    LocalAckNumber: u16,
    LocalAllocNumber: u16,
    RemoteAckNumber: u16,
    RemoteAllocNumber: u16,
    LocalSocket: u16,
    ImmediateAddress: [6]u8,
    RemoteNetwork: [4]u8,
    RemoteNode: [6]u8,
    RemoteSocket: u16,
    RetransmissionCount: u16,
    EstimatedRoundTripDelay: u16,
    RetransmittedPackets: u16,
    SuppressedPacket: u16,
};
type
  IPX_SPXCONNSTATUS_DATA {.bycopy.} = object
    ConnectionState: uint8
    WatchDogActive: uint8
    LocalConnectionId: uint16
    RemoteConnectionId: uint16
    LocalSequenceNumber: uint16
    LocalAckNumber: uint16
    LocalAllocNumber: uint16
    RemoteAckNumber: uint16
    RemoteAllocNumber: uint16
    LocalSocket: uint16
    ImmediateAddress: array[6, uint8]
    RemoteNetwork: array[4, uint8]
    RemoteNode: array[6, uint8]
    RemoteSocket: uint16
    RetransmissionCount: uint16
    EstimatedRoundTripDelay: uint16
    RetransmittedPackets: uint16
    SuppressedPacket: uint16
struct IPX_SPXCONNSTATUS_DATA
{
    ubyte ConnectionState;
    ubyte WatchDogActive;
    ushort LocalConnectionId;
    ushort RemoteConnectionId;
    ushort LocalSequenceNumber;
    ushort LocalAckNumber;
    ushort LocalAllocNumber;
    ushort RemoteAckNumber;
    ushort RemoteAllocNumber;
    ushort LocalSocket;
    ubyte[6] ImmediateAddress;
    ubyte[4] RemoteNetwork;
    ubyte[6] RemoteNode;
    ushort RemoteSocket;
    ushort RetransmissionCount;
    ushort EstimatedRoundTripDelay;
    ushort RetransmittedPackets;
    ushort SuppressedPacket;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; IPX_SPXCONNSTATUS_DATA サイズ: 44 バイト(x64)
dim st, 11    ; 4byte整数×11(構造体サイズ 44 / 4 切り上げ)
; ConnectionState : BYTE (+0, 1byte)  poke st,0,値  /  値 = peek(st,0)
; WatchDogActive : BYTE (+1, 1byte)  poke st,1,値  /  値 = peek(st,1)
; LocalConnectionId : WORD (+2, 2byte)  wpoke st,2,値  /  値 = wpeek(st,2)
; RemoteConnectionId : WORD (+4, 2byte)  wpoke st,4,値  /  値 = wpeek(st,4)
; LocalSequenceNumber : WORD (+6, 2byte)  wpoke st,6,値  /  値 = wpeek(st,6)
; LocalAckNumber : WORD (+8, 2byte)  wpoke st,8,値  /  値 = wpeek(st,8)
; LocalAllocNumber : WORD (+10, 2byte)  wpoke st,10,値  /  値 = wpeek(st,10)
; RemoteAckNumber : WORD (+12, 2byte)  wpoke st,12,値  /  値 = wpeek(st,12)
; RemoteAllocNumber : WORD (+14, 2byte)  wpoke st,14,値  /  値 = wpeek(st,14)
; LocalSocket : WORD (+16, 2byte)  wpoke st,16,値  /  値 = wpeek(st,16)
; ImmediateAddress : BYTE (+18, 6byte)  varptr(st)+18 を基点に操作(6byte:入れ子/配列)
; RemoteNetwork : BYTE (+24, 4byte)  varptr(st)+24 を基点に操作(4byte:入れ子/配列)
; RemoteNode : BYTE (+28, 6byte)  varptr(st)+28 を基点に操作(6byte:入れ子/配列)
; RemoteSocket : WORD (+34, 2byte)  wpoke st,34,値  /  値 = wpeek(st,34)
; RetransmissionCount : WORD (+36, 2byte)  wpoke st,36,値  /  値 = wpeek(st,36)
; EstimatedRoundTripDelay : WORD (+38, 2byte)  wpoke st,38,値  /  値 = wpeek(st,38)
; RetransmittedPackets : WORD (+40, 2byte)  wpoke st,40,値  /  値 = wpeek(st,40)
; SuppressedPacket : WORD (+42, 2byte)  wpoke st,42,値  /  値 = wpeek(st,42)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global IPX_SPXCONNSTATUS_DATA
    #field byte ConnectionState
    #field byte WatchDogActive
    #field short LocalConnectionId
    #field short RemoteConnectionId
    #field short LocalSequenceNumber
    #field short LocalAckNumber
    #field short LocalAllocNumber
    #field short RemoteAckNumber
    #field short RemoteAllocNumber
    #field short LocalSocket
    #field byte ImmediateAddress 6
    #field byte RemoteNetwork 4
    #field byte RemoteNode 6
    #field short RemoteSocket
    #field short RetransmissionCount
    #field short EstimatedRoundTripDelay
    #field short RetransmittedPackets
    #field short SuppressedPacket
#endstruct

stdim st, IPX_SPXCONNSTATUS_DATA        ; NSTRUCT 変数を確保
st->ConnectionState = 100
mes "ConnectionState=" + st->ConnectionState