ホーム › System.Diagnostics.ProcessSnapshotting › PSS_PERFORMANCE_COUNTERS
PSS_PERFORMANCE_COUNTERS
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| TotalCycleCount | ULONGLONG | 8 | +0 | +0 | スナップショット処理全体のCPUサイクル数。 |
| TotalWallClockPeriod | ULONGLONG | 8 | +8 | +8 | スナップショット処理全体の経過時間。 |
| VaCloneCycleCount | ULONGLONG | 8 | +16 | +16 | VAクローン処理のCPUサイクル数。 |
| VaCloneWallClockPeriod | ULONGLONG | 8 | +24 | +24 | VAクローン処理の経過時間。 |
| VaSpaceCycleCount | ULONGLONG | 8 | +32 | +32 | VA空間キャプチャのCPUサイクル数。 |
| VaSpaceWallClockPeriod | ULONGLONG | 8 | +40 | +40 | VA空間キャプチャの経過時間。 |
| AuxPagesCycleCount | ULONGLONG | 8 | +48 | +48 | 補助ページキャプチャのCPUサイクル数。 |
| AuxPagesWallClockPeriod | ULONGLONG | 8 | +56 | +56 | 補助ページキャプチャの経過時間。 |
| HandlesCycleCount | ULONGLONG | 8 | +64 | +64 | ハンドルキャプチャのCPUサイクル数。 |
| HandlesWallClockPeriod | ULONGLONG | 8 | +72 | +72 | ハンドルキャプチャの経過時間。 |
| ThreadsCycleCount | ULONGLONG | 8 | +80 | +80 | スレッドキャプチャのCPUサイクル数。 |
| ThreadsWallClockPeriod | ULONGLONG | 8 | +88 | +88 | スレッドキャプチャの経過時間。 |
各言語での定義
#include <windows.h>
// PSS_PERFORMANCE_COUNTERS (x64 96 / x86 96 バイト)
typedef struct PSS_PERFORMANCE_COUNTERS {
ULONGLONG TotalCycleCount;
ULONGLONG TotalWallClockPeriod;
ULONGLONG VaCloneCycleCount;
ULONGLONG VaCloneWallClockPeriod;
ULONGLONG VaSpaceCycleCount;
ULONGLONG VaSpaceWallClockPeriod;
ULONGLONG AuxPagesCycleCount;
ULONGLONG AuxPagesWallClockPeriod;
ULONGLONG HandlesCycleCount;
ULONGLONG HandlesWallClockPeriod;
ULONGLONG ThreadsCycleCount;
ULONGLONG ThreadsWallClockPeriod;
} PSS_PERFORMANCE_COUNTERS;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PSS_PERFORMANCE_COUNTERS
{
public ulong TotalCycleCount;
public ulong TotalWallClockPeriod;
public ulong VaCloneCycleCount;
public ulong VaCloneWallClockPeriod;
public ulong VaSpaceCycleCount;
public ulong VaSpaceWallClockPeriod;
public ulong AuxPagesCycleCount;
public ulong AuxPagesWallClockPeriod;
public ulong HandlesCycleCount;
public ulong HandlesWallClockPeriod;
public ulong ThreadsCycleCount;
public ulong ThreadsWallClockPeriod;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PSS_PERFORMANCE_COUNTERS
Public TotalCycleCount As ULong
Public TotalWallClockPeriod As ULong
Public VaCloneCycleCount As ULong
Public VaCloneWallClockPeriod As ULong
Public VaSpaceCycleCount As ULong
Public VaSpaceWallClockPeriod As ULong
Public AuxPagesCycleCount As ULong
Public AuxPagesWallClockPeriod As ULong
Public HandlesCycleCount As ULong
Public HandlesWallClockPeriod As ULong
Public ThreadsCycleCount As ULong
Public ThreadsWallClockPeriod As ULong
End Structureimport ctypes
from ctypes import wintypes
class PSS_PERFORMANCE_COUNTERS(ctypes.Structure):
_fields_ = [
("TotalCycleCount", ctypes.c_ulonglong),
("TotalWallClockPeriod", ctypes.c_ulonglong),
("VaCloneCycleCount", ctypes.c_ulonglong),
("VaCloneWallClockPeriod", ctypes.c_ulonglong),
("VaSpaceCycleCount", ctypes.c_ulonglong),
("VaSpaceWallClockPeriod", ctypes.c_ulonglong),
("AuxPagesCycleCount", ctypes.c_ulonglong),
("AuxPagesWallClockPeriod", ctypes.c_ulonglong),
("HandlesCycleCount", ctypes.c_ulonglong),
("HandlesWallClockPeriod", ctypes.c_ulonglong),
("ThreadsCycleCount", ctypes.c_ulonglong),
("ThreadsWallClockPeriod", ctypes.c_ulonglong),
]#[repr(C)]
pub struct PSS_PERFORMANCE_COUNTERS {
pub TotalCycleCount: u64,
pub TotalWallClockPeriod: u64,
pub VaCloneCycleCount: u64,
pub VaCloneWallClockPeriod: u64,
pub VaSpaceCycleCount: u64,
pub VaSpaceWallClockPeriod: u64,
pub AuxPagesCycleCount: u64,
pub AuxPagesWallClockPeriod: u64,
pub HandlesCycleCount: u64,
pub HandlesWallClockPeriod: u64,
pub ThreadsCycleCount: u64,
pub ThreadsWallClockPeriod: u64,
}import "golang.org/x/sys/windows"
type PSS_PERFORMANCE_COUNTERS struct {
TotalCycleCount uint64
TotalWallClockPeriod uint64
VaCloneCycleCount uint64
VaCloneWallClockPeriod uint64
VaSpaceCycleCount uint64
VaSpaceWallClockPeriod uint64
AuxPagesCycleCount uint64
AuxPagesWallClockPeriod uint64
HandlesCycleCount uint64
HandlesWallClockPeriod uint64
ThreadsCycleCount uint64
ThreadsWallClockPeriod uint64
}type
PSS_PERFORMANCE_COUNTERS = record
TotalCycleCount: UInt64;
TotalWallClockPeriod: UInt64;
VaCloneCycleCount: UInt64;
VaCloneWallClockPeriod: UInt64;
VaSpaceCycleCount: UInt64;
VaSpaceWallClockPeriod: UInt64;
AuxPagesCycleCount: UInt64;
AuxPagesWallClockPeriod: UInt64;
HandlesCycleCount: UInt64;
HandlesWallClockPeriod: UInt64;
ThreadsCycleCount: UInt64;
ThreadsWallClockPeriod: UInt64;
end;const PSS_PERFORMANCE_COUNTERS = extern struct {
TotalCycleCount: u64,
TotalWallClockPeriod: u64,
VaCloneCycleCount: u64,
VaCloneWallClockPeriod: u64,
VaSpaceCycleCount: u64,
VaSpaceWallClockPeriod: u64,
AuxPagesCycleCount: u64,
AuxPagesWallClockPeriod: u64,
HandlesCycleCount: u64,
HandlesWallClockPeriod: u64,
ThreadsCycleCount: u64,
ThreadsWallClockPeriod: u64,
};type
PSS_PERFORMANCE_COUNTERS {.bycopy.} = object
TotalCycleCount: uint64
TotalWallClockPeriod: uint64
VaCloneCycleCount: uint64
VaCloneWallClockPeriod: uint64
VaSpaceCycleCount: uint64
VaSpaceWallClockPeriod: uint64
AuxPagesCycleCount: uint64
AuxPagesWallClockPeriod: uint64
HandlesCycleCount: uint64
HandlesWallClockPeriod: uint64
ThreadsCycleCount: uint64
ThreadsWallClockPeriod: uint64struct PSS_PERFORMANCE_COUNTERS
{
ulong TotalCycleCount;
ulong TotalWallClockPeriod;
ulong VaCloneCycleCount;
ulong VaCloneWallClockPeriod;
ulong VaSpaceCycleCount;
ulong VaSpaceWallClockPeriod;
ulong AuxPagesCycleCount;
ulong AuxPagesWallClockPeriod;
ulong HandlesCycleCount;
ulong HandlesWallClockPeriod;
ulong ThreadsCycleCount;
ulong ThreadsWallClockPeriod;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PSS_PERFORMANCE_COUNTERS サイズ: 96 バイト(x64)
dim st, 24 ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; TotalCycleCount : ULONGLONG (+0, 8byte) qpoke st,0,値 / qpeek(st,0) ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; TotalWallClockPeriod : ULONGLONG (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; VaCloneCycleCount : ULONGLONG (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; VaCloneWallClockPeriod : ULONGLONG (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; VaSpaceCycleCount : ULONGLONG (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; VaSpaceWallClockPeriod : ULONGLONG (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; AuxPagesCycleCount : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; AuxPagesWallClockPeriod : ULONGLONG (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; HandlesCycleCount : ULONGLONG (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; HandlesWallClockPeriod : ULONGLONG (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; ThreadsCycleCount : ULONGLONG (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; ThreadsWallClockPeriod : ULONGLONG (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global PSS_PERFORMANCE_COUNTERS
#field int64 TotalCycleCount
#field int64 TotalWallClockPeriod
#field int64 VaCloneCycleCount
#field int64 VaCloneWallClockPeriod
#field int64 VaSpaceCycleCount
#field int64 VaSpaceWallClockPeriod
#field int64 AuxPagesCycleCount
#field int64 AuxPagesWallClockPeriod
#field int64 HandlesCycleCount
#field int64 HandlesWallClockPeriod
#field int64 ThreadsCycleCount
#field int64 ThreadsWallClockPeriod
#endstruct
stdim st, PSS_PERFORMANCE_COUNTERS ; NSTRUCT 変数を確保
st->TotalCycleCount = 100
mes "TotalCycleCount=" + st->TotalCycleCount