ホーム › Networking.WinSock › RM_RECEIVER_STATS
RM_RECEIVER_STATS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| NumODataPacketsReceived | ULONGLONG | 8 | +0 | +0 | 受信した元データ(オリジナル)パケット数である。 |
| NumRDataPacketsReceived | ULONGLONG | 8 | +8 | +8 | 受信した修復(再送)データパケット数である。 |
| NumDuplicateDataPackets | ULONGLONG | 8 | +16 | +16 | 受信した重複データパケット数である。 |
| DataBytesReceived | ULONGLONG | 8 | +24 | +24 | 受信したデータバイト数の累計である。 |
| TotalBytesReceived | ULONGLONG | 8 | +32 | +32 | 総受信バイト数である。 |
| RateKBitsPerSecOverall | ULONGLONG | 8 | +40 | +40 | 全体の平均受信レートをKビット/秒で示す。 |
| RateKBitsPerSecLast | ULONGLONG | 8 | +48 | +48 | 直近の受信レートをKビット/秒で示す。 |
| TrailingEdgeSeqId | ULONGLONG | 8 | +56 | +56 | 受信ウィンドウ後端のシーケンスIDである。 |
| LeadingEdgeSeqId | ULONGLONG | 8 | +64 | +64 | 受信ウィンドウ先端のシーケンスIDである。 |
| AverageSequencesInWindow | ULONGLONG | 8 | +72 | +72 | ウィンドウ内のシーケンス平均数である。 |
| MinSequencesInWindow | ULONGLONG | 8 | +80 | +80 | ウィンドウ内のシーケンス最小数である。 |
| MaxSequencesInWindow | ULONGLONG | 8 | +88 | +88 | ウィンドウ内のシーケンス最大数である。 |
| FirstNakSequenceNumber | ULONGLONG | 8 | +96 | +96 | 最初のNAK対象シーケンス番号である。 |
| NumPendingNaks | ULONGLONG | 8 | +104 | +104 | 送信待ちのNAK数である。 |
| NumOutstandingNaks | ULONGLONG | 8 | +112 | +112 | 応答待ちの未処理NAK数である。 |
| NumDataPacketsBuffered | ULONGLONG | 8 | +120 | +120 | バッファに保持しているデータパケット数である。 |
| TotalSelectiveNaksSent | ULONGLONG | 8 | +128 | +128 | 送信した選択的NAKの総数である。 |
| TotalParityNaksSent | ULONGLONG | 8 | +136 | +136 | 送信したパリティNAKの総数である。 |
各言語での定義
#include <windows.h>
// RM_RECEIVER_STATS (x64 144 / x86 144 バイト)
typedef struct RM_RECEIVER_STATS {
ULONGLONG NumODataPacketsReceived;
ULONGLONG NumRDataPacketsReceived;
ULONGLONG NumDuplicateDataPackets;
ULONGLONG DataBytesReceived;
ULONGLONG TotalBytesReceived;
ULONGLONG RateKBitsPerSecOverall;
ULONGLONG RateKBitsPerSecLast;
ULONGLONG TrailingEdgeSeqId;
ULONGLONG LeadingEdgeSeqId;
ULONGLONG AverageSequencesInWindow;
ULONGLONG MinSequencesInWindow;
ULONGLONG MaxSequencesInWindow;
ULONGLONG FirstNakSequenceNumber;
ULONGLONG NumPendingNaks;
ULONGLONG NumOutstandingNaks;
ULONGLONG NumDataPacketsBuffered;
ULONGLONG TotalSelectiveNaksSent;
ULONGLONG TotalParityNaksSent;
} RM_RECEIVER_STATS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct RM_RECEIVER_STATS
{
public ulong NumODataPacketsReceived;
public ulong NumRDataPacketsReceived;
public ulong NumDuplicateDataPackets;
public ulong DataBytesReceived;
public ulong TotalBytesReceived;
public ulong RateKBitsPerSecOverall;
public ulong RateKBitsPerSecLast;
public ulong TrailingEdgeSeqId;
public ulong LeadingEdgeSeqId;
public ulong AverageSequencesInWindow;
public ulong MinSequencesInWindow;
public ulong MaxSequencesInWindow;
public ulong FirstNakSequenceNumber;
public ulong NumPendingNaks;
public ulong NumOutstandingNaks;
public ulong NumDataPacketsBuffered;
public ulong TotalSelectiveNaksSent;
public ulong TotalParityNaksSent;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure RM_RECEIVER_STATS
Public NumODataPacketsReceived As ULong
Public NumRDataPacketsReceived As ULong
Public NumDuplicateDataPackets As ULong
Public DataBytesReceived As ULong
Public TotalBytesReceived As ULong
Public RateKBitsPerSecOverall As ULong
Public RateKBitsPerSecLast As ULong
Public TrailingEdgeSeqId As ULong
Public LeadingEdgeSeqId As ULong
Public AverageSequencesInWindow As ULong
Public MinSequencesInWindow As ULong
Public MaxSequencesInWindow As ULong
Public FirstNakSequenceNumber As ULong
Public NumPendingNaks As ULong
Public NumOutstandingNaks As ULong
Public NumDataPacketsBuffered As ULong
Public TotalSelectiveNaksSent As ULong
Public TotalParityNaksSent As ULong
End Structureimport ctypes
from ctypes import wintypes
class RM_RECEIVER_STATS(ctypes.Structure):
_fields_ = [
("NumODataPacketsReceived", ctypes.c_ulonglong),
("NumRDataPacketsReceived", ctypes.c_ulonglong),
("NumDuplicateDataPackets", ctypes.c_ulonglong),
("DataBytesReceived", ctypes.c_ulonglong),
("TotalBytesReceived", ctypes.c_ulonglong),
("RateKBitsPerSecOverall", ctypes.c_ulonglong),
("RateKBitsPerSecLast", ctypes.c_ulonglong),
("TrailingEdgeSeqId", ctypes.c_ulonglong),
("LeadingEdgeSeqId", ctypes.c_ulonglong),
("AverageSequencesInWindow", ctypes.c_ulonglong),
("MinSequencesInWindow", ctypes.c_ulonglong),
("MaxSequencesInWindow", ctypes.c_ulonglong),
("FirstNakSequenceNumber", ctypes.c_ulonglong),
("NumPendingNaks", ctypes.c_ulonglong),
("NumOutstandingNaks", ctypes.c_ulonglong),
("NumDataPacketsBuffered", ctypes.c_ulonglong),
("TotalSelectiveNaksSent", ctypes.c_ulonglong),
("TotalParityNaksSent", ctypes.c_ulonglong),
]#[repr(C)]
pub struct RM_RECEIVER_STATS {
pub NumODataPacketsReceived: u64,
pub NumRDataPacketsReceived: u64,
pub NumDuplicateDataPackets: u64,
pub DataBytesReceived: u64,
pub TotalBytesReceived: u64,
pub RateKBitsPerSecOverall: u64,
pub RateKBitsPerSecLast: u64,
pub TrailingEdgeSeqId: u64,
pub LeadingEdgeSeqId: u64,
pub AverageSequencesInWindow: u64,
pub MinSequencesInWindow: u64,
pub MaxSequencesInWindow: u64,
pub FirstNakSequenceNumber: u64,
pub NumPendingNaks: u64,
pub NumOutstandingNaks: u64,
pub NumDataPacketsBuffered: u64,
pub TotalSelectiveNaksSent: u64,
pub TotalParityNaksSent: u64,
}import "golang.org/x/sys/windows"
type RM_RECEIVER_STATS struct {
NumODataPacketsReceived uint64
NumRDataPacketsReceived uint64
NumDuplicateDataPackets uint64
DataBytesReceived uint64
TotalBytesReceived uint64
RateKBitsPerSecOverall uint64
RateKBitsPerSecLast uint64
TrailingEdgeSeqId uint64
LeadingEdgeSeqId uint64
AverageSequencesInWindow uint64
MinSequencesInWindow uint64
MaxSequencesInWindow uint64
FirstNakSequenceNumber uint64
NumPendingNaks uint64
NumOutstandingNaks uint64
NumDataPacketsBuffered uint64
TotalSelectiveNaksSent uint64
TotalParityNaksSent uint64
}type
RM_RECEIVER_STATS = record
NumODataPacketsReceived: UInt64;
NumRDataPacketsReceived: UInt64;
NumDuplicateDataPackets: UInt64;
DataBytesReceived: UInt64;
TotalBytesReceived: UInt64;
RateKBitsPerSecOverall: UInt64;
RateKBitsPerSecLast: UInt64;
TrailingEdgeSeqId: UInt64;
LeadingEdgeSeqId: UInt64;
AverageSequencesInWindow: UInt64;
MinSequencesInWindow: UInt64;
MaxSequencesInWindow: UInt64;
FirstNakSequenceNumber: UInt64;
NumPendingNaks: UInt64;
NumOutstandingNaks: UInt64;
NumDataPacketsBuffered: UInt64;
TotalSelectiveNaksSent: UInt64;
TotalParityNaksSent: UInt64;
end;const RM_RECEIVER_STATS = extern struct {
NumODataPacketsReceived: u64,
NumRDataPacketsReceived: u64,
NumDuplicateDataPackets: u64,
DataBytesReceived: u64,
TotalBytesReceived: u64,
RateKBitsPerSecOverall: u64,
RateKBitsPerSecLast: u64,
TrailingEdgeSeqId: u64,
LeadingEdgeSeqId: u64,
AverageSequencesInWindow: u64,
MinSequencesInWindow: u64,
MaxSequencesInWindow: u64,
FirstNakSequenceNumber: u64,
NumPendingNaks: u64,
NumOutstandingNaks: u64,
NumDataPacketsBuffered: u64,
TotalSelectiveNaksSent: u64,
TotalParityNaksSent: u64,
};type
RM_RECEIVER_STATS {.bycopy.} = object
NumODataPacketsReceived: uint64
NumRDataPacketsReceived: uint64
NumDuplicateDataPackets: uint64
DataBytesReceived: uint64
TotalBytesReceived: uint64
RateKBitsPerSecOverall: uint64
RateKBitsPerSecLast: uint64
TrailingEdgeSeqId: uint64
LeadingEdgeSeqId: uint64
AverageSequencesInWindow: uint64
MinSequencesInWindow: uint64
MaxSequencesInWindow: uint64
FirstNakSequenceNumber: uint64
NumPendingNaks: uint64
NumOutstandingNaks: uint64
NumDataPacketsBuffered: uint64
TotalSelectiveNaksSent: uint64
TotalParityNaksSent: uint64struct RM_RECEIVER_STATS
{
ulong NumODataPacketsReceived;
ulong NumRDataPacketsReceived;
ulong NumDuplicateDataPackets;
ulong DataBytesReceived;
ulong TotalBytesReceived;
ulong RateKBitsPerSecOverall;
ulong RateKBitsPerSecLast;
ulong TrailingEdgeSeqId;
ulong LeadingEdgeSeqId;
ulong AverageSequencesInWindow;
ulong MinSequencesInWindow;
ulong MaxSequencesInWindow;
ulong FirstNakSequenceNumber;
ulong NumPendingNaks;
ulong NumOutstandingNaks;
ulong NumDataPacketsBuffered;
ulong TotalSelectiveNaksSent;
ulong TotalParityNaksSent;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; RM_RECEIVER_STATS サイズ: 144 バイト(x64)
dim st, 36 ; 4byte整数×36(構造体サイズ 144 / 4 切り上げ)
; NumODataPacketsReceived : ULONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; NumRDataPacketsReceived : ULONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; NumDuplicateDataPackets : ULONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; DataBytesReceived : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; TotalBytesReceived : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; RateKBitsPerSecOverall : ULONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; RateKBitsPerSecLast : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; TrailingEdgeSeqId : ULONGLONG (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; LeadingEdgeSeqId : ULONGLONG (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; AverageSequencesInWindow : ULONGLONG (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; MinSequencesInWindow : ULONGLONG (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; MaxSequencesInWindow : ULONGLONG (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; FirstNakSequenceNumber : ULONGLONG (+96, 8byte) qpoke st,96,値 / qpeek(st,96) ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; NumPendingNaks : ULONGLONG (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; NumOutstandingNaks : ULONGLONG (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; NumDataPacketsBuffered : ULONGLONG (+120, 8byte) qpoke st,120,値 / qpeek(st,120) ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; TotalSelectiveNaksSent : ULONGLONG (+128, 8byte) qpoke st,128,値 / qpeek(st,128) ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; TotalParityNaksSent : ULONGLONG (+136, 8byte) qpoke st,136,値 / qpeek(st,136) ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global RM_RECEIVER_STATS
#field int64 NumODataPacketsReceived
#field int64 NumRDataPacketsReceived
#field int64 NumDuplicateDataPackets
#field int64 DataBytesReceived
#field int64 TotalBytesReceived
#field int64 RateKBitsPerSecOverall
#field int64 RateKBitsPerSecLast
#field int64 TrailingEdgeSeqId
#field int64 LeadingEdgeSeqId
#field int64 AverageSequencesInWindow
#field int64 MinSequencesInWindow
#field int64 MaxSequencesInWindow
#field int64 FirstNakSequenceNumber
#field int64 NumPendingNaks
#field int64 NumOutstandingNaks
#field int64 NumDataPacketsBuffered
#field int64 TotalSelectiveNaksSent
#field int64 TotalParityNaksSent
#endstruct
stdim st, RM_RECEIVER_STATS ; NSTRUCT 変数を確保
st->NumODataPacketsReceived = 100
mes "NumODataPacketsReceived=" + st->NumODataPacketsReceived