ホーム › System.ProcessStatus › PROCESS_MEMORY_COUNTERS_EX2
PROCESS_MEMORY_COUNTERS_EX2
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| cb | DWORD | 4 | +0 | +0 | この構造体のサイズ。バイト数で呼び出し前に設定する。 |
| PageFaultCount | DWORD | 4 | +4 | +4 | 発生したページフォルトの累積回数。 |
| PeakWorkingSetSize | UINT_PTR | 8/4 | +8 | +8 | ワーキングセットサイズのピーク値。バイト数で表す。 |
| WorkingSetSize | UINT_PTR | 8/4 | +16 | +12 | 現在のワーキングセットサイズ。バイト数で表す。 |
| QuotaPeakPagedPoolUsage | UINT_PTR | 8/4 | +24 | +16 | ページプールクォータ使用量のピーク値。バイト数。 |
| QuotaPagedPoolUsage | UINT_PTR | 8/4 | +32 | +20 | 現在のページプールクォータ使用量。バイト数で表す。 |
| QuotaPeakNonPagedPoolUsage | UINT_PTR | 8/4 | +40 | +24 | 非ページプールクォータ使用量のピーク値。バイト数。 |
| QuotaNonPagedPoolUsage | UINT_PTR | 8/4 | +48 | +28 | 現在の非ページプールクォータ使用量。バイト数で表す。 |
| PagefileUsage | UINT_PTR | 8/4 | +56 | +32 | ページファイルにコミットされた使用量。バイト数で表す。 |
| PeakPagefileUsage | UINT_PTR | 8/4 | +64 | +36 | ページファイル使用量のピーク値。バイト数で表す。 |
| PrivateUsage | UINT_PTR | 8/4 | +72 | +40 | プロセスのプライベートコミット量。バイト数で表す。 |
| PrivateWorkingSetSize | UINT_PTR | 8/4 | +80 | +44 | プライベートワーキングセットのサイズ。バイト数で表す。 |
| SharedCommitUsage | ULONGLONG | 8 | +88 | +48 | 共有コミットの使用量。バイト数で表す。 |
各言語での定義
#include <windows.h>
// PROCESS_MEMORY_COUNTERS_EX2 (x64 96 / x86 56 バイト)
typedef struct PROCESS_MEMORY_COUNTERS_EX2 {
DWORD cb;
DWORD PageFaultCount;
UINT_PTR PeakWorkingSetSize;
UINT_PTR WorkingSetSize;
UINT_PTR QuotaPeakPagedPoolUsage;
UINT_PTR QuotaPagedPoolUsage;
UINT_PTR QuotaPeakNonPagedPoolUsage;
UINT_PTR QuotaNonPagedPoolUsage;
UINT_PTR PagefileUsage;
UINT_PTR PeakPagefileUsage;
UINT_PTR PrivateUsage;
UINT_PTR PrivateWorkingSetSize;
ULONGLONG SharedCommitUsage;
} PROCESS_MEMORY_COUNTERS_EX2;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PROCESS_MEMORY_COUNTERS_EX2
{
public uint cb;
public uint PageFaultCount;
public UIntPtr PeakWorkingSetSize;
public UIntPtr WorkingSetSize;
public UIntPtr QuotaPeakPagedPoolUsage;
public UIntPtr QuotaPagedPoolUsage;
public UIntPtr QuotaPeakNonPagedPoolUsage;
public UIntPtr QuotaNonPagedPoolUsage;
public UIntPtr PagefileUsage;
public UIntPtr PeakPagefileUsage;
public UIntPtr PrivateUsage;
public UIntPtr PrivateWorkingSetSize;
public ulong SharedCommitUsage;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PROCESS_MEMORY_COUNTERS_EX2
Public cb As UInteger
Public PageFaultCount As UInteger
Public PeakWorkingSetSize As UIntPtr
Public WorkingSetSize As UIntPtr
Public QuotaPeakPagedPoolUsage As UIntPtr
Public QuotaPagedPoolUsage As UIntPtr
Public QuotaPeakNonPagedPoolUsage As UIntPtr
Public QuotaNonPagedPoolUsage As UIntPtr
Public PagefileUsage As UIntPtr
Public PeakPagefileUsage As UIntPtr
Public PrivateUsage As UIntPtr
Public PrivateWorkingSetSize As UIntPtr
Public SharedCommitUsage As ULong
End Structureimport ctypes
from ctypes import wintypes
class PROCESS_MEMORY_COUNTERS_EX2(ctypes.Structure):
_fields_ = [
("cb", wintypes.DWORD),
("PageFaultCount", wintypes.DWORD),
("PeakWorkingSetSize", ctypes.c_size_t),
("WorkingSetSize", ctypes.c_size_t),
("QuotaPeakPagedPoolUsage", ctypes.c_size_t),
("QuotaPagedPoolUsage", ctypes.c_size_t),
("QuotaPeakNonPagedPoolUsage", ctypes.c_size_t),
("QuotaNonPagedPoolUsage", ctypes.c_size_t),
("PagefileUsage", ctypes.c_size_t),
("PeakPagefileUsage", ctypes.c_size_t),
("PrivateUsage", ctypes.c_size_t),
("PrivateWorkingSetSize", ctypes.c_size_t),
("SharedCommitUsage", ctypes.c_ulonglong),
]#[repr(C)]
pub struct PROCESS_MEMORY_COUNTERS_EX2 {
pub cb: u32,
pub PageFaultCount: u32,
pub PeakWorkingSetSize: usize,
pub WorkingSetSize: usize,
pub QuotaPeakPagedPoolUsage: usize,
pub QuotaPagedPoolUsage: usize,
pub QuotaPeakNonPagedPoolUsage: usize,
pub QuotaNonPagedPoolUsage: usize,
pub PagefileUsage: usize,
pub PeakPagefileUsage: usize,
pub PrivateUsage: usize,
pub PrivateWorkingSetSize: usize,
pub SharedCommitUsage: u64,
}import "golang.org/x/sys/windows"
type PROCESS_MEMORY_COUNTERS_EX2 struct {
cb uint32
PageFaultCount uint32
PeakWorkingSetSize uintptr
WorkingSetSize uintptr
QuotaPeakPagedPoolUsage uintptr
QuotaPagedPoolUsage uintptr
QuotaPeakNonPagedPoolUsage uintptr
QuotaNonPagedPoolUsage uintptr
PagefileUsage uintptr
PeakPagefileUsage uintptr
PrivateUsage uintptr
PrivateWorkingSetSize uintptr
SharedCommitUsage uint64
}type
PROCESS_MEMORY_COUNTERS_EX2 = record
cb: DWORD;
PageFaultCount: DWORD;
PeakWorkingSetSize: NativeUInt;
WorkingSetSize: NativeUInt;
QuotaPeakPagedPoolUsage: NativeUInt;
QuotaPagedPoolUsage: NativeUInt;
QuotaPeakNonPagedPoolUsage: NativeUInt;
QuotaNonPagedPoolUsage: NativeUInt;
PagefileUsage: NativeUInt;
PeakPagefileUsage: NativeUInt;
PrivateUsage: NativeUInt;
PrivateWorkingSetSize: NativeUInt;
SharedCommitUsage: UInt64;
end;const PROCESS_MEMORY_COUNTERS_EX2 = extern struct {
cb: u32,
PageFaultCount: u32,
PeakWorkingSetSize: usize,
WorkingSetSize: usize,
QuotaPeakPagedPoolUsage: usize,
QuotaPagedPoolUsage: usize,
QuotaPeakNonPagedPoolUsage: usize,
QuotaNonPagedPoolUsage: usize,
PagefileUsage: usize,
PeakPagefileUsage: usize,
PrivateUsage: usize,
PrivateWorkingSetSize: usize,
SharedCommitUsage: u64,
};type
PROCESS_MEMORY_COUNTERS_EX2 {.bycopy.} = object
cb: uint32
PageFaultCount: uint32
PeakWorkingSetSize: uint
WorkingSetSize: uint
QuotaPeakPagedPoolUsage: uint
QuotaPagedPoolUsage: uint
QuotaPeakNonPagedPoolUsage: uint
QuotaNonPagedPoolUsage: uint
PagefileUsage: uint
PeakPagefileUsage: uint
PrivateUsage: uint
PrivateWorkingSetSize: uint
SharedCommitUsage: uint64struct PROCESS_MEMORY_COUNTERS_EX2
{
uint cb;
uint PageFaultCount;
size_t PeakWorkingSetSize;
size_t WorkingSetSize;
size_t QuotaPeakPagedPoolUsage;
size_t QuotaPagedPoolUsage;
size_t QuotaPeakNonPagedPoolUsage;
size_t QuotaNonPagedPoolUsage;
size_t PagefileUsage;
size_t PeakPagefileUsage;
size_t PrivateUsage;
size_t PrivateWorkingSetSize;
ulong SharedCommitUsage;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; PROCESS_MEMORY_COUNTERS_EX2 サイズ: 56 バイト(x86)
dim st, 14 ; 4byte整数×14(構造体サイズ 56 / 4 切り上げ)
; cb : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PageFaultCount : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; PeakWorkingSetSize : UINT_PTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; WorkingSetSize : UINT_PTR (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; QuotaPeakPagedPoolUsage : UINT_PTR (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; QuotaPagedPoolUsage : UINT_PTR (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; QuotaPeakNonPagedPoolUsage : UINT_PTR (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; QuotaNonPagedPoolUsage : UINT_PTR (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; PagefileUsage : UINT_PTR (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; PeakPagefileUsage : UINT_PTR (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; PrivateUsage : UINT_PTR (+40, 4byte) st.10 = 値 / 値 = st.10 (lpoke/lpeek も可)
; PrivateWorkingSetSize : UINT_PTR (+44, 4byte) st.11 = 値 / 値 = st.11 (lpoke/lpeek も可)
; SharedCommitUsage : ULONGLONG (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PROCESS_MEMORY_COUNTERS_EX2 サイズ: 96 バイト(x64)
dim st, 24 ; 4byte整数×24(構造体サイズ 96 / 4 切り上げ)
; cb : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PageFaultCount : DWORD (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; PeakWorkingSetSize : UINT_PTR (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; WorkingSetSize : UINT_PTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; QuotaPeakPagedPoolUsage : UINT_PTR (+24, 8byte) qpoke st,24,値 / qpeek(st,24) ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; QuotaPagedPoolUsage : UINT_PTR (+32, 8byte) qpoke st,32,値 / qpeek(st,32) ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; QuotaPeakNonPagedPoolUsage : UINT_PTR (+40, 8byte) qpoke st,40,値 / qpeek(st,40) ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; QuotaNonPagedPoolUsage : UINT_PTR (+48, 8byte) qpoke st,48,値 / qpeek(st,48) ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; PagefileUsage : UINT_PTR (+56, 8byte) qpoke st,56,値 / qpeek(st,56) ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; PeakPagefileUsage : UINT_PTR (+64, 8byte) qpoke st,64,値 / qpeek(st,64) ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; PrivateUsage : UINT_PTR (+72, 8byte) qpoke st,72,値 / qpeek(st,72) ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; PrivateWorkingSetSize : UINT_PTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; SharedCommitUsage : 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 PROCESS_MEMORY_COUNTERS_EX2
#field int cb
#field int PageFaultCount
#field intptr PeakWorkingSetSize
#field intptr WorkingSetSize
#field intptr QuotaPeakPagedPoolUsage
#field intptr QuotaPagedPoolUsage
#field intptr QuotaPeakNonPagedPoolUsage
#field intptr QuotaNonPagedPoolUsage
#field intptr PagefileUsage
#field intptr PeakPagefileUsage
#field intptr PrivateUsage
#field intptr PrivateWorkingSetSize
#field int64 SharedCommitUsage
#endstruct
stdim st, PROCESS_MEMORY_COUNTERS_EX2 ; NSTRUCT 変数を確保
st->cb = 100
mes "cb=" + st->cb