ホーム › 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 | 現在コミットされているページ総数。ページ数で表す。 |
| 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 | 1ページのサイズ。バイト数で表す。 |
| HandleCount | DWORD | 4 | +88 | +44 | システム全体で開かれているハンドルの総数。 |
| ProcessCount | DWORD | 4 | +92 | +48 | 現在実行中のプロセス総数。 |
| ThreadCount | DWORD | 4 | +96 | +52 | 現在実行中のスレッド総数。 |
各言語での定義
#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