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

TCP_ESTATS_PATH_ROD_v0

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

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

フィールド

フィールドサイズx64x86説明
FastRetranDWORD4+0+0高速再転送が発生した回数である。
TimeoutsDWORD4+4+4再送タイムアウトが発生した回数である。
SubsequentTimeoutsDWORD4+8+8連続して発生した(後続の)タイムアウト回数である。
CurTimeoutCountDWORD4+12+12現在連続発生中のタイムアウト数である。
AbruptTimeoutsDWORD4+16+16突発的なタイムアウト(データ未送信時)の回数である。
PktsRetransDWORD4+20+20再送されたパケット数である。
BytesRetransDWORD4+24+24再送されたバイト数である。
DupAcksInDWORD4+28+28受信した重複ACKの数である。
SacksRcvdDWORD4+32+32受信したSACK(選択的確認応答)の数である。
SackBlocksRcvdDWORD4+36+36受信したSACKブロックの総数である。
CongSignalsDWORD4+40+40受信した輻輳シグナルの数である。
PreCongSumCwndDWORD4+44+44輻輳発生直前の輻輳ウィンドウの累計(平均算出用)である。
PreCongSumRttDWORD4+48+48輻輳発生直前のRTTの累計(平均算出用)である。
PostCongSumRttDWORD4+52+52輻輳発生後のRTTの累計(平均算出用)である。
PostCongCountRttDWORD4+56+56輻輳発生後のRTTサンプル数である。
EcnSignalsDWORD4+60+60受信したECN(明示的輻輳通知)シグナルの数である。
EceRcvdDWORD4+64+64ECEフラグ付きで受信したセグメント数である。
SendStallDWORD4+68+68送信が停止(ストール)した回数である。
QuenchRcvdDWORD4+72+72受信したICMP source quenchメッセージの数である。
RetranThreshDWORD4+76+76高速再転送をトリガーする重複ACK閾値である。
SndDupAckEpisodesDWORD4+80+80送信側で重複ACKエピソードが発生した回数である。
SumBytesReorderedDWORD4+84+84並べ替えが検出されたバイト数の累計である。
NonRecovDaDWORD4+88+88回復に至らなかった重複ACKの数である。
NonRecovDaEpisodesDWORD4+92+92回復に至らなかった重複ACKエピソードの数である。
AckAfterFrDWORD4+96+96高速回復後に受信したACKの数である。
DsackDupsDWORD4+100+100D-SACKで報告された重複セグメント数である。
SampleRttDWORD4+104+104最新のRTTサンプル値(ミリ秒)である。
SmoothedRttDWORD4+108+108平滑化されたRTT(SRTT)の値(ミリ秒)である。
RttVarDWORD4+112+112RTTの変動量(RTTVAR)の値(ミリ秒)である。
MaxRttDWORD4+116+116観測された最大RTT(ミリ秒)である。
MinRttDWORD4+120+120観測された最小RTT(ミリ秒)である。
SumRttDWORD4+124+124RTTサンプルの累計(平均算出用、ミリ秒)である。
CountRttDWORD4+128+128RTTサンプルの数(SumRttとの組で平均算出)である。
CurRtoDWORD4+132+132現在の再送タイムアウト値(RTO、ミリ秒)である。
MaxRtoDWORD4+136+136観測された最大RTO(ミリ秒)である。
MinRtoDWORD4+140+140観測された最小RTO(ミリ秒)である。
CurMssDWORD4+144+144現在の最大セグメントサイズ(MSS、バイト)である。
MaxMssDWORD4+148+148観測された最大MSS(バイト)である。
MinMssDWORD4+152+152観測された最小MSS(バイト)である。
SpuriousRtoDetectionsDWORD4+156+156誤った(不要な)RTOが検出された回数である。

各言語での定義

#include <windows.h>

// TCP_ESTATS_PATH_ROD_v0  (x64 160 / x86 160 バイト)
typedef struct TCP_ESTATS_PATH_ROD_v0 {
    DWORD FastRetran;
    DWORD Timeouts;
    DWORD SubsequentTimeouts;
    DWORD CurTimeoutCount;
    DWORD AbruptTimeouts;
    DWORD PktsRetrans;
    DWORD BytesRetrans;
    DWORD DupAcksIn;
    DWORD SacksRcvd;
    DWORD SackBlocksRcvd;
    DWORD CongSignals;
    DWORD PreCongSumCwnd;
    DWORD PreCongSumRtt;
    DWORD PostCongSumRtt;
    DWORD PostCongCountRtt;
    DWORD EcnSignals;
    DWORD EceRcvd;
    DWORD SendStall;
    DWORD QuenchRcvd;
    DWORD RetranThresh;
    DWORD SndDupAckEpisodes;
    DWORD SumBytesReordered;
    DWORD NonRecovDa;
    DWORD NonRecovDaEpisodes;
    DWORD AckAfterFr;
    DWORD DsackDups;
    DWORD SampleRtt;
    DWORD SmoothedRtt;
    DWORD RttVar;
    DWORD MaxRtt;
    DWORD MinRtt;
    DWORD SumRtt;
    DWORD CountRtt;
    DWORD CurRto;
    DWORD MaxRto;
    DWORD MinRto;
    DWORD CurMss;
    DWORD MaxMss;
    DWORD MinMss;
    DWORD SpuriousRtoDetections;
} TCP_ESTATS_PATH_ROD_v0;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct TCP_ESTATS_PATH_ROD_v0
{
    public uint FastRetran;
    public uint Timeouts;
    public uint SubsequentTimeouts;
    public uint CurTimeoutCount;
    public uint AbruptTimeouts;
    public uint PktsRetrans;
    public uint BytesRetrans;
    public uint DupAcksIn;
    public uint SacksRcvd;
    public uint SackBlocksRcvd;
    public uint CongSignals;
    public uint PreCongSumCwnd;
    public uint PreCongSumRtt;
    public uint PostCongSumRtt;
    public uint PostCongCountRtt;
    public uint EcnSignals;
    public uint EceRcvd;
    public uint SendStall;
    public uint QuenchRcvd;
    public uint RetranThresh;
    public uint SndDupAckEpisodes;
    public uint SumBytesReordered;
    public uint NonRecovDa;
    public uint NonRecovDaEpisodes;
    public uint AckAfterFr;
    public uint DsackDups;
    public uint SampleRtt;
    public uint SmoothedRtt;
    public uint RttVar;
    public uint MaxRtt;
    public uint MinRtt;
    public uint SumRtt;
    public uint CountRtt;
    public uint CurRto;
    public uint MaxRto;
    public uint MinRto;
    public uint CurMss;
    public uint MaxMss;
    public uint MinMss;
    public uint SpuriousRtoDetections;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure TCP_ESTATS_PATH_ROD_v0
    Public FastRetran As UInteger
    Public Timeouts As UInteger
    Public SubsequentTimeouts As UInteger
    Public CurTimeoutCount As UInteger
    Public AbruptTimeouts As UInteger
    Public PktsRetrans As UInteger
    Public BytesRetrans As UInteger
    Public DupAcksIn As UInteger
    Public SacksRcvd As UInteger
    Public SackBlocksRcvd As UInteger
    Public CongSignals As UInteger
    Public PreCongSumCwnd As UInteger
    Public PreCongSumRtt As UInteger
    Public PostCongSumRtt As UInteger
    Public PostCongCountRtt As UInteger
    Public EcnSignals As UInteger
    Public EceRcvd As UInteger
    Public SendStall As UInteger
    Public QuenchRcvd As UInteger
    Public RetranThresh As UInteger
    Public SndDupAckEpisodes As UInteger
    Public SumBytesReordered As UInteger
    Public NonRecovDa As UInteger
    Public NonRecovDaEpisodes As UInteger
    Public AckAfterFr As UInteger
    Public DsackDups As UInteger
    Public SampleRtt As UInteger
    Public SmoothedRtt As UInteger
    Public RttVar As UInteger
    Public MaxRtt As UInteger
    Public MinRtt As UInteger
    Public SumRtt As UInteger
    Public CountRtt As UInteger
    Public CurRto As UInteger
    Public MaxRto As UInteger
    Public MinRto As UInteger
    Public CurMss As UInteger
    Public MaxMss As UInteger
    Public MinMss As UInteger
    Public SpuriousRtoDetections As UInteger
End Structure
import ctypes
from ctypes import wintypes

class TCP_ESTATS_PATH_ROD_v0(ctypes.Structure):
    _fields_ = [
        ("FastRetran", wintypes.DWORD),
        ("Timeouts", wintypes.DWORD),
        ("SubsequentTimeouts", wintypes.DWORD),
        ("CurTimeoutCount", wintypes.DWORD),
        ("AbruptTimeouts", wintypes.DWORD),
        ("PktsRetrans", wintypes.DWORD),
        ("BytesRetrans", wintypes.DWORD),
        ("DupAcksIn", wintypes.DWORD),
        ("SacksRcvd", wintypes.DWORD),
        ("SackBlocksRcvd", wintypes.DWORD),
        ("CongSignals", wintypes.DWORD),
        ("PreCongSumCwnd", wintypes.DWORD),
        ("PreCongSumRtt", wintypes.DWORD),
        ("PostCongSumRtt", wintypes.DWORD),
        ("PostCongCountRtt", wintypes.DWORD),
        ("EcnSignals", wintypes.DWORD),
        ("EceRcvd", wintypes.DWORD),
        ("SendStall", wintypes.DWORD),
        ("QuenchRcvd", wintypes.DWORD),
        ("RetranThresh", wintypes.DWORD),
        ("SndDupAckEpisodes", wintypes.DWORD),
        ("SumBytesReordered", wintypes.DWORD),
        ("NonRecovDa", wintypes.DWORD),
        ("NonRecovDaEpisodes", wintypes.DWORD),
        ("AckAfterFr", wintypes.DWORD),
        ("DsackDups", wintypes.DWORD),
        ("SampleRtt", wintypes.DWORD),
        ("SmoothedRtt", wintypes.DWORD),
        ("RttVar", wintypes.DWORD),
        ("MaxRtt", wintypes.DWORD),
        ("MinRtt", wintypes.DWORD),
        ("SumRtt", wintypes.DWORD),
        ("CountRtt", wintypes.DWORD),
        ("CurRto", wintypes.DWORD),
        ("MaxRto", wintypes.DWORD),
        ("MinRto", wintypes.DWORD),
        ("CurMss", wintypes.DWORD),
        ("MaxMss", wintypes.DWORD),
        ("MinMss", wintypes.DWORD),
        ("SpuriousRtoDetections", wintypes.DWORD),
    ]
#[repr(C)]
pub struct TCP_ESTATS_PATH_ROD_v0 {
    pub FastRetran: u32,
    pub Timeouts: u32,
    pub SubsequentTimeouts: u32,
    pub CurTimeoutCount: u32,
    pub AbruptTimeouts: u32,
    pub PktsRetrans: u32,
    pub BytesRetrans: u32,
    pub DupAcksIn: u32,
    pub SacksRcvd: u32,
    pub SackBlocksRcvd: u32,
    pub CongSignals: u32,
    pub PreCongSumCwnd: u32,
    pub PreCongSumRtt: u32,
    pub PostCongSumRtt: u32,
    pub PostCongCountRtt: u32,
    pub EcnSignals: u32,
    pub EceRcvd: u32,
    pub SendStall: u32,
    pub QuenchRcvd: u32,
    pub RetranThresh: u32,
    pub SndDupAckEpisodes: u32,
    pub SumBytesReordered: u32,
    pub NonRecovDa: u32,
    pub NonRecovDaEpisodes: u32,
    pub AckAfterFr: u32,
    pub DsackDups: u32,
    pub SampleRtt: u32,
    pub SmoothedRtt: u32,
    pub RttVar: u32,
    pub MaxRtt: u32,
    pub MinRtt: u32,
    pub SumRtt: u32,
    pub CountRtt: u32,
    pub CurRto: u32,
    pub MaxRto: u32,
    pub MinRto: u32,
    pub CurMss: u32,
    pub MaxMss: u32,
    pub MinMss: u32,
    pub SpuriousRtoDetections: u32,
}
import "golang.org/x/sys/windows"

type TCP_ESTATS_PATH_ROD_v0 struct {
	FastRetran uint32
	Timeouts uint32
	SubsequentTimeouts uint32
	CurTimeoutCount uint32
	AbruptTimeouts uint32
	PktsRetrans uint32
	BytesRetrans uint32
	DupAcksIn uint32
	SacksRcvd uint32
	SackBlocksRcvd uint32
	CongSignals uint32
	PreCongSumCwnd uint32
	PreCongSumRtt uint32
	PostCongSumRtt uint32
	PostCongCountRtt uint32
	EcnSignals uint32
	EceRcvd uint32
	SendStall uint32
	QuenchRcvd uint32
	RetranThresh uint32
	SndDupAckEpisodes uint32
	SumBytesReordered uint32
	NonRecovDa uint32
	NonRecovDaEpisodes uint32
	AckAfterFr uint32
	DsackDups uint32
	SampleRtt uint32
	SmoothedRtt uint32
	RttVar uint32
	MaxRtt uint32
	MinRtt uint32
	SumRtt uint32
	CountRtt uint32
	CurRto uint32
	MaxRto uint32
	MinRto uint32
	CurMss uint32
	MaxMss uint32
	MinMss uint32
	SpuriousRtoDetections uint32
}
type
  TCP_ESTATS_PATH_ROD_v0 = record
    FastRetran: DWORD;
    Timeouts: DWORD;
    SubsequentTimeouts: DWORD;
    CurTimeoutCount: DWORD;
    AbruptTimeouts: DWORD;
    PktsRetrans: DWORD;
    BytesRetrans: DWORD;
    DupAcksIn: DWORD;
    SacksRcvd: DWORD;
    SackBlocksRcvd: DWORD;
    CongSignals: DWORD;
    PreCongSumCwnd: DWORD;
    PreCongSumRtt: DWORD;
    PostCongSumRtt: DWORD;
    PostCongCountRtt: DWORD;
    EcnSignals: DWORD;
    EceRcvd: DWORD;
    SendStall: DWORD;
    QuenchRcvd: DWORD;
    RetranThresh: DWORD;
    SndDupAckEpisodes: DWORD;
    SumBytesReordered: DWORD;
    NonRecovDa: DWORD;
    NonRecovDaEpisodes: DWORD;
    AckAfterFr: DWORD;
    DsackDups: DWORD;
    SampleRtt: DWORD;
    SmoothedRtt: DWORD;
    RttVar: DWORD;
    MaxRtt: DWORD;
    MinRtt: DWORD;
    SumRtt: DWORD;
    CountRtt: DWORD;
    CurRto: DWORD;
    MaxRto: DWORD;
    MinRto: DWORD;
    CurMss: DWORD;
    MaxMss: DWORD;
    MinMss: DWORD;
    SpuriousRtoDetections: DWORD;
  end;
const TCP_ESTATS_PATH_ROD_v0 = extern struct {
    FastRetran: u32,
    Timeouts: u32,
    SubsequentTimeouts: u32,
    CurTimeoutCount: u32,
    AbruptTimeouts: u32,
    PktsRetrans: u32,
    BytesRetrans: u32,
    DupAcksIn: u32,
    SacksRcvd: u32,
    SackBlocksRcvd: u32,
    CongSignals: u32,
    PreCongSumCwnd: u32,
    PreCongSumRtt: u32,
    PostCongSumRtt: u32,
    PostCongCountRtt: u32,
    EcnSignals: u32,
    EceRcvd: u32,
    SendStall: u32,
    QuenchRcvd: u32,
    RetranThresh: u32,
    SndDupAckEpisodes: u32,
    SumBytesReordered: u32,
    NonRecovDa: u32,
    NonRecovDaEpisodes: u32,
    AckAfterFr: u32,
    DsackDups: u32,
    SampleRtt: u32,
    SmoothedRtt: u32,
    RttVar: u32,
    MaxRtt: u32,
    MinRtt: u32,
    SumRtt: u32,
    CountRtt: u32,
    CurRto: u32,
    MaxRto: u32,
    MinRto: u32,
    CurMss: u32,
    MaxMss: u32,
    MinMss: u32,
    SpuriousRtoDetections: u32,
};
type
  TCP_ESTATS_PATH_ROD_v0 {.bycopy.} = object
    FastRetran: uint32
    Timeouts: uint32
    SubsequentTimeouts: uint32
    CurTimeoutCount: uint32
    AbruptTimeouts: uint32
    PktsRetrans: uint32
    BytesRetrans: uint32
    DupAcksIn: uint32
    SacksRcvd: uint32
    SackBlocksRcvd: uint32
    CongSignals: uint32
    PreCongSumCwnd: uint32
    PreCongSumRtt: uint32
    PostCongSumRtt: uint32
    PostCongCountRtt: uint32
    EcnSignals: uint32
    EceRcvd: uint32
    SendStall: uint32
    QuenchRcvd: uint32
    RetranThresh: uint32
    SndDupAckEpisodes: uint32
    SumBytesReordered: uint32
    NonRecovDa: uint32
    NonRecovDaEpisodes: uint32
    AckAfterFr: uint32
    DsackDups: uint32
    SampleRtt: uint32
    SmoothedRtt: uint32
    RttVar: uint32
    MaxRtt: uint32
    MinRtt: uint32
    SumRtt: uint32
    CountRtt: uint32
    CurRto: uint32
    MaxRto: uint32
    MinRto: uint32
    CurMss: uint32
    MaxMss: uint32
    MinMss: uint32
    SpuriousRtoDetections: uint32
struct TCP_ESTATS_PATH_ROD_v0
{
    uint FastRetran;
    uint Timeouts;
    uint SubsequentTimeouts;
    uint CurTimeoutCount;
    uint AbruptTimeouts;
    uint PktsRetrans;
    uint BytesRetrans;
    uint DupAcksIn;
    uint SacksRcvd;
    uint SackBlocksRcvd;
    uint CongSignals;
    uint PreCongSumCwnd;
    uint PreCongSumRtt;
    uint PostCongSumRtt;
    uint PostCongCountRtt;
    uint EcnSignals;
    uint EceRcvd;
    uint SendStall;
    uint QuenchRcvd;
    uint RetranThresh;
    uint SndDupAckEpisodes;
    uint SumBytesReordered;
    uint NonRecovDa;
    uint NonRecovDaEpisodes;
    uint AckAfterFr;
    uint DsackDups;
    uint SampleRtt;
    uint SmoothedRtt;
    uint RttVar;
    uint MaxRtt;
    uint MinRtt;
    uint SumRtt;
    uint CountRtt;
    uint CurRto;
    uint MaxRto;
    uint MinRto;
    uint CurMss;
    uint MaxMss;
    uint MinMss;
    uint SpuriousRtoDetections;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; TCP_ESTATS_PATH_ROD_v0 サイズ: 160 バイト(x64)
dim st, 40    ; 4byte整数×40(構造体サイズ 160 / 4 切り上げ)
; FastRetran : DWORD (+0, 4byte)  st.0 = 値  /  値 = st.0   (lpoke/lpeek も可)
; Timeouts : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; SubsequentTimeouts : DWORD (+8, 4byte)  st.2 = 値  /  値 = st.2   (lpoke/lpeek も可)
; CurTimeoutCount : DWORD (+12, 4byte)  st.3 = 値  /  値 = st.3   (lpoke/lpeek も可)
; AbruptTimeouts : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; PktsRetrans : DWORD (+20, 4byte)  st.5 = 値  /  値 = st.5   (lpoke/lpeek も可)
; BytesRetrans : DWORD (+24, 4byte)  st.6 = 値  /  値 = st.6   (lpoke/lpeek も可)
; DupAcksIn : DWORD (+28, 4byte)  st.7 = 値  /  値 = st.7   (lpoke/lpeek も可)
; SacksRcvd : DWORD (+32, 4byte)  st.8 = 値  /  値 = st.8   (lpoke/lpeek も可)
; SackBlocksRcvd : DWORD (+36, 4byte)  st.9 = 値  /  値 = st.9   (lpoke/lpeek も可)
; CongSignals : DWORD (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; PreCongSumCwnd : DWORD (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; PreCongSumRtt : DWORD (+48, 4byte)  st.12 = 値  /  値 = st.12   (lpoke/lpeek も可)
; PostCongSumRtt : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; PostCongCountRtt : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; EcnSignals : DWORD (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; EceRcvd : DWORD (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; SendStall : DWORD (+68, 4byte)  st.17 = 値  /  値 = st.17   (lpoke/lpeek も可)
; QuenchRcvd : DWORD (+72, 4byte)  st.18 = 値  /  値 = st.18   (lpoke/lpeek も可)
; RetranThresh : DWORD (+76, 4byte)  st.19 = 値  /  値 = st.19   (lpoke/lpeek も可)
; SndDupAckEpisodes : DWORD (+80, 4byte)  st.20 = 値  /  値 = st.20   (lpoke/lpeek も可)
; SumBytesReordered : DWORD (+84, 4byte)  st.21 = 値  /  値 = st.21   (lpoke/lpeek も可)
; NonRecovDa : DWORD (+88, 4byte)  st.22 = 値  /  値 = st.22   (lpoke/lpeek も可)
; NonRecovDaEpisodes : DWORD (+92, 4byte)  st.23 = 値  /  値 = st.23   (lpoke/lpeek も可)
; AckAfterFr : DWORD (+96, 4byte)  st.24 = 値  /  値 = st.24   (lpoke/lpeek も可)
; DsackDups : DWORD (+100, 4byte)  st.25 = 値  /  値 = st.25   (lpoke/lpeek も可)
; SampleRtt : DWORD (+104, 4byte)  st.26 = 値  /  値 = st.26   (lpoke/lpeek も可)
; SmoothedRtt : DWORD (+108, 4byte)  st.27 = 値  /  値 = st.27   (lpoke/lpeek も可)
; RttVar : DWORD (+112, 4byte)  st.28 = 値  /  値 = st.28   (lpoke/lpeek も可)
; MaxRtt : DWORD (+116, 4byte)  st.29 = 値  /  値 = st.29   (lpoke/lpeek も可)
; MinRtt : DWORD (+120, 4byte)  st.30 = 値  /  値 = st.30   (lpoke/lpeek も可)
; SumRtt : DWORD (+124, 4byte)  st.31 = 値  /  値 = st.31   (lpoke/lpeek も可)
; CountRtt : DWORD (+128, 4byte)  st.32 = 値  /  値 = st.32   (lpoke/lpeek も可)
; CurRto : DWORD (+132, 4byte)  st.33 = 値  /  値 = st.33   (lpoke/lpeek も可)
; MaxRto : DWORD (+136, 4byte)  st.34 = 値  /  値 = st.34   (lpoke/lpeek も可)
; MinRto : DWORD (+140, 4byte)  st.35 = 値  /  値 = st.35   (lpoke/lpeek も可)
; CurMss : DWORD (+144, 4byte)  st.36 = 値  /  値 = st.36   (lpoke/lpeek も可)
; MaxMss : DWORD (+148, 4byte)  st.37 = 値  /  値 = st.37   (lpoke/lpeek も可)
; MinMss : DWORD (+152, 4byte)  st.38 = 値  /  値 = st.38   (lpoke/lpeek も可)
; SpuriousRtoDetections : DWORD (+156, 4byte)  st.39 = 値  /  値 = st.39   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global TCP_ESTATS_PATH_ROD_v0
    #field int FastRetran
    #field int Timeouts
    #field int SubsequentTimeouts
    #field int CurTimeoutCount
    #field int AbruptTimeouts
    #field int PktsRetrans
    #field int BytesRetrans
    #field int DupAcksIn
    #field int SacksRcvd
    #field int SackBlocksRcvd
    #field int CongSignals
    #field int PreCongSumCwnd
    #field int PreCongSumRtt
    #field int PostCongSumRtt
    #field int PostCongCountRtt
    #field int EcnSignals
    #field int EceRcvd
    #field int SendStall
    #field int QuenchRcvd
    #field int RetranThresh
    #field int SndDupAckEpisodes
    #field int SumBytesReordered
    #field int NonRecovDa
    #field int NonRecovDaEpisodes
    #field int AckAfterFr
    #field int DsackDups
    #field int SampleRtt
    #field int SmoothedRtt
    #field int RttVar
    #field int MaxRtt
    #field int MinRtt
    #field int SumRtt
    #field int CountRtt
    #field int CurRto
    #field int MaxRto
    #field int MinRto
    #field int CurMss
    #field int MaxMss
    #field int MinMss
    #field int SpuriousRtoDetections
#endstruct

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