ホーム › Networking.WinSock › IPX_SPXCONNSTATUS_DATA
IPX_SPXCONNSTATUS_DATA
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ConnectionState | BYTE | 1 | +0 | +0 | SPX接続の状態を示す値である。 |
| WatchDogActive | BYTE | 1 | +1 | +1 | ウォッチドッグタイマが有効かどうかを示す値である。 |
| LocalConnectionId | WORD | 2 | +2 | +2 | ローカル側の接続IDである。 |
| RemoteConnectionId | WORD | 2 | +4 | +4 | リモート側の接続IDである。 |
| LocalSequenceNumber | WORD | 2 | +6 | +6 | ローカル側の送信シーケンス番号である。 |
| LocalAckNumber | WORD | 2 | +8 | +8 | ローカル側の確認応答番号である。 |
| LocalAllocNumber | WORD | 2 | +10 | +10 | ローカル側の割り当て番号(受信可能枠)である。 |
| RemoteAckNumber | WORD | 2 | +12 | +12 | リモート側の確認応答番号である。 |
| RemoteAllocNumber | WORD | 2 | +14 | +14 | リモート側の割り当て番号(受信可能枠)である。 |
| LocalSocket | WORD | 2 | +16 | +16 | ローカル側のIPXソケット番号である。 |
| ImmediateAddress | BYTE | 6 | +18 | +18 | 次ホップ(直近)のノードアドレス(6バイト)である。 |
| RemoteNetwork | BYTE | 4 | +24 | +24 | リモートのネットワーク番号(4バイト)である。 |
| RemoteNode | BYTE | 6 | +28 | +28 | リモートのノード番号(6バイト)である。 |
| RemoteSocket | WORD | 2 | +34 | +34 | リモート側のIPXソケット番号である。 |
| RetransmissionCount | WORD | 2 | +36 | +36 | 再送回数である。 |
| EstimatedRoundTripDelay | WORD | 2 | +38 | +38 | 推定ラウンドトリップ遅延(ミリ秒)である。 |
| RetransmittedPackets | WORD | 2 | +40 | +40 | 再送されたパケットの累計数である。 |
| SuppressedPacket | WORD | 2 | +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 Structureimport 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: uint16struct 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