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

MINIDUMP_SYSTEM_FILECACHE_INFORMATION

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

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

フィールド

フィールドサイズx64x86説明
CurrentSizeULONGLONG8+0+0現在のファイルキャッシュサイズ(バイト)。
PeakSizeULONGLONG8+8+8ファイルキャッシュのピークサイズ。
PageFaultCountDWORD4+16+16ファイルキャッシュのページフォルト数。
MinimumWorkingSetULONGLONG8+20+20最小ワーキングセットサイズ。
MaximumWorkingSetULONGLONG8+28+28最大ワーキングセットサイズ。
CurrentSizeIncludingTransitionInPagesULONGLONG8+36+36遷移ページを含む現在サイズ(ページ数)。
PeakSizeIncludingTransitionInPagesULONGLONG8+44+44遷移ページを含むピークサイズ(ページ数)。
TransitionRePurposeCountDWORD4+52+52遷移ページの再利用回数。
FlagsDWORD4+56+56ファイルキャッシュのフラグ。

各言語での定義

#include <windows.h>

// MINIDUMP_SYSTEM_FILECACHE_INFORMATION  (x64 60 / x86 60 バイト)
#pragma pack(push, 4)
typedef struct MINIDUMP_SYSTEM_FILECACHE_INFORMATION {
    ULONGLONG CurrentSize;
    ULONGLONG PeakSize;
    DWORD PageFaultCount;
    ULONGLONG MinimumWorkingSet;
    ULONGLONG MaximumWorkingSet;
    ULONGLONG CurrentSizeIncludingTransitionInPages;
    ULONGLONG PeakSizeIncludingTransitionInPages;
    DWORD TransitionRePurposeCount;
    DWORD Flags;
} MINIDUMP_SYSTEM_FILECACHE_INFORMATION;
#pragma pack(pop)
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct MINIDUMP_SYSTEM_FILECACHE_INFORMATION
{
    public ulong CurrentSize;
    public ulong PeakSize;
    public uint PageFaultCount;
    public ulong MinimumWorkingSet;
    public ulong MaximumWorkingSet;
    public ulong CurrentSizeIncludingTransitionInPages;
    public ulong PeakSizeIncludingTransitionInPages;
    public uint TransitionRePurposeCount;
    public uint Flags;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_SYSTEM_FILECACHE_INFORMATION
    Public CurrentSize As ULong
    Public PeakSize As ULong
    Public PageFaultCount As UInteger
    Public MinimumWorkingSet As ULong
    Public MaximumWorkingSet As ULong
    Public CurrentSizeIncludingTransitionInPages As ULong
    Public PeakSizeIncludingTransitionInPages As ULong
    Public TransitionRePurposeCount As UInteger
    Public Flags As UInteger
End Structure
import ctypes
from ctypes import wintypes

class MINIDUMP_SYSTEM_FILECACHE_INFORMATION(ctypes.Structure):
    _pack_ = 4
    _fields_ = [
        ("CurrentSize", ctypes.c_ulonglong),
        ("PeakSize", ctypes.c_ulonglong),
        ("PageFaultCount", wintypes.DWORD),
        ("MinimumWorkingSet", ctypes.c_ulonglong),
        ("MaximumWorkingSet", ctypes.c_ulonglong),
        ("CurrentSizeIncludingTransitionInPages", ctypes.c_ulonglong),
        ("PeakSizeIncludingTransitionInPages", ctypes.c_ulonglong),
        ("TransitionRePurposeCount", wintypes.DWORD),
        ("Flags", wintypes.DWORD),
    ]
#[repr(C, packed(4))]
pub struct MINIDUMP_SYSTEM_FILECACHE_INFORMATION {
    pub CurrentSize: u64,
    pub PeakSize: u64,
    pub PageFaultCount: u32,
    pub MinimumWorkingSet: u64,
    pub MaximumWorkingSet: u64,
    pub CurrentSizeIncludingTransitionInPages: u64,
    pub PeakSizeIncludingTransitionInPages: u64,
    pub TransitionRePurposeCount: u32,
    pub Flags: u32,
}
import "golang.org/x/sys/windows"

type MINIDUMP_SYSTEM_FILECACHE_INFORMATION struct {
	CurrentSize uint64
	PeakSize uint64
	PageFaultCount uint32
	MinimumWorkingSet uint64
	MaximumWorkingSet uint64
	CurrentSizeIncludingTransitionInPages uint64
	PeakSizeIncludingTransitionInPages uint64
	TransitionRePurposeCount uint32
	Flags uint32
}
type
  MINIDUMP_SYSTEM_FILECACHE_INFORMATION = packed record
    CurrentSize: UInt64;
    PeakSize: UInt64;
    PageFaultCount: DWORD;
    MinimumWorkingSet: UInt64;
    MaximumWorkingSet: UInt64;
    CurrentSizeIncludingTransitionInPages: UInt64;
    PeakSizeIncludingTransitionInPages: UInt64;
    TransitionRePurposeCount: DWORD;
    Flags: DWORD;
  end;
const MINIDUMP_SYSTEM_FILECACHE_INFORMATION = extern struct {
    CurrentSize: u64,
    PeakSize: u64,
    PageFaultCount: u32,
    MinimumWorkingSet: u64,
    MaximumWorkingSet: u64,
    CurrentSizeIncludingTransitionInPages: u64,
    PeakSizeIncludingTransitionInPages: u64,
    TransitionRePurposeCount: u32,
    Flags: u32,
};
type
  MINIDUMP_SYSTEM_FILECACHE_INFORMATION {.packed.} = object
    CurrentSize: uint64
    PeakSize: uint64
    PageFaultCount: uint32
    MinimumWorkingSet: uint64
    MaximumWorkingSet: uint64
    CurrentSizeIncludingTransitionInPages: uint64
    PeakSizeIncludingTransitionInPages: uint64
    TransitionRePurposeCount: uint32
    Flags: uint32
align(4)
struct MINIDUMP_SYSTEM_FILECACHE_INFORMATION
{
    ulong CurrentSize;
    ulong PeakSize;
    uint PageFaultCount;
    ulong MinimumWorkingSet;
    ulong MaximumWorkingSet;
    ulong CurrentSizeIncludingTransitionInPages;
    ulong PeakSizeIncludingTransitionInPages;
    uint TransitionRePurposeCount;
    uint Flags;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; MINIDUMP_SYSTEM_FILECACHE_INFORMATION サイズ: 60 バイト(x64)
dim st, 15    ; 4byte整数×15(構造体サイズ 60 / 4 切り上げ)
; CurrentSize : ULONGLONG (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; PeakSize : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; PageFaultCount : DWORD (+16, 4byte)  st.4 = 値  /  値 = st.4   (lpoke/lpeek も可)
; MinimumWorkingSet : ULONGLONG (+20, 8byte)  qpoke st,20,値 / qpeek(st,20)  ※IronHSPのみ。3.7/3.8は lpoke st,20,下位 : lpoke st,24,上位
; MaximumWorkingSet : ULONGLONG (+28, 8byte)  qpoke st,28,値 / qpeek(st,28)  ※IronHSPのみ。3.7/3.8は lpoke st,28,下位 : lpoke st,32,上位
; CurrentSizeIncludingTransitionInPages : ULONGLONG (+36, 8byte)  qpoke st,36,値 / qpeek(st,36)  ※IronHSPのみ。3.7/3.8は lpoke st,36,下位 : lpoke st,40,上位
; PeakSizeIncludingTransitionInPages : ULONGLONG (+44, 8byte)  qpoke st,44,値 / qpeek(st,44)  ※IronHSPのみ。3.7/3.8は lpoke st,44,下位 : lpoke st,48,上位
; TransitionRePurposeCount : DWORD (+52, 4byte)  st.13 = 値  /  値 = st.13   (lpoke/lpeek も可)
; Flags : DWORD (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global MINIDUMP_SYSTEM_FILECACHE_INFORMATION, pack=4
    #field int64 CurrentSize
    #field int64 PeakSize
    #field int PageFaultCount
    #field int64 MinimumWorkingSet
    #field int64 MaximumWorkingSet
    #field int64 CurrentSizeIncludingTransitionInPages
    #field int64 PeakSizeIncludingTransitionInPages
    #field int TransitionRePurposeCount
    #field int Flags
#endstruct

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