ホーム › 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 | 受信した元データ (ODATA) シーケンスの数です。 |
| NumRDataPacketsReceived | ULONGLONG | 8 | +8 | +8 | 受信した修復データ (RDATA) シーケンスの数です。 |
| NumDuplicateDataPackets | ULONGLONG | 8 | +16 | +16 | 受信した重複シーケンスの数です。 |
| DataBytesReceived | ULONGLONG | 8 | +24 | +24 | 受信したデータのバイト数です。 |
| TotalBytesReceived | ULONGLONG | 8 | +32 | +32 | 受信した合計バイト数です。ソースパスメッセージ (SPM)、元データ (ODATA)、および修復データ (RDATA) の各シーケンスが含まれます。 |
| RateKBitsPerSecOverall | ULONGLONG | 8 | +40 | +40 | セッション開始時からの受信レート (内部で計算された値) です。単位はキロビット/秒です。 |
| RateKBitsPerSecLast | ULONGLONG | 8 | +48 | +48 | INTERNAL_RATE_CALCULATION_FREQUENCY で指定される期間の受信レートです。 |
| TrailingEdgeSeqId | ULONGLONG | 8 | +56 | +56 | 受信ウィンドウ内で最も古いシーケンス識別子です。 |
| LeadingEdgeSeqId | ULONGLONG | 8 | +64 | +64 | 受信ウィンドウ内で最も新しいシーケンス識別子です。 |
| 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 | 修復データ (RDATA) を待機しているシーケンスの数です。 |
| NumDataPacketsBuffered | ULONGLONG | 8 | +120 | +120 | 現在バッファーに格納されているパケットの数です。 |
| TotalSelectiveNaksSent | ULONGLONG | 8 | +128 | +128 | このセッションで送信された選択的 NAK の数です。 |
| TotalParityNaksSent | ULONGLONG | 8 | +136 | +136 | このセッションで送信されたパリティ NAK の数です。 |
公式ドキュメント
RM_RECEIVER_STATS 構造体は、Reliable Multicast の受信側セッションに関する統計情報を提供します。この構造体は RM_RECEIVER_STATISTICS ソケットオプションと共に使用されます。
出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)
各言語での定義
#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