ホーム › Networking.HttpServer › HTTP_QUIC_API_TIMINGS
HTTP_QUIC_API_TIMINGS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ConnectionTimings | HTTP_QUIC_CONNECTION_API_TIMINGS | 240 | +0 | +0 | QUIC接続レベルのAPI計時情報。 |
| StreamTimings | HTTP_QUIC_STREAM_API_TIMINGS | 144 | +240 | +240 | QUICストリームレベルのAPI計時情報。 |
各言語での定義
#include <windows.h>
// HTTP_QUIC_STREAM_API_TIMINGS (x64 144 / x86 144 バイト)
typedef struct HTTP_QUIC_STREAM_API_TIMINGS {
ULONGLONG OpenCount;
ULONGLONG OpenSum;
ULONGLONG CloseCount;
ULONGLONG CloseSum;
ULONGLONG StartCount;
ULONGLONG StartSum;
ULONGLONG ShutdownCount;
ULONGLONG ShutdownSum;
ULONGLONG SendCount;
ULONGLONG SendSum;
ULONGLONG ReceiveSetEnabledCount;
ULONGLONG ReceiveSetEnabledSum;
ULONGLONG GetParamCount;
ULONGLONG GetParamSum;
ULONGLONG SetParamCount;
ULONGLONG SetParamSum;
ULONGLONG SetCallbackHandlerCount;
ULONGLONG SetCallbackHandlerSum;
} HTTP_QUIC_STREAM_API_TIMINGS;
// HTTP_QUIC_CONNECTION_API_TIMINGS (x64 240 / x86 240 バイト)
typedef struct HTTP_QUIC_CONNECTION_API_TIMINGS {
ULONGLONG OpenTime;
ULONGLONG CloseTime;
ULONGLONG StartTime;
ULONGLONG ShutdownTime;
ULONGLONG SecConfigCreateTime;
ULONGLONG SecConfigDeleteTime;
ULONGLONG GetParamCount;
ULONGLONG GetParamSum;
ULONGLONG SetParamCount;
ULONGLONG SetParamSum;
ULONGLONG SetCallbackHandlerCount;
ULONGLONG SetCallbackHandlerSum;
HTTP_QUIC_STREAM_API_TIMINGS ControlStreamTimings;
} HTTP_QUIC_CONNECTION_API_TIMINGS;
// HTTP_QUIC_API_TIMINGS (x64 384 / x86 384 バイト)
typedef struct HTTP_QUIC_API_TIMINGS {
HTTP_QUIC_CONNECTION_API_TIMINGS ConnectionTimings;
HTTP_QUIC_STREAM_API_TIMINGS StreamTimings;
} HTTP_QUIC_API_TIMINGS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HTTP_QUIC_STREAM_API_TIMINGS
{
public ulong OpenCount;
public ulong OpenSum;
public ulong CloseCount;
public ulong CloseSum;
public ulong StartCount;
public ulong StartSum;
public ulong ShutdownCount;
public ulong ShutdownSum;
public ulong SendCount;
public ulong SendSum;
public ulong ReceiveSetEnabledCount;
public ulong ReceiveSetEnabledSum;
public ulong GetParamCount;
public ulong GetParamSum;
public ulong SetParamCount;
public ulong SetParamSum;
public ulong SetCallbackHandlerCount;
public ulong SetCallbackHandlerSum;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HTTP_QUIC_CONNECTION_API_TIMINGS
{
public ulong OpenTime;
public ulong CloseTime;
public ulong StartTime;
public ulong ShutdownTime;
public ulong SecConfigCreateTime;
public ulong SecConfigDeleteTime;
public ulong GetParamCount;
public ulong GetParamSum;
public ulong SetParamCount;
public ulong SetParamSum;
public ulong SetCallbackHandlerCount;
public ulong SetCallbackHandlerSum;
public HTTP_QUIC_STREAM_API_TIMINGS ControlStreamTimings;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct HTTP_QUIC_API_TIMINGS
{
public HTTP_QUIC_CONNECTION_API_TIMINGS ConnectionTimings;
public HTTP_QUIC_STREAM_API_TIMINGS StreamTimings;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HTTP_QUIC_STREAM_API_TIMINGS
Public OpenCount As ULong
Public OpenSum As ULong
Public CloseCount As ULong
Public CloseSum As ULong
Public StartCount As ULong
Public StartSum As ULong
Public ShutdownCount As ULong
Public ShutdownSum As ULong
Public SendCount As ULong
Public SendSum As ULong
Public ReceiveSetEnabledCount As ULong
Public ReceiveSetEnabledSum As ULong
Public GetParamCount As ULong
Public GetParamSum As ULong
Public SetParamCount As ULong
Public SetParamSum As ULong
Public SetCallbackHandlerCount As ULong
Public SetCallbackHandlerSum As ULong
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HTTP_QUIC_CONNECTION_API_TIMINGS
Public OpenTime As ULong
Public CloseTime As ULong
Public StartTime As ULong
Public ShutdownTime As ULong
Public SecConfigCreateTime As ULong
Public SecConfigDeleteTime As ULong
Public GetParamCount As ULong
Public GetParamSum As ULong
Public SetParamCount As ULong
Public SetParamSum As ULong
Public SetCallbackHandlerCount As ULong
Public SetCallbackHandlerSum As ULong
Public ControlStreamTimings As HTTP_QUIC_STREAM_API_TIMINGS
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure HTTP_QUIC_API_TIMINGS
Public ConnectionTimings As HTTP_QUIC_CONNECTION_API_TIMINGS
Public StreamTimings As HTTP_QUIC_STREAM_API_TIMINGS
End Structureimport ctypes
from ctypes import wintypes
class HTTP_QUIC_STREAM_API_TIMINGS(ctypes.Structure):
_fields_ = [
("OpenCount", ctypes.c_ulonglong),
("OpenSum", ctypes.c_ulonglong),
("CloseCount", ctypes.c_ulonglong),
("CloseSum", ctypes.c_ulonglong),
("StartCount", ctypes.c_ulonglong),
("StartSum", ctypes.c_ulonglong),
("ShutdownCount", ctypes.c_ulonglong),
("ShutdownSum", ctypes.c_ulonglong),
("SendCount", ctypes.c_ulonglong),
("SendSum", ctypes.c_ulonglong),
("ReceiveSetEnabledCount", ctypes.c_ulonglong),
("ReceiveSetEnabledSum", ctypes.c_ulonglong),
("GetParamCount", ctypes.c_ulonglong),
("GetParamSum", ctypes.c_ulonglong),
("SetParamCount", ctypes.c_ulonglong),
("SetParamSum", ctypes.c_ulonglong),
("SetCallbackHandlerCount", ctypes.c_ulonglong),
("SetCallbackHandlerSum", ctypes.c_ulonglong),
]
class HTTP_QUIC_CONNECTION_API_TIMINGS(ctypes.Structure):
_fields_ = [
("OpenTime", ctypes.c_ulonglong),
("CloseTime", ctypes.c_ulonglong),
("StartTime", ctypes.c_ulonglong),
("ShutdownTime", ctypes.c_ulonglong),
("SecConfigCreateTime", ctypes.c_ulonglong),
("SecConfigDeleteTime", ctypes.c_ulonglong),
("GetParamCount", ctypes.c_ulonglong),
("GetParamSum", ctypes.c_ulonglong),
("SetParamCount", ctypes.c_ulonglong),
("SetParamSum", ctypes.c_ulonglong),
("SetCallbackHandlerCount", ctypes.c_ulonglong),
("SetCallbackHandlerSum", ctypes.c_ulonglong),
("ControlStreamTimings", HTTP_QUIC_STREAM_API_TIMINGS),
]
class HTTP_QUIC_API_TIMINGS(ctypes.Structure):
_fields_ = [
("ConnectionTimings", HTTP_QUIC_CONNECTION_API_TIMINGS),
("StreamTimings", HTTP_QUIC_STREAM_API_TIMINGS),
]#[repr(C)]
pub struct HTTP_QUIC_STREAM_API_TIMINGS {
pub OpenCount: u64,
pub OpenSum: u64,
pub CloseCount: u64,
pub CloseSum: u64,
pub StartCount: u64,
pub StartSum: u64,
pub ShutdownCount: u64,
pub ShutdownSum: u64,
pub SendCount: u64,
pub SendSum: u64,
pub ReceiveSetEnabledCount: u64,
pub ReceiveSetEnabledSum: u64,
pub GetParamCount: u64,
pub GetParamSum: u64,
pub SetParamCount: u64,
pub SetParamSum: u64,
pub SetCallbackHandlerCount: u64,
pub SetCallbackHandlerSum: u64,
}
#[repr(C)]
pub struct HTTP_QUIC_CONNECTION_API_TIMINGS {
pub OpenTime: u64,
pub CloseTime: u64,
pub StartTime: u64,
pub ShutdownTime: u64,
pub SecConfigCreateTime: u64,
pub SecConfigDeleteTime: u64,
pub GetParamCount: u64,
pub GetParamSum: u64,
pub SetParamCount: u64,
pub SetParamSum: u64,
pub SetCallbackHandlerCount: u64,
pub SetCallbackHandlerSum: u64,
pub ControlStreamTimings: HTTP_QUIC_STREAM_API_TIMINGS,
}
#[repr(C)]
pub struct HTTP_QUIC_API_TIMINGS {
pub ConnectionTimings: HTTP_QUIC_CONNECTION_API_TIMINGS,
pub StreamTimings: HTTP_QUIC_STREAM_API_TIMINGS,
}import "golang.org/x/sys/windows"
type HTTP_QUIC_STREAM_API_TIMINGS struct {
OpenCount uint64
OpenSum uint64
CloseCount uint64
CloseSum uint64
StartCount uint64
StartSum uint64
ShutdownCount uint64
ShutdownSum uint64
SendCount uint64
SendSum uint64
ReceiveSetEnabledCount uint64
ReceiveSetEnabledSum uint64
GetParamCount uint64
GetParamSum uint64
SetParamCount uint64
SetParamSum uint64
SetCallbackHandlerCount uint64
SetCallbackHandlerSum uint64
}
type HTTP_QUIC_CONNECTION_API_TIMINGS struct {
OpenTime uint64
CloseTime uint64
StartTime uint64
ShutdownTime uint64
SecConfigCreateTime uint64
SecConfigDeleteTime uint64
GetParamCount uint64
GetParamSum uint64
SetParamCount uint64
SetParamSum uint64
SetCallbackHandlerCount uint64
SetCallbackHandlerSum uint64
ControlStreamTimings HTTP_QUIC_STREAM_API_TIMINGS
}
type HTTP_QUIC_API_TIMINGS struct {
ConnectionTimings HTTP_QUIC_CONNECTION_API_TIMINGS
StreamTimings HTTP_QUIC_STREAM_API_TIMINGS
}type
HTTP_QUIC_STREAM_API_TIMINGS = record
OpenCount: UInt64;
OpenSum: UInt64;
CloseCount: UInt64;
CloseSum: UInt64;
StartCount: UInt64;
StartSum: UInt64;
ShutdownCount: UInt64;
ShutdownSum: UInt64;
SendCount: UInt64;
SendSum: UInt64;
ReceiveSetEnabledCount: UInt64;
ReceiveSetEnabledSum: UInt64;
GetParamCount: UInt64;
GetParamSum: UInt64;
SetParamCount: UInt64;
SetParamSum: UInt64;
SetCallbackHandlerCount: UInt64;
SetCallbackHandlerSum: UInt64;
end;
HTTP_QUIC_CONNECTION_API_TIMINGS = record
OpenTime: UInt64;
CloseTime: UInt64;
StartTime: UInt64;
ShutdownTime: UInt64;
SecConfigCreateTime: UInt64;
SecConfigDeleteTime: UInt64;
GetParamCount: UInt64;
GetParamSum: UInt64;
SetParamCount: UInt64;
SetParamSum: UInt64;
SetCallbackHandlerCount: UInt64;
SetCallbackHandlerSum: UInt64;
ControlStreamTimings: HTTP_QUIC_STREAM_API_TIMINGS;
end;
HTTP_QUIC_API_TIMINGS = record
ConnectionTimings: HTTP_QUIC_CONNECTION_API_TIMINGS;
StreamTimings: HTTP_QUIC_STREAM_API_TIMINGS;
end;const HTTP_QUIC_STREAM_API_TIMINGS = extern struct {
OpenCount: u64,
OpenSum: u64,
CloseCount: u64,
CloseSum: u64,
StartCount: u64,
StartSum: u64,
ShutdownCount: u64,
ShutdownSum: u64,
SendCount: u64,
SendSum: u64,
ReceiveSetEnabledCount: u64,
ReceiveSetEnabledSum: u64,
GetParamCount: u64,
GetParamSum: u64,
SetParamCount: u64,
SetParamSum: u64,
SetCallbackHandlerCount: u64,
SetCallbackHandlerSum: u64,
};
const HTTP_QUIC_CONNECTION_API_TIMINGS = extern struct {
OpenTime: u64,
CloseTime: u64,
StartTime: u64,
ShutdownTime: u64,
SecConfigCreateTime: u64,
SecConfigDeleteTime: u64,
GetParamCount: u64,
GetParamSum: u64,
SetParamCount: u64,
SetParamSum: u64,
SetCallbackHandlerCount: u64,
SetCallbackHandlerSum: u64,
ControlStreamTimings: HTTP_QUIC_STREAM_API_TIMINGS,
};
const HTTP_QUIC_API_TIMINGS = extern struct {
ConnectionTimings: HTTP_QUIC_CONNECTION_API_TIMINGS,
StreamTimings: HTTP_QUIC_STREAM_API_TIMINGS,
};type
HTTP_QUIC_STREAM_API_TIMINGS {.bycopy.} = object
OpenCount: uint64
OpenSum: uint64
CloseCount: uint64
CloseSum: uint64
StartCount: uint64
StartSum: uint64
ShutdownCount: uint64
ShutdownSum: uint64
SendCount: uint64
SendSum: uint64
ReceiveSetEnabledCount: uint64
ReceiveSetEnabledSum: uint64
GetParamCount: uint64
GetParamSum: uint64
SetParamCount: uint64
SetParamSum: uint64
SetCallbackHandlerCount: uint64
SetCallbackHandlerSum: uint64
HTTP_QUIC_CONNECTION_API_TIMINGS {.bycopy.} = object
OpenTime: uint64
CloseTime: uint64
StartTime: uint64
ShutdownTime: uint64
SecConfigCreateTime: uint64
SecConfigDeleteTime: uint64
GetParamCount: uint64
GetParamSum: uint64
SetParamCount: uint64
SetParamSum: uint64
SetCallbackHandlerCount: uint64
SetCallbackHandlerSum: uint64
ControlStreamTimings: HTTP_QUIC_STREAM_API_TIMINGS
HTTP_QUIC_API_TIMINGS {.bycopy.} = object
ConnectionTimings: HTTP_QUIC_CONNECTION_API_TIMINGS
StreamTimings: HTTP_QUIC_STREAM_API_TIMINGSstruct HTTP_QUIC_STREAM_API_TIMINGS
{
ulong OpenCount;
ulong OpenSum;
ulong CloseCount;
ulong CloseSum;
ulong StartCount;
ulong StartSum;
ulong ShutdownCount;
ulong ShutdownSum;
ulong SendCount;
ulong SendSum;
ulong ReceiveSetEnabledCount;
ulong ReceiveSetEnabledSum;
ulong GetParamCount;
ulong GetParamSum;
ulong SetParamCount;
ulong SetParamSum;
ulong SetCallbackHandlerCount;
ulong SetCallbackHandlerSum;
}
struct HTTP_QUIC_CONNECTION_API_TIMINGS
{
ulong OpenTime;
ulong CloseTime;
ulong StartTime;
ulong ShutdownTime;
ulong SecConfigCreateTime;
ulong SecConfigDeleteTime;
ulong GetParamCount;
ulong GetParamSum;
ulong SetParamCount;
ulong SetParamSum;
ulong SetCallbackHandlerCount;
ulong SetCallbackHandlerSum;
HTTP_QUIC_STREAM_API_TIMINGS ControlStreamTimings;
}
struct HTTP_QUIC_API_TIMINGS
{
HTTP_QUIC_CONNECTION_API_TIMINGS ConnectionTimings;
HTTP_QUIC_STREAM_API_TIMINGS StreamTimings;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; HTTP_QUIC_API_TIMINGS サイズ: 384 バイト(x64)
dim st, 96 ; 4byte整数×96(構造体サイズ 384 / 4 切り上げ)
; ConnectionTimings : HTTP_QUIC_CONNECTION_API_TIMINGS (+0, 240byte) varptr(st)+0 を基点に操作(240byte:入れ子/配列)
; StreamTimings : HTTP_QUIC_STREAM_API_TIMINGS (+240, 144byte) varptr(st)+240 を基点に操作(144byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global HTTP_QUIC_STREAM_API_TIMINGS
#field int64 OpenCount
#field int64 OpenSum
#field int64 CloseCount
#field int64 CloseSum
#field int64 StartCount
#field int64 StartSum
#field int64 ShutdownCount
#field int64 ShutdownSum
#field int64 SendCount
#field int64 SendSum
#field int64 ReceiveSetEnabledCount
#field int64 ReceiveSetEnabledSum
#field int64 GetParamCount
#field int64 GetParamSum
#field int64 SetParamCount
#field int64 SetParamSum
#field int64 SetCallbackHandlerCount
#field int64 SetCallbackHandlerSum
#endstruct
#defstruct global HTTP_QUIC_CONNECTION_API_TIMINGS
#field int64 OpenTime
#field int64 CloseTime
#field int64 StartTime
#field int64 ShutdownTime
#field int64 SecConfigCreateTime
#field int64 SecConfigDeleteTime
#field int64 GetParamCount
#field int64 GetParamSum
#field int64 SetParamCount
#field int64 SetParamSum
#field int64 SetCallbackHandlerCount
#field int64 SetCallbackHandlerSum
#field HTTP_QUIC_STREAM_API_TIMINGS ControlStreamTimings
#endstruct
#defstruct global HTTP_QUIC_API_TIMINGS
#field HTTP_QUIC_CONNECTION_API_TIMINGS ConnectionTimings
#field HTTP_QUIC_STREAM_API_TIMINGS StreamTimings
#endstruct
stdim st, HTTP_QUIC_API_TIMINGS ; NSTRUCT 変数を確保