Win32 API 日本語リファレンス
ホームSystem.Diagnostics.Debug › MINIDUMP_PROCESS_VM_COUNTERS_2

MINIDUMP_PROCESS_VM_COUNTERS_2

構造体
サイズx64: 152 バイト / x86: 152 バイトパッキング4

サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。

フィールド

フィールドサイズx64x86説明
RevisionWORD2+0+0この構造体のリビジョン番号。
FlagsWORD2+2+2有効なフィールドを示すフラグ。
PageFaultCountDWORD4+4+4ページフォルト数。
PeakWorkingSetSizeULONGLONG8+8+8ワーキングセットのピークサイズ(バイト)。
WorkingSetSizeULONGLONG8+16+16現在のワーキングセットサイズ(バイト)。
QuotaPeakPagedPoolUsageULONGLONG8+24+24ページプールクォータのピーク使用量。
QuotaPagedPoolUsageULONGLONG8+32+32ページプールクォータの現在使用量。
QuotaPeakNonPagedPoolUsageULONGLONG8+40+40非ページプールクォータのピーク使用量。
QuotaNonPagedPoolUsageULONGLONG8+48+48非ページプールクォータの現在使用量。
PagefileUsageULONGLONG8+56+56ページファイルの使用量(バイト)。
PeakPagefileUsageULONGLONG8+64+64ページファイル使用量のピーク。
PeakVirtualSizeULONGLONG8+72+72仮想サイズのピーク(バイト)。
VirtualSizeULONGLONG8+80+80現在の仮想サイズ(バイト)。
PrivateUsageULONGLONG8+88+88プライベートコミットの使用量(バイト)。
PrivateWorkingSetSizeULONGLONG8+96+96プライベートワーキングセットサイズ。
SharedCommitUsageULONGLONG8+104+104共有コミット使用量。
JobSharedCommitUsageULONGLONG8+112+112ジョブ共有コミット使用量。
JobPrivateCommitUsageULONGLONG8+120+120ジョブプライベートコミット使用量。
JobPeakPrivateCommitUsageULONGLONG8+128+128ジョブプライベートコミットのピーク使用量。
JobPrivateCommitLimitULONGLONG8+136+136ジョブのプライベートコミット上限。
JobTotalCommitLimitULONGLONG8+144+144ジョブの総コミット上限。

各言語での定義

#include <windows.h>

// MINIDUMP_PROCESS_VM_COUNTERS_2  (x64 152 / x86 152 バイト)
#pragma pack(push, 4)
typedef struct MINIDUMP_PROCESS_VM_COUNTERS_2 {
    WORD Revision;
    WORD Flags;
    DWORD PageFaultCount;
    ULONGLONG PeakWorkingSetSize;
    ULONGLONG WorkingSetSize;
    ULONGLONG QuotaPeakPagedPoolUsage;
    ULONGLONG QuotaPagedPoolUsage;
    ULONGLONG QuotaPeakNonPagedPoolUsage;
    ULONGLONG QuotaNonPagedPoolUsage;
    ULONGLONG PagefileUsage;
    ULONGLONG PeakPagefileUsage;
    ULONGLONG PeakVirtualSize;
    ULONGLONG VirtualSize;
    ULONGLONG PrivateUsage;
    ULONGLONG PrivateWorkingSetSize;
    ULONGLONG SharedCommitUsage;
    ULONGLONG JobSharedCommitUsage;
    ULONGLONG JobPrivateCommitUsage;
    ULONGLONG JobPeakPrivateCommitUsage;
    ULONGLONG JobPrivateCommitLimit;
    ULONGLONG JobTotalCommitLimit;
} MINIDUMP_PROCESS_VM_COUNTERS_2;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct MINIDUMP_PROCESS_VM_COUNTERS_2
{
    public ushort Revision;
    public ushort Flags;
    public uint PageFaultCount;
    public ulong PeakWorkingSetSize;
    public ulong WorkingSetSize;
    public ulong QuotaPeakPagedPoolUsage;
    public ulong QuotaPagedPoolUsage;
    public ulong QuotaPeakNonPagedPoolUsage;
    public ulong QuotaNonPagedPoolUsage;
    public ulong PagefileUsage;
    public ulong PeakPagefileUsage;
    public ulong PeakVirtualSize;
    public ulong VirtualSize;
    public ulong PrivateUsage;
    public ulong PrivateWorkingSetSize;
    public ulong SharedCommitUsage;
    public ulong JobSharedCommitUsage;
    public ulong JobPrivateCommitUsage;
    public ulong JobPeakPrivateCommitUsage;
    public ulong JobPrivateCommitLimit;
    public ulong JobTotalCommitLimit;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_PROCESS_VM_COUNTERS_2
    Public Revision As UShort
    Public Flags As UShort
    Public PageFaultCount As UInteger
    Public PeakWorkingSetSize As ULong
    Public WorkingSetSize As ULong
    Public QuotaPeakPagedPoolUsage As ULong
    Public QuotaPagedPoolUsage As ULong
    Public QuotaPeakNonPagedPoolUsage As ULong
    Public QuotaNonPagedPoolUsage As ULong
    Public PagefileUsage As ULong
    Public PeakPagefileUsage As ULong
    Public PeakVirtualSize As ULong
    Public VirtualSize As ULong
    Public PrivateUsage As ULong
    Public PrivateWorkingSetSize As ULong
    Public SharedCommitUsage As ULong
    Public JobSharedCommitUsage As ULong
    Public JobPrivateCommitUsage As ULong
    Public JobPeakPrivateCommitUsage As ULong
    Public JobPrivateCommitLimit As ULong
    Public JobTotalCommitLimit As ULong
End Structure
import ctypes
from ctypes import wintypes

class MINIDUMP_PROCESS_VM_COUNTERS_2(ctypes.Structure):
    _pack_ = 4
    _fields_ = [
        ("Revision", ctypes.c_ushort),
        ("Flags", ctypes.c_ushort),
        ("PageFaultCount", wintypes.DWORD),
        ("PeakWorkingSetSize", ctypes.c_ulonglong),
        ("WorkingSetSize", ctypes.c_ulonglong),
        ("QuotaPeakPagedPoolUsage", ctypes.c_ulonglong),
        ("QuotaPagedPoolUsage", ctypes.c_ulonglong),
        ("QuotaPeakNonPagedPoolUsage", ctypes.c_ulonglong),
        ("QuotaNonPagedPoolUsage", ctypes.c_ulonglong),
        ("PagefileUsage", ctypes.c_ulonglong),
        ("PeakPagefileUsage", ctypes.c_ulonglong),
        ("PeakVirtualSize", ctypes.c_ulonglong),
        ("VirtualSize", ctypes.c_ulonglong),
        ("PrivateUsage", ctypes.c_ulonglong),
        ("PrivateWorkingSetSize", ctypes.c_ulonglong),
        ("SharedCommitUsage", ctypes.c_ulonglong),
        ("JobSharedCommitUsage", ctypes.c_ulonglong),
        ("JobPrivateCommitUsage", ctypes.c_ulonglong),
        ("JobPeakPrivateCommitUsage", ctypes.c_ulonglong),
        ("JobPrivateCommitLimit", ctypes.c_ulonglong),
        ("JobTotalCommitLimit", ctypes.c_ulonglong),
    ]
#[repr(C, packed(4))]
pub struct MINIDUMP_PROCESS_VM_COUNTERS_2 {
    pub Revision: u16,
    pub Flags: u16,
    pub PageFaultCount: u32,
    pub PeakWorkingSetSize: u64,
    pub WorkingSetSize: u64,
    pub QuotaPeakPagedPoolUsage: u64,
    pub QuotaPagedPoolUsage: u64,
    pub QuotaPeakNonPagedPoolUsage: u64,
    pub QuotaNonPagedPoolUsage: u64,
    pub PagefileUsage: u64,
    pub PeakPagefileUsage: u64,
    pub PeakVirtualSize: u64,
    pub VirtualSize: u64,
    pub PrivateUsage: u64,
    pub PrivateWorkingSetSize: u64,
    pub SharedCommitUsage: u64,
    pub JobSharedCommitUsage: u64,
    pub JobPrivateCommitUsage: u64,
    pub JobPeakPrivateCommitUsage: u64,
    pub JobPrivateCommitLimit: u64,
    pub JobTotalCommitLimit: u64,
}
import "golang.org/x/sys/windows"

type MINIDUMP_PROCESS_VM_COUNTERS_2 struct {
	Revision uint16
	Flags uint16
	PageFaultCount uint32
	PeakWorkingSetSize uint64
	WorkingSetSize uint64
	QuotaPeakPagedPoolUsage uint64
	QuotaPagedPoolUsage uint64
	QuotaPeakNonPagedPoolUsage uint64
	QuotaNonPagedPoolUsage uint64
	PagefileUsage uint64
	PeakPagefileUsage uint64
	PeakVirtualSize uint64
	VirtualSize uint64
	PrivateUsage uint64
	PrivateWorkingSetSize uint64
	SharedCommitUsage uint64
	JobSharedCommitUsage uint64
	JobPrivateCommitUsage uint64
	JobPeakPrivateCommitUsage uint64
	JobPrivateCommitLimit uint64
	JobTotalCommitLimit uint64
}
type
  MINIDUMP_PROCESS_VM_COUNTERS_2 = packed record
    Revision: Word;
    Flags: Word;
    PageFaultCount: DWORD;
    PeakWorkingSetSize: UInt64;
    WorkingSetSize: UInt64;
    QuotaPeakPagedPoolUsage: UInt64;
    QuotaPagedPoolUsage: UInt64;
    QuotaPeakNonPagedPoolUsage: UInt64;
    QuotaNonPagedPoolUsage: UInt64;
    PagefileUsage: UInt64;
    PeakPagefileUsage: UInt64;
    PeakVirtualSize: UInt64;
    VirtualSize: UInt64;
    PrivateUsage: UInt64;
    PrivateWorkingSetSize: UInt64;
    SharedCommitUsage: UInt64;
    JobSharedCommitUsage: UInt64;
    JobPrivateCommitUsage: UInt64;
    JobPeakPrivateCommitUsage: UInt64;
    JobPrivateCommitLimit: UInt64;
    JobTotalCommitLimit: UInt64;
  end;
const MINIDUMP_PROCESS_VM_COUNTERS_2 = extern struct {
    Revision: u16,
    Flags: u16,
    PageFaultCount: u32,
    PeakWorkingSetSize: u64,
    WorkingSetSize: u64,
    QuotaPeakPagedPoolUsage: u64,
    QuotaPagedPoolUsage: u64,
    QuotaPeakNonPagedPoolUsage: u64,
    QuotaNonPagedPoolUsage: u64,
    PagefileUsage: u64,
    PeakPagefileUsage: u64,
    PeakVirtualSize: u64,
    VirtualSize: u64,
    PrivateUsage: u64,
    PrivateWorkingSetSize: u64,
    SharedCommitUsage: u64,
    JobSharedCommitUsage: u64,
    JobPrivateCommitUsage: u64,
    JobPeakPrivateCommitUsage: u64,
    JobPrivateCommitLimit: u64,
    JobTotalCommitLimit: u64,
};
type
  MINIDUMP_PROCESS_VM_COUNTERS_2 {.packed.} = object
    Revision: uint16
    Flags: uint16
    PageFaultCount: uint32
    PeakWorkingSetSize: uint64
    WorkingSetSize: uint64
    QuotaPeakPagedPoolUsage: uint64
    QuotaPagedPoolUsage: uint64
    QuotaPeakNonPagedPoolUsage: uint64
    QuotaNonPagedPoolUsage: uint64
    PagefileUsage: uint64
    PeakPagefileUsage: uint64
    PeakVirtualSize: uint64
    VirtualSize: uint64
    PrivateUsage: uint64
    PrivateWorkingSetSize: uint64
    SharedCommitUsage: uint64
    JobSharedCommitUsage: uint64
    JobPrivateCommitUsage: uint64
    JobPeakPrivateCommitUsage: uint64
    JobPrivateCommitLimit: uint64
    JobTotalCommitLimit: uint64
align(4)
struct MINIDUMP_PROCESS_VM_COUNTERS_2
{
    ushort Revision;
    ushort Flags;
    uint PageFaultCount;
    ulong PeakWorkingSetSize;
    ulong WorkingSetSize;
    ulong QuotaPeakPagedPoolUsage;
    ulong QuotaPagedPoolUsage;
    ulong QuotaPeakNonPagedPoolUsage;
    ulong QuotaNonPagedPoolUsage;
    ulong PagefileUsage;
    ulong PeakPagefileUsage;
    ulong PeakVirtualSize;
    ulong VirtualSize;
    ulong PrivateUsage;
    ulong PrivateWorkingSetSize;
    ulong SharedCommitUsage;
    ulong JobSharedCommitUsage;
    ulong JobPrivateCommitUsage;
    ulong JobPeakPrivateCommitUsage;
    ulong JobPrivateCommitLimit;
    ulong JobTotalCommitLimit;
}

HSP用 定義

HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MINIDUMP_PROCESS_VM_COUNTERS_2 サイズ: 152 バイト(x64)
dim st, 38    ; 4byte整数×38(構造体サイズ 152 / 4 切り上げ)
; Revision : WORD (+0, 2byte)  wpoke st,0,値  /  値 = wpeek(st,0)
; Flags : WORD (+2, 2byte)  wpoke st,2,値  /  値 = wpeek(st,2)
; PageFaultCount : DWORD (+4, 4byte)  st.1 = 値  /  値 = st.1   (lpoke/lpeek も可)
; PeakWorkingSetSize : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; WorkingSetSize : ULONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; QuotaPeakPagedPoolUsage : ULONGLONG (+24, 8byte)  qpoke st,24,値 / qpeek(st,24)  ※IronHSPのみ。3.7/3.8は lpoke st,24,下位 : lpoke st,28,上位
; QuotaPagedPoolUsage : ULONGLONG (+32, 8byte)  qpoke st,32,値 / qpeek(st,32)  ※IronHSPのみ。3.7/3.8は lpoke st,32,下位 : lpoke st,36,上位
; QuotaPeakNonPagedPoolUsage : ULONGLONG (+40, 8byte)  qpoke st,40,値 / qpeek(st,40)  ※IronHSPのみ。3.7/3.8は lpoke st,40,下位 : lpoke st,44,上位
; QuotaNonPagedPoolUsage : ULONGLONG (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; PagefileUsage : ULONGLONG (+56, 8byte)  qpoke st,56,値 / qpeek(st,56)  ※IronHSPのみ。3.7/3.8は lpoke st,56,下位 : lpoke st,60,上位
; PeakPagefileUsage : ULONGLONG (+64, 8byte)  qpoke st,64,値 / qpeek(st,64)  ※IronHSPのみ。3.7/3.8は lpoke st,64,下位 : lpoke st,68,上位
; PeakVirtualSize : ULONGLONG (+72, 8byte)  qpoke st,72,値 / qpeek(st,72)  ※IronHSPのみ。3.7/3.8は lpoke st,72,下位 : lpoke st,76,上位
; VirtualSize : ULONGLONG (+80, 8byte)  qpoke st,80,値 / qpeek(st,80)  ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; PrivateUsage : ULONGLONG (+88, 8byte)  qpoke st,88,値 / qpeek(st,88)  ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; PrivateWorkingSetSize : ULONGLONG (+96, 8byte)  qpoke st,96,値 / qpeek(st,96)  ※IronHSPのみ。3.7/3.8は lpoke st,96,下位 : lpoke st,100,上位
; SharedCommitUsage : ULONGLONG (+104, 8byte)  qpoke st,104,値 / qpeek(st,104)  ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; JobSharedCommitUsage : ULONGLONG (+112, 8byte)  qpoke st,112,値 / qpeek(st,112)  ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; JobPrivateCommitUsage : ULONGLONG (+120, 8byte)  qpoke st,120,値 / qpeek(st,120)  ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; JobPeakPrivateCommitUsage : ULONGLONG (+128, 8byte)  qpoke st,128,値 / qpeek(st,128)  ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; JobPrivateCommitLimit : ULONGLONG (+136, 8byte)  qpoke st,136,値 / qpeek(st,136)  ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; JobTotalCommitLimit : ULONGLONG (+144, 8byte)  qpoke st,144,値 / qpeek(st,144)  ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MINIDUMP_PROCESS_VM_COUNTERS_2, pack=4
    #field short Revision
    #field short Flags
    #field int PageFaultCount
    #field int64 PeakWorkingSetSize
    #field int64 WorkingSetSize
    #field int64 QuotaPeakPagedPoolUsage
    #field int64 QuotaPagedPoolUsage
    #field int64 QuotaPeakNonPagedPoolUsage
    #field int64 QuotaNonPagedPoolUsage
    #field int64 PagefileUsage
    #field int64 PeakPagefileUsage
    #field int64 PeakVirtualSize
    #field int64 VirtualSize
    #field int64 PrivateUsage
    #field int64 PrivateWorkingSetSize
    #field int64 SharedCommitUsage
    #field int64 JobSharedCommitUsage
    #field int64 JobPrivateCommitUsage
    #field int64 JobPeakPrivateCommitUsage
    #field int64 JobPrivateCommitLimit
    #field int64 JobTotalCommitLimit
#endstruct

stdim st, MINIDUMP_PROCESS_VM_COUNTERS_2        ; NSTRUCT 変数を確保
st->Revision = 100
mes "Revision=" + st->Revision