ホーム › System.ProcessStatus › PROCESS_MEMORY_COUNTERS_EX
PROCESS_MEMORY_COUNTERS_EX
構造体サイズ=各フィールドのバイト数(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 | このプロセスのコミットチャージの値 (バイト単位)。コミットチャージとは、実行中のプロセスに対してメモリマネージャーがコミットしたプライベートメモリの合計量です。 Windows 7 および Windows Server 2008 R2 以前: PagefileUsage は常に 0 です。代わりに PrivateUsage を確認してください。 |
| PeakPagefileUsage | UINT_PTR | 8/4 | +64 | +36 | このプロセスの存続期間中におけるコミットチャージのピーク値 (バイト単位)。 |
| PrivateUsage | UINT_PTR | 8/4 | +72 | +40 | PagefileUsage と同じです。このプロセスのコミットチャージの値 (バイト単位)。コミットチャージとは、実行中のプロセスに対してメモリマネージャーがコミットしたプライベートメモリの合計量です。 |
公式ドキュメント
プロセスの拡張メモリ統計情報を格納します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// PROCESS_MEMORY_COUNTERS_EX (x64 80 / x86 44 バイト)
typedef struct PROCESS_MEMORY_COUNTERS_EX {
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;
} PROCESS_MEMORY_COUNTERS_EX;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PROCESS_MEMORY_COUNTERS_EX
{
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;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PROCESS_MEMORY_COUNTERS_EX
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
End Structureimport ctypes
from ctypes import wintypes
class PROCESS_MEMORY_COUNTERS_EX(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),
]#[repr(C)]
pub struct PROCESS_MEMORY_COUNTERS_EX {
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,
}import "golang.org/x/sys/windows"
type PROCESS_MEMORY_COUNTERS_EX struct {
cb uint32
PageFaultCount uint32
PeakWorkingSetSize uintptr
WorkingSetSize uintptr
QuotaPeakPagedPoolUsage uintptr
QuotaPagedPoolUsage uintptr
QuotaPeakNonPagedPoolUsage uintptr
QuotaNonPagedPoolUsage uintptr
PagefileUsage uintptr
PeakPagefileUsage uintptr
PrivateUsage uintptr
}type
PROCESS_MEMORY_COUNTERS_EX = record
cb: DWORD;
PageFaultCount: DWORD;
PeakWorkingSetSize: NativeUInt;
WorkingSetSize: NativeUInt;
QuotaPeakPagedPoolUsage: NativeUInt;
QuotaPagedPoolUsage: NativeUInt;
QuotaPeakNonPagedPoolUsage: NativeUInt;
QuotaNonPagedPoolUsage: NativeUInt;
PagefileUsage: NativeUInt;
PeakPagefileUsage: NativeUInt;
PrivateUsage: NativeUInt;
end;const PROCESS_MEMORY_COUNTERS_EX = extern struct {
cb: u32,
PageFaultCount: u32,
PeakWorkingSetSize: usize,
WorkingSetSize: usize,
QuotaPeakPagedPoolUsage: usize,
QuotaPagedPoolUsage: usize,
QuotaPeakNonPagedPoolUsage: usize,
QuotaNonPagedPoolUsage: usize,
PagefileUsage: usize,
PeakPagefileUsage: usize,
PrivateUsage: usize,
};type
PROCESS_MEMORY_COUNTERS_EX {.bycopy.} = object
cb: uint32
PageFaultCount: uint32
PeakWorkingSetSize: uint
WorkingSetSize: uint
QuotaPeakPagedPoolUsage: uint
QuotaPagedPoolUsage: uint
QuotaPeakNonPagedPoolUsage: uint
QuotaNonPagedPoolUsage: uint
PagefileUsage: uint
PeakPagefileUsage: uint
PrivateUsage: uintstruct PROCESS_MEMORY_COUNTERS_EX
{
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;
}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_EX サイズ: 44 バイト(x86)
dim st, 11 ; 4byte整数×11(構造体サイズ 44 / 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 も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PROCESS_MEMORY_COUNTERS_EX サイズ: 80 バイト(x64)
dim st, 20 ; 4byte整数×20(構造体サイズ 80 / 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,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global PROCESS_MEMORY_COUNTERS_EX
#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
#endstruct
stdim st, PROCESS_MEMORY_COUNTERS_EX ; NSTRUCT 変数を確保
st->cb = 100
mes "cb=" + st->cb