ホーム › System.ProcessStatus › PERFORMANCE_INFORMATION
PERFORMANCE_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cb | DWORD | 4 | +0 | +0 | この構造体のサイズ (バイト単位)。 |
| CommitTotal | UINT_PTR | 8/4 | +8 | +4 | システムによって現在コミットされているページ数。ページをコミットすると (VirtualAlloc を MEM_COMMIT 付きで使用)、この値は直ちに変化しますが、ページがアクセスされるまで物理メモリは実際には消費されません。 |
| CommitLimit | UINT_PTR | 8/4 | +16 | +8 | ページング ファイルを拡張することなくシステムがコミットできる現在の最大ページ数。この値は、メモリが追加または削除された場合や、ページ ファイルが拡大・縮小・追加された場合に変化することがあります。ページング ファイルを拡張できる場合、これはソフト リミットです。 |
| CommitPeak | UINT_PTR | 8/4 | +24 | +12 | 前回のシステム再起動以降に同時にコミット状態となったページ数の最大値。 |
| PhysicalTotal | UINT_PTR | 8/4 | +32 | +16 | 実際の物理メモリの量 (ページ単位)。 |
| PhysicalAvailable | UINT_PTR | 8/4 | +40 | +20 | 現在使用可能な物理メモリの量 (ページ単位)。これは、内容を先にディスクへ書き込むことなく直ちに再利用できる物理メモリの量です。スタンバイ リスト、フリー リスト、ゼロ リストのサイズの合計になります。 |
| SystemCache | UINT_PTR | 8/4 | +48 | +24 | システム キャッシュ メモリの量 (ページ単位)。これは、スタンバイ リストのサイズにシステム ワーキング セットを加えたものです。 |
| KernelTotal | UINT_PTR | 8/4 | +56 | +28 | 現在ページ カーネル プールおよび非ページ カーネル プールにあるメモリの合計 (ページ単位)。 |
| KernelPaged | UINT_PTR | 8/4 | +64 | +32 | 現在ページ カーネル プールにあるメモリ (ページ単位)。 |
| KernelNonpaged | UINT_PTR | 8/4 | +72 | +36 | 現在非ページ カーネル プールにあるメモリ (ページ単位)。 |
| PageSize | UINT_PTR | 8/4 | +80 | +40 | ページのサイズ (バイト単位)。 |
| HandleCount | DWORD | 4 | +88 | +44 | 現在開いているハンドルの数。 |
| ProcessCount | DWORD | 4 | +92 | +48 | 現在のプロセス数。 |
| ThreadCount | DWORD | 4 | +96 | +52 | 現在のスレッド数。 |
公式ドキュメント
パフォーマンス情報を格納します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// PERFORMANCE_INFORMATION (x64 104 / x86 56 バイト)
typedef struct PERFORMANCE_INFORMATION {
DWORD cb;
UINT_PTR CommitTotal;
UINT_PTR CommitLimit;
UINT_PTR CommitPeak;
UINT_PTR PhysicalTotal;
UINT_PTR PhysicalAvailable;
UINT_PTR SystemCache;
UINT_PTR KernelTotal;
UINT_PTR KernelPaged;
UINT_PTR KernelNonpaged;
UINT_PTR PageSize;
DWORD HandleCount;
DWORD ProcessCount;
DWORD ThreadCount;
} PERFORMANCE_INFORMATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PERFORMANCE_INFORMATION
{
public uint cb;
public UIntPtr CommitTotal;
public UIntPtr CommitLimit;
public UIntPtr CommitPeak;
public UIntPtr PhysicalTotal;
public UIntPtr PhysicalAvailable;
public UIntPtr SystemCache;
public UIntPtr KernelTotal;
public UIntPtr KernelPaged;
public UIntPtr KernelNonpaged;
public UIntPtr PageSize;
public uint HandleCount;
public uint ProcessCount;
public uint ThreadCount;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PERFORMANCE_INFORMATION
Public cb As UInteger
Public CommitTotal As UIntPtr
Public CommitLimit As UIntPtr
Public CommitPeak As UIntPtr
Public PhysicalTotal As UIntPtr
Public PhysicalAvailable As UIntPtr
Public SystemCache As UIntPtr
Public KernelTotal As UIntPtr
Public KernelPaged As UIntPtr
Public KernelNonpaged As UIntPtr
Public PageSize As UIntPtr
Public HandleCount As UInteger
Public ProcessCount As UInteger
Public ThreadCount As UInteger
End Structureimport ctypes
from ctypes import wintypes
class PERFORMANCE_INFORMATION(ctypes.Structure):
_fields_ = [
("cb", wintypes.DWORD),
("CommitTotal", ctypes.c_size_t),
("CommitLimit", ctypes.c_size_t),
("CommitPeak", ctypes.c_size_t),
("PhysicalTotal", ctypes.c_size_t),
("PhysicalAvailable", ctypes.c_size_t),
("SystemCache", ctypes.c_size_t),
("KernelTotal", ctypes.c_size_t),
("KernelPaged", ctypes.c_size_t),
("KernelNonpaged", ctypes.c_size_t),
("PageSize", ctypes.c_size_t),
("HandleCount", wintypes.DWORD),
("ProcessCount", wintypes.DWORD),
("ThreadCount", wintypes.DWORD),
]#[repr(C)]
pub struct PERFORMANCE_INFORMATION {
pub cb: u32,
pub CommitTotal: usize,
pub CommitLimit: usize,
pub CommitPeak: usize,
pub PhysicalTotal: usize,
pub PhysicalAvailable: usize,
pub SystemCache: usize,
pub KernelTotal: usize,
pub KernelPaged: usize,
pub KernelNonpaged: usize,
pub PageSize: usize,
pub HandleCount: u32,
pub ProcessCount: u32,
pub ThreadCount: u32,
}import "golang.org/x/sys/windows"
type PERFORMANCE_INFORMATION struct {
cb uint32
CommitTotal uintptr
CommitLimit uintptr
CommitPeak uintptr
PhysicalTotal uintptr
PhysicalAvailable uintptr
SystemCache uintptr
KernelTotal uintptr
KernelPaged uintptr
KernelNonpaged uintptr
PageSize uintptr
HandleCount uint32
ProcessCount uint32
ThreadCount uint32
}type
PERFORMANCE_INFORMATION = record
cb: DWORD;
CommitTotal: NativeUInt;
CommitLimit: NativeUInt;
CommitPeak: NativeUInt;
PhysicalTotal: NativeUInt;
PhysicalAvailable: NativeUInt;
SystemCache: NativeUInt;
KernelTotal: NativeUInt;
KernelPaged: NativeUInt;
KernelNonpaged: NativeUInt;
PageSize: NativeUInt;
HandleCount: DWORD;
ProcessCount: DWORD;
ThreadCount: DWORD;
end;const PERFORMANCE_INFORMATION = extern struct {
cb: u32,
CommitTotal: usize,
CommitLimit: usize,
CommitPeak: usize,
PhysicalTotal: usize,
PhysicalAvailable: usize,
SystemCache: usize,
KernelTotal: usize,
KernelPaged: usize,
KernelNonpaged: usize,
PageSize: usize,
HandleCount: u32,
ProcessCount: u32,
ThreadCount: u32,
};type
PERFORMANCE_INFORMATION {.bycopy.} = object
cb: uint32
CommitTotal: uint
CommitLimit: uint
CommitPeak: uint
PhysicalTotal: uint
PhysicalAvailable: uint
SystemCache: uint
KernelTotal: uint
KernelPaged: uint
KernelNonpaged: uint
PageSize: uint
HandleCount: uint32
ProcessCount: uint32
ThreadCount: uint32struct PERFORMANCE_INFORMATION
{
uint cb;
size_t CommitTotal;
size_t CommitLimit;
size_t CommitPeak;
size_t PhysicalTotal;
size_t PhysicalAvailable;
size_t SystemCache;
size_t KernelTotal;
size_t KernelPaged;
size_t KernelNonpaged;
size_t PageSize;
uint HandleCount;
uint ProcessCount;
uint ThreadCount;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; PERFORMANCE_INFORMATION サイズ: 56 バイト(x86)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; cb : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; CommitTotal : UINT_PTR (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; CommitLimit : UINT_PTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; CommitPeak : UINT_PTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; PhysicalTotal : UINT_PTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; PhysicalAvailable : UINT_PTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; SystemCache : UINT_PTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; KernelTotal : UINT_PTR (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; KernelPaged : UINT_PTR (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; KernelNonpaged : UINT_PTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; PageSize : UINT_PTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; HandleCount : DWORD (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; ProcessCount : DWORD (+48, 4byte) st.12 = 値 / 値 = st.12 (lpoke/lpeek も可)
; ThreadCount : DWORD (+52, 4byte) st.13 = 値 / 値 = st.13 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PERFORMANCE_INFORMATION サイズ: 104 バイト(x64)
dim st, 26 ; 4byte整数×26(構造体サイズ 104 / 4 切り上げ)
; cb : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; CommitTotal : UINT_PTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; CommitLimit : UINT_PTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; CommitPeak : UINT_PTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; PhysicalTotal : UINT_PTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; PhysicalAvailable : UINT_PTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; SystemCache : UINT_PTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; KernelTotal : UINT_PTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; KernelPaged : UINT_PTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; KernelNonpaged : UINT_PTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; PageSize : UINT_PTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; HandleCount : DWORD (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; ProcessCount : DWORD (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; ThreadCount : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global PERFORMANCE_INFORMATION
#field int cb
#field intptr CommitTotal
#field intptr CommitLimit
#field intptr CommitPeak
#field intptr PhysicalTotal
#field intptr PhysicalAvailable
#field intptr SystemCache
#field intptr KernelTotal
#field intptr KernelPaged
#field intptr KernelNonpaged
#field intptr PageSize
#field int HandleCount
#field int ProcessCount
#field int ThreadCount
#endstruct
stdim st, PERFORMANCE_INFORMATION ; NSTRUCT 変数を確保
st->cb = 100
mes "cb=" + st->cb