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

MINIDUMP_PROCESS_VM_COUNTERS_1

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

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

フィールド

フィールドサイズx64x86説明
RevisionWORD2+0+0この構造体のリビジョン番号。
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ページファイル使用量のピーク。
PrivateUsageULONGLONG8+72+72プライベートコミットの使用量(バイト)。

各言語での定義

#include <windows.h>

// MINIDUMP_PROCESS_VM_COUNTERS_1  (x64 80 / x86 80 バイト)
#pragma pack(push, 4)
typedef struct MINIDUMP_PROCESS_VM_COUNTERS_1 {
    WORD Revision;
    DWORD PageFaultCount;
    ULONGLONG PeakWorkingSetSize;
    ULONGLONG WorkingSetSize;
    ULONGLONG QuotaPeakPagedPoolUsage;
    ULONGLONG QuotaPagedPoolUsage;
    ULONGLONG QuotaPeakNonPagedPoolUsage;
    ULONGLONG QuotaNonPagedPoolUsage;
    ULONGLONG PagefileUsage;
    ULONGLONG PeakPagefileUsage;
    ULONGLONG PrivateUsage;
} MINIDUMP_PROCESS_VM_COUNTERS_1;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct MINIDUMP_PROCESS_VM_COUNTERS_1
{
    public ushort Revision;
    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 PrivateUsage;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_PROCESS_VM_COUNTERS_1
    Public Revision 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 PrivateUsage As ULong
End Structure
import ctypes
from ctypes import wintypes

class MINIDUMP_PROCESS_VM_COUNTERS_1(ctypes.Structure):
    _pack_ = 4
    _fields_ = [
        ("Revision", 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),
        ("PrivateUsage", ctypes.c_ulonglong),
    ]
#[repr(C, packed(4))]
pub struct MINIDUMP_PROCESS_VM_COUNTERS_1 {
    pub Revision: 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 PrivateUsage: u64,
}
import "golang.org/x/sys/windows"

type MINIDUMP_PROCESS_VM_COUNTERS_1 struct {
	Revision uint16
	PageFaultCount uint32
	PeakWorkingSetSize uint64
	WorkingSetSize uint64
	QuotaPeakPagedPoolUsage uint64
	QuotaPagedPoolUsage uint64
	QuotaPeakNonPagedPoolUsage uint64
	QuotaNonPagedPoolUsage uint64
	PagefileUsage uint64
	PeakPagefileUsage uint64
	PrivateUsage uint64
}
type
  MINIDUMP_PROCESS_VM_COUNTERS_1 = packed record
    Revision: Word;
    PageFaultCount: DWORD;
    PeakWorkingSetSize: UInt64;
    WorkingSetSize: UInt64;
    QuotaPeakPagedPoolUsage: UInt64;
    QuotaPagedPoolUsage: UInt64;
    QuotaPeakNonPagedPoolUsage: UInt64;
    QuotaNonPagedPoolUsage: UInt64;
    PagefileUsage: UInt64;
    PeakPagefileUsage: UInt64;
    PrivateUsage: UInt64;
  end;
const MINIDUMP_PROCESS_VM_COUNTERS_1 = extern struct {
    Revision: u16,
    PageFaultCount: u32,
    PeakWorkingSetSize: u64,
    WorkingSetSize: u64,
    QuotaPeakPagedPoolUsage: u64,
    QuotaPagedPoolUsage: u64,
    QuotaPeakNonPagedPoolUsage: u64,
    QuotaNonPagedPoolUsage: u64,
    PagefileUsage: u64,
    PeakPagefileUsage: u64,
    PrivateUsage: u64,
};
type
  MINIDUMP_PROCESS_VM_COUNTERS_1 {.packed.} = object
    Revision: uint16
    PageFaultCount: uint32
    PeakWorkingSetSize: uint64
    WorkingSetSize: uint64
    QuotaPeakPagedPoolUsage: uint64
    QuotaPagedPoolUsage: uint64
    QuotaPeakNonPagedPoolUsage: uint64
    QuotaNonPagedPoolUsage: uint64
    PagefileUsage: uint64
    PeakPagefileUsage: uint64
    PrivateUsage: uint64
align(4)
struct MINIDUMP_PROCESS_VM_COUNTERS_1
{
    ushort Revision;
    uint PageFaultCount;
    ulong PeakWorkingSetSize;
    ulong WorkingSetSize;
    ulong QuotaPeakPagedPoolUsage;
    ulong QuotaPagedPoolUsage;
    ulong QuotaPeakNonPagedPoolUsage;
    ulong QuotaNonPagedPoolUsage;
    ulong PagefileUsage;
    ulong PeakPagefileUsage;
    ulong PrivateUsage;
}

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_1 サイズ: 80 バイト(x64)
dim st, 20    ; 4byte整数×20(構造体サイズ 80 / 4 切り上げ)
; Revision : WORD (+0, 2byte)  wpoke st,0,値  /  値 = wpeek(st,0)
; 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,上位
; PrivateUsage : ULONGLONG (+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 MINIDUMP_PROCESS_VM_COUNTERS_1, pack=4
    #field short Revision
    #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 PrivateUsage
#endstruct

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