ホーム › 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 | キャプチャに費やされたクロックサイクル数です。 |
| TotalWallClockPeriod | ULONGLONG | 8 | +8 | +8 | キャプチャに費やされた FILETIME 単位の数です。 |
| VaCloneCycleCount | ULONGLONG | 8 | +16 | +16 | VA クローンのキャプチャに費やされたクロックサイクル数です。 |
| VaCloneWallClockPeriod | ULONGLONG | 8 | +24 | +24 | VA クローンのキャプチャに費やされた FILETIME 単位の数です。 |
| VaSpaceCycleCount | ULONGLONG | 8 | +32 | +32 | VA 空間情報のキャプチャに費やされたクロックサイクル数です。 |
| VaSpaceWallClockPeriod | ULONGLONG | 8 | +40 | +40 | VA 空間情報のキャプチャに費やされた FILETIME 単位の数です。 |
| AuxPagesCycleCount | ULONGLONG | 8 | +48 | +48 | 補助ページ情報のキャプチャに費やされたクロックサイクル数です。 |
| AuxPagesWallClockPeriod | ULONGLONG | 8 | +56 | +56 | 補助ページ情報のキャプチャに費やされた FILETIME 単位の数です。 |
| HandlesCycleCount | ULONGLONG | 8 | +64 | +64 | ハンドル情報のキャプチャに費やされたクロックサイクル数です。 |
| HandlesWallClockPeriod | ULONGLONG | 8 | +72 | +72 | ハンドル情報のキャプチャに費やされた FILETIME 単位の数です。 |
| ThreadsCycleCount | ULONGLONG | 8 | +80 | +80 | スレッド情報のキャプチャに費やされたクロックサイクル数です。 |
| ThreadsWallClockPeriod | ULONGLONG | 8 | +88 | +88 | スレッド情報のキャプチャに費やされた FILETIME 単位の数です。 |
公式ドキュメント
PssQuerySnapshot が返すパフォーマンスカウンターを保持します。
解説(Remarks)
呼び出し元が指定する PSS_QUERY_INFORMATION_CLASS メンバーが PSS_QUERY_PERFORMANCE_COUNTERS の場合、PssQuerySnapshot は PSS_PERFORMANCE_COUNTERS 構造体を返します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// 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