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

MINIDUMP_SYSTEM_MEMORY_INFO_2

構造体
サイズx64: 524 バイト / x86: 524 バイト

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

フィールド

フィールドサイズx64x86説明
RevisionWORD2+0+0この構造体のリビジョン番号。
FlagsWORD2+2+2有効なフィールドを示すフラグ。
BasicInfoMINIDUMP_SYSTEM_BASIC_INFORMATION52+4+4システム基本情報(MINIDUMP_SYSTEM_BASIC_INFORMATION)。
FileCacheInfoMINIDUMP_SYSTEM_FILECACHE_INFORMATION60+56+56ファイルキャッシュ情報(MINIDUMP_SYSTEM_FILECACHE_INFORMATION)。
BasicPerfInfoMINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION32+116+116基本パフォーマンス情報。
PerfInfoMINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2376+148+148詳細パフォーマンス情報(MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2)。

各言語での定義

#include <windows.h>

// MINIDUMP_SYSTEM_BASIC_INFORMATION  (x64 52 / x86 52 バイト)
#pragma pack(push, 4)
typedef struct MINIDUMP_SYSTEM_BASIC_INFORMATION {
    DWORD TimerResolution;
    DWORD PageSize;
    DWORD NumberOfPhysicalPages;
    DWORD LowestPhysicalPageNumber;
    DWORD HighestPhysicalPageNumber;
    DWORD AllocationGranularity;
    ULONGLONG MinimumUserModeAddress;
    ULONGLONG MaximumUserModeAddress;
    ULONGLONG ActiveProcessorsAffinityMask;
    DWORD NumberOfProcessors;
} MINIDUMP_SYSTEM_BASIC_INFORMATION;
#pragma pack(pop)

// 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)

// MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION  (x64 32 / x86 32 バイト)
#pragma pack(push, 4)
typedef struct MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION {
    ULONGLONG AvailablePages;
    ULONGLONG CommittedPages;
    ULONGLONG CommitLimit;
    ULONGLONG PeakCommitment;
} MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION;
#pragma pack(pop)

// MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2  (x64 376 / x86 376 バイト)
#pragma pack(push, 4)
typedef struct MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 {
    ULONGLONG IdleProcessTime;
    ULONGLONG IoReadTransferCount;
    ULONGLONG IoWriteTransferCount;
    ULONGLONG IoOtherTransferCount;
    DWORD IoReadOperationCount;
    DWORD IoWriteOperationCount;
    DWORD IoOtherOperationCount;
    DWORD AvailablePages;
    DWORD CommittedPages;
    DWORD CommitLimit;
    DWORD PeakCommitment;
    DWORD PageFaultCount;
    DWORD CopyOnWriteCount;
    DWORD TransitionCount;
    DWORD CacheTransitionCount;
    DWORD DemandZeroCount;
    DWORD PageReadCount;
    DWORD PageReadIoCount;
    DWORD CacheReadCount;
    DWORD CacheIoCount;
    DWORD DirtyPagesWriteCount;
    DWORD DirtyWriteIoCount;
    DWORD MappedPagesWriteCount;
    DWORD MappedWriteIoCount;
    DWORD PagedPoolPages;
    DWORD NonPagedPoolPages;
    DWORD PagedPoolAllocs;
    DWORD PagedPoolFrees;
    DWORD NonPagedPoolAllocs;
    DWORD NonPagedPoolFrees;
    DWORD FreeSystemPtes;
    DWORD ResidentSystemCodePage;
    DWORD TotalSystemDriverPages;
    DWORD TotalSystemCodePages;
    DWORD NonPagedPoolLookasideHits;
    DWORD PagedPoolLookasideHits;
    DWORD AvailablePagedPoolPages;
    DWORD ResidentSystemCachePage;
    DWORD ResidentPagedPoolPage;
    DWORD ResidentSystemDriverPage;
    DWORD CcFastReadNoWait;
    DWORD CcFastReadWait;
    DWORD CcFastReadResourceMiss;
    DWORD CcFastReadNotPossible;
    DWORD CcFastMdlReadNoWait;
    DWORD CcFastMdlReadWait;
    DWORD CcFastMdlReadResourceMiss;
    DWORD CcFastMdlReadNotPossible;
    DWORD CcMapDataNoWait;
    DWORD CcMapDataWait;
    DWORD CcMapDataNoWaitMiss;
    DWORD CcMapDataWaitMiss;
    DWORD CcPinMappedDataCount;
    DWORD CcPinReadNoWait;
    DWORD CcPinReadWait;
    DWORD CcPinReadNoWaitMiss;
    DWORD CcPinReadWaitMiss;
    DWORD CcCopyReadNoWait;
    DWORD CcCopyReadWait;
    DWORD CcCopyReadNoWaitMiss;
    DWORD CcCopyReadWaitMiss;
    DWORD CcMdlReadNoWait;
    DWORD CcMdlReadWait;
    DWORD CcMdlReadNoWaitMiss;
    DWORD CcMdlReadWaitMiss;
    DWORD CcReadAheadIos;
    DWORD CcLazyWriteIos;
    DWORD CcLazyWritePages;
    DWORD CcDataFlushes;
    DWORD CcDataPages;
    DWORD ContextSwitches;
    DWORD FirstLevelTbFills;
    DWORD SecondLevelTbFills;
    DWORD SystemCalls;
    ULONGLONG CcTotalDirtyPages;
    ULONGLONG CcDirtyPageThreshold;
    LONGLONG ResidentAvailablePages;
    ULONGLONG SharedCommittedPages;
    ULONGLONG MdlPagesAllocated;
    ULONGLONG PfnDatabaseCommittedPages;
    ULONGLONG SystemPageTableCommittedPages;
    ULONGLONG ContiguousPagesAllocated;
} MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2;
#pragma pack(pop)

// MINIDUMP_SYSTEM_MEMORY_INFO_2  (x64 524 / x86 524 バイト)
typedef struct MINIDUMP_SYSTEM_MEMORY_INFO_2 {
    WORD Revision;
    WORD Flags;
    MINIDUMP_SYSTEM_BASIC_INFORMATION BasicInfo;
    MINIDUMP_SYSTEM_FILECACHE_INFORMATION FileCacheInfo;
    MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION BasicPerfInfo;
    MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 PerfInfo;
} MINIDUMP_SYSTEM_MEMORY_INFO_2;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct MINIDUMP_SYSTEM_BASIC_INFORMATION
{
    public uint TimerResolution;
    public uint PageSize;
    public uint NumberOfPhysicalPages;
    public uint LowestPhysicalPageNumber;
    public uint HighestPhysicalPageNumber;
    public uint AllocationGranularity;
    public ulong MinimumUserModeAddress;
    public ulong MaximumUserModeAddress;
    public ulong ActiveProcessorsAffinityMask;
    public uint NumberOfProcessors;
}

[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;
}

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION
{
    public ulong AvailablePages;
    public ulong CommittedPages;
    public ulong CommitLimit;
    public ulong PeakCommitment;
}

[StructLayout(LayoutKind.Sequential, Pack = 4, CharSet = CharSet.Unicode)]
public struct MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2
{
    public ulong IdleProcessTime;
    public ulong IoReadTransferCount;
    public ulong IoWriteTransferCount;
    public ulong IoOtherTransferCount;
    public uint IoReadOperationCount;
    public uint IoWriteOperationCount;
    public uint IoOtherOperationCount;
    public uint AvailablePages;
    public uint CommittedPages;
    public uint CommitLimit;
    public uint PeakCommitment;
    public uint PageFaultCount;
    public uint CopyOnWriteCount;
    public uint TransitionCount;
    public uint CacheTransitionCount;
    public uint DemandZeroCount;
    public uint PageReadCount;
    public uint PageReadIoCount;
    public uint CacheReadCount;
    public uint CacheIoCount;
    public uint DirtyPagesWriteCount;
    public uint DirtyWriteIoCount;
    public uint MappedPagesWriteCount;
    public uint MappedWriteIoCount;
    public uint PagedPoolPages;
    public uint NonPagedPoolPages;
    public uint PagedPoolAllocs;
    public uint PagedPoolFrees;
    public uint NonPagedPoolAllocs;
    public uint NonPagedPoolFrees;
    public uint FreeSystemPtes;
    public uint ResidentSystemCodePage;
    public uint TotalSystemDriverPages;
    public uint TotalSystemCodePages;
    public uint NonPagedPoolLookasideHits;
    public uint PagedPoolLookasideHits;
    public uint AvailablePagedPoolPages;
    public uint ResidentSystemCachePage;
    public uint ResidentPagedPoolPage;
    public uint ResidentSystemDriverPage;
    public uint CcFastReadNoWait;
    public uint CcFastReadWait;
    public uint CcFastReadResourceMiss;
    public uint CcFastReadNotPossible;
    public uint CcFastMdlReadNoWait;
    public uint CcFastMdlReadWait;
    public uint CcFastMdlReadResourceMiss;
    public uint CcFastMdlReadNotPossible;
    public uint CcMapDataNoWait;
    public uint CcMapDataWait;
    public uint CcMapDataNoWaitMiss;
    public uint CcMapDataWaitMiss;
    public uint CcPinMappedDataCount;
    public uint CcPinReadNoWait;
    public uint CcPinReadWait;
    public uint CcPinReadNoWaitMiss;
    public uint CcPinReadWaitMiss;
    public uint CcCopyReadNoWait;
    public uint CcCopyReadWait;
    public uint CcCopyReadNoWaitMiss;
    public uint CcCopyReadWaitMiss;
    public uint CcMdlReadNoWait;
    public uint CcMdlReadWait;
    public uint CcMdlReadNoWaitMiss;
    public uint CcMdlReadWaitMiss;
    public uint CcReadAheadIos;
    public uint CcLazyWriteIos;
    public uint CcLazyWritePages;
    public uint CcDataFlushes;
    public uint CcDataPages;
    public uint ContextSwitches;
    public uint FirstLevelTbFills;
    public uint SecondLevelTbFills;
    public uint SystemCalls;
    public ulong CcTotalDirtyPages;
    public ulong CcDirtyPageThreshold;
    public long ResidentAvailablePages;
    public ulong SharedCommittedPages;
    public ulong MdlPagesAllocated;
    public ulong PfnDatabaseCommittedPages;
    public ulong SystemPageTableCommittedPages;
    public ulong ContiguousPagesAllocated;
}

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct MINIDUMP_SYSTEM_MEMORY_INFO_2
{
    public ushort Revision;
    public ushort Flags;
    public MINIDUMP_SYSTEM_BASIC_INFORMATION BasicInfo;
    public MINIDUMP_SYSTEM_FILECACHE_INFORMATION FileCacheInfo;
    public MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION BasicPerfInfo;
    public MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 PerfInfo;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_SYSTEM_BASIC_INFORMATION
    Public TimerResolution As UInteger
    Public PageSize As UInteger
    Public NumberOfPhysicalPages As UInteger
    Public LowestPhysicalPageNumber As UInteger
    Public HighestPhysicalPageNumber As UInteger
    Public AllocationGranularity As UInteger
    Public MinimumUserModeAddress As ULong
    Public MaximumUserModeAddress As ULong
    Public ActiveProcessorsAffinityMask As ULong
    Public NumberOfProcessors As UInteger
End Structure

<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

<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION
    Public AvailablePages As ULong
    Public CommittedPages As ULong
    Public CommitLimit As ULong
    Public PeakCommitment As ULong
End Structure

<StructLayout(LayoutKind.Sequential, Pack:=4, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2
    Public IdleProcessTime As ULong
    Public IoReadTransferCount As ULong
    Public IoWriteTransferCount As ULong
    Public IoOtherTransferCount As ULong
    Public IoReadOperationCount As UInteger
    Public IoWriteOperationCount As UInteger
    Public IoOtherOperationCount As UInteger
    Public AvailablePages As UInteger
    Public CommittedPages As UInteger
    Public CommitLimit As UInteger
    Public PeakCommitment As UInteger
    Public PageFaultCount As UInteger
    Public CopyOnWriteCount As UInteger
    Public TransitionCount As UInteger
    Public CacheTransitionCount As UInteger
    Public DemandZeroCount As UInteger
    Public PageReadCount As UInteger
    Public PageReadIoCount As UInteger
    Public CacheReadCount As UInteger
    Public CacheIoCount As UInteger
    Public DirtyPagesWriteCount As UInteger
    Public DirtyWriteIoCount As UInteger
    Public MappedPagesWriteCount As UInteger
    Public MappedWriteIoCount As UInteger
    Public PagedPoolPages As UInteger
    Public NonPagedPoolPages As UInteger
    Public PagedPoolAllocs As UInteger
    Public PagedPoolFrees As UInteger
    Public NonPagedPoolAllocs As UInteger
    Public NonPagedPoolFrees As UInteger
    Public FreeSystemPtes As UInteger
    Public ResidentSystemCodePage As UInteger
    Public TotalSystemDriverPages As UInteger
    Public TotalSystemCodePages As UInteger
    Public NonPagedPoolLookasideHits As UInteger
    Public PagedPoolLookasideHits As UInteger
    Public AvailablePagedPoolPages As UInteger
    Public ResidentSystemCachePage As UInteger
    Public ResidentPagedPoolPage As UInteger
    Public ResidentSystemDriverPage As UInteger
    Public CcFastReadNoWait As UInteger
    Public CcFastReadWait As UInteger
    Public CcFastReadResourceMiss As UInteger
    Public CcFastReadNotPossible As UInteger
    Public CcFastMdlReadNoWait As UInteger
    Public CcFastMdlReadWait As UInteger
    Public CcFastMdlReadResourceMiss As UInteger
    Public CcFastMdlReadNotPossible As UInteger
    Public CcMapDataNoWait As UInteger
    Public CcMapDataWait As UInteger
    Public CcMapDataNoWaitMiss As UInteger
    Public CcMapDataWaitMiss As UInteger
    Public CcPinMappedDataCount As UInteger
    Public CcPinReadNoWait As UInteger
    Public CcPinReadWait As UInteger
    Public CcPinReadNoWaitMiss As UInteger
    Public CcPinReadWaitMiss As UInteger
    Public CcCopyReadNoWait As UInteger
    Public CcCopyReadWait As UInteger
    Public CcCopyReadNoWaitMiss As UInteger
    Public CcCopyReadWaitMiss As UInteger
    Public CcMdlReadNoWait As UInteger
    Public CcMdlReadWait As UInteger
    Public CcMdlReadNoWaitMiss As UInteger
    Public CcMdlReadWaitMiss As UInteger
    Public CcReadAheadIos As UInteger
    Public CcLazyWriteIos As UInteger
    Public CcLazyWritePages As UInteger
    Public CcDataFlushes As UInteger
    Public CcDataPages As UInteger
    Public ContextSwitches As UInteger
    Public FirstLevelTbFills As UInteger
    Public SecondLevelTbFills As UInteger
    Public SystemCalls As UInteger
    Public CcTotalDirtyPages As ULong
    Public CcDirtyPageThreshold As ULong
    Public ResidentAvailablePages As Long
    Public SharedCommittedPages As ULong
    Public MdlPagesAllocated As ULong
    Public PfnDatabaseCommittedPages As ULong
    Public SystemPageTableCommittedPages As ULong
    Public ContiguousPagesAllocated As ULong
End Structure

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure MINIDUMP_SYSTEM_MEMORY_INFO_2
    Public Revision As UShort
    Public Flags As UShort
    Public BasicInfo As MINIDUMP_SYSTEM_BASIC_INFORMATION
    Public FileCacheInfo As MINIDUMP_SYSTEM_FILECACHE_INFORMATION
    Public BasicPerfInfo As MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION
    Public PerfInfo As MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2
End Structure
import ctypes
from ctypes import wintypes

class MINIDUMP_SYSTEM_BASIC_INFORMATION(ctypes.Structure):
    _pack_ = 4
    _fields_ = [
        ("TimerResolution", wintypes.DWORD),
        ("PageSize", wintypes.DWORD),
        ("NumberOfPhysicalPages", wintypes.DWORD),
        ("LowestPhysicalPageNumber", wintypes.DWORD),
        ("HighestPhysicalPageNumber", wintypes.DWORD),
        ("AllocationGranularity", wintypes.DWORD),
        ("MinimumUserModeAddress", ctypes.c_ulonglong),
        ("MaximumUserModeAddress", ctypes.c_ulonglong),
        ("ActiveProcessorsAffinityMask", ctypes.c_ulonglong),
        ("NumberOfProcessors", wintypes.DWORD),
    ]

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),
    ]

class MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION(ctypes.Structure):
    _pack_ = 4
    _fields_ = [
        ("AvailablePages", ctypes.c_ulonglong),
        ("CommittedPages", ctypes.c_ulonglong),
        ("CommitLimit", ctypes.c_ulonglong),
        ("PeakCommitment", ctypes.c_ulonglong),
    ]

class MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2(ctypes.Structure):
    _pack_ = 4
    _fields_ = [
        ("IdleProcessTime", ctypes.c_ulonglong),
        ("IoReadTransferCount", ctypes.c_ulonglong),
        ("IoWriteTransferCount", ctypes.c_ulonglong),
        ("IoOtherTransferCount", ctypes.c_ulonglong),
        ("IoReadOperationCount", wintypes.DWORD),
        ("IoWriteOperationCount", wintypes.DWORD),
        ("IoOtherOperationCount", wintypes.DWORD),
        ("AvailablePages", wintypes.DWORD),
        ("CommittedPages", wintypes.DWORD),
        ("CommitLimit", wintypes.DWORD),
        ("PeakCommitment", wintypes.DWORD),
        ("PageFaultCount", wintypes.DWORD),
        ("CopyOnWriteCount", wintypes.DWORD),
        ("TransitionCount", wintypes.DWORD),
        ("CacheTransitionCount", wintypes.DWORD),
        ("DemandZeroCount", wintypes.DWORD),
        ("PageReadCount", wintypes.DWORD),
        ("PageReadIoCount", wintypes.DWORD),
        ("CacheReadCount", wintypes.DWORD),
        ("CacheIoCount", wintypes.DWORD),
        ("DirtyPagesWriteCount", wintypes.DWORD),
        ("DirtyWriteIoCount", wintypes.DWORD),
        ("MappedPagesWriteCount", wintypes.DWORD),
        ("MappedWriteIoCount", wintypes.DWORD),
        ("PagedPoolPages", wintypes.DWORD),
        ("NonPagedPoolPages", wintypes.DWORD),
        ("PagedPoolAllocs", wintypes.DWORD),
        ("PagedPoolFrees", wintypes.DWORD),
        ("NonPagedPoolAllocs", wintypes.DWORD),
        ("NonPagedPoolFrees", wintypes.DWORD),
        ("FreeSystemPtes", wintypes.DWORD),
        ("ResidentSystemCodePage", wintypes.DWORD),
        ("TotalSystemDriverPages", wintypes.DWORD),
        ("TotalSystemCodePages", wintypes.DWORD),
        ("NonPagedPoolLookasideHits", wintypes.DWORD),
        ("PagedPoolLookasideHits", wintypes.DWORD),
        ("AvailablePagedPoolPages", wintypes.DWORD),
        ("ResidentSystemCachePage", wintypes.DWORD),
        ("ResidentPagedPoolPage", wintypes.DWORD),
        ("ResidentSystemDriverPage", wintypes.DWORD),
        ("CcFastReadNoWait", wintypes.DWORD),
        ("CcFastReadWait", wintypes.DWORD),
        ("CcFastReadResourceMiss", wintypes.DWORD),
        ("CcFastReadNotPossible", wintypes.DWORD),
        ("CcFastMdlReadNoWait", wintypes.DWORD),
        ("CcFastMdlReadWait", wintypes.DWORD),
        ("CcFastMdlReadResourceMiss", wintypes.DWORD),
        ("CcFastMdlReadNotPossible", wintypes.DWORD),
        ("CcMapDataNoWait", wintypes.DWORD),
        ("CcMapDataWait", wintypes.DWORD),
        ("CcMapDataNoWaitMiss", wintypes.DWORD),
        ("CcMapDataWaitMiss", wintypes.DWORD),
        ("CcPinMappedDataCount", wintypes.DWORD),
        ("CcPinReadNoWait", wintypes.DWORD),
        ("CcPinReadWait", wintypes.DWORD),
        ("CcPinReadNoWaitMiss", wintypes.DWORD),
        ("CcPinReadWaitMiss", wintypes.DWORD),
        ("CcCopyReadNoWait", wintypes.DWORD),
        ("CcCopyReadWait", wintypes.DWORD),
        ("CcCopyReadNoWaitMiss", wintypes.DWORD),
        ("CcCopyReadWaitMiss", wintypes.DWORD),
        ("CcMdlReadNoWait", wintypes.DWORD),
        ("CcMdlReadWait", wintypes.DWORD),
        ("CcMdlReadNoWaitMiss", wintypes.DWORD),
        ("CcMdlReadWaitMiss", wintypes.DWORD),
        ("CcReadAheadIos", wintypes.DWORD),
        ("CcLazyWriteIos", wintypes.DWORD),
        ("CcLazyWritePages", wintypes.DWORD),
        ("CcDataFlushes", wintypes.DWORD),
        ("CcDataPages", wintypes.DWORD),
        ("ContextSwitches", wintypes.DWORD),
        ("FirstLevelTbFills", wintypes.DWORD),
        ("SecondLevelTbFills", wintypes.DWORD),
        ("SystemCalls", wintypes.DWORD),
        ("CcTotalDirtyPages", ctypes.c_ulonglong),
        ("CcDirtyPageThreshold", ctypes.c_ulonglong),
        ("ResidentAvailablePages", ctypes.c_longlong),
        ("SharedCommittedPages", ctypes.c_ulonglong),
        ("MdlPagesAllocated", ctypes.c_ulonglong),
        ("PfnDatabaseCommittedPages", ctypes.c_ulonglong),
        ("SystemPageTableCommittedPages", ctypes.c_ulonglong),
        ("ContiguousPagesAllocated", ctypes.c_ulonglong),
    ]

class MINIDUMP_SYSTEM_MEMORY_INFO_2(ctypes.Structure):
    _fields_ = [
        ("Revision", ctypes.c_ushort),
        ("Flags", ctypes.c_ushort),
        ("BasicInfo", MINIDUMP_SYSTEM_BASIC_INFORMATION),
        ("FileCacheInfo", MINIDUMP_SYSTEM_FILECACHE_INFORMATION),
        ("BasicPerfInfo", MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION),
        ("PerfInfo", MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2),
    ]
#[repr(C, packed(4))]
pub struct MINIDUMP_SYSTEM_BASIC_INFORMATION {
    pub TimerResolution: u32,
    pub PageSize: u32,
    pub NumberOfPhysicalPages: u32,
    pub LowestPhysicalPageNumber: u32,
    pub HighestPhysicalPageNumber: u32,
    pub AllocationGranularity: u32,
    pub MinimumUserModeAddress: u64,
    pub MaximumUserModeAddress: u64,
    pub ActiveProcessorsAffinityMask: u64,
    pub NumberOfProcessors: u32,
}

#[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,
}

#[repr(C, packed(4))]
pub struct MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION {
    pub AvailablePages: u64,
    pub CommittedPages: u64,
    pub CommitLimit: u64,
    pub PeakCommitment: u64,
}

#[repr(C, packed(4))]
pub struct MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 {
    pub IdleProcessTime: u64,
    pub IoReadTransferCount: u64,
    pub IoWriteTransferCount: u64,
    pub IoOtherTransferCount: u64,
    pub IoReadOperationCount: u32,
    pub IoWriteOperationCount: u32,
    pub IoOtherOperationCount: u32,
    pub AvailablePages: u32,
    pub CommittedPages: u32,
    pub CommitLimit: u32,
    pub PeakCommitment: u32,
    pub PageFaultCount: u32,
    pub CopyOnWriteCount: u32,
    pub TransitionCount: u32,
    pub CacheTransitionCount: u32,
    pub DemandZeroCount: u32,
    pub PageReadCount: u32,
    pub PageReadIoCount: u32,
    pub CacheReadCount: u32,
    pub CacheIoCount: u32,
    pub DirtyPagesWriteCount: u32,
    pub DirtyWriteIoCount: u32,
    pub MappedPagesWriteCount: u32,
    pub MappedWriteIoCount: u32,
    pub PagedPoolPages: u32,
    pub NonPagedPoolPages: u32,
    pub PagedPoolAllocs: u32,
    pub PagedPoolFrees: u32,
    pub NonPagedPoolAllocs: u32,
    pub NonPagedPoolFrees: u32,
    pub FreeSystemPtes: u32,
    pub ResidentSystemCodePage: u32,
    pub TotalSystemDriverPages: u32,
    pub TotalSystemCodePages: u32,
    pub NonPagedPoolLookasideHits: u32,
    pub PagedPoolLookasideHits: u32,
    pub AvailablePagedPoolPages: u32,
    pub ResidentSystemCachePage: u32,
    pub ResidentPagedPoolPage: u32,
    pub ResidentSystemDriverPage: u32,
    pub CcFastReadNoWait: u32,
    pub CcFastReadWait: u32,
    pub CcFastReadResourceMiss: u32,
    pub CcFastReadNotPossible: u32,
    pub CcFastMdlReadNoWait: u32,
    pub CcFastMdlReadWait: u32,
    pub CcFastMdlReadResourceMiss: u32,
    pub CcFastMdlReadNotPossible: u32,
    pub CcMapDataNoWait: u32,
    pub CcMapDataWait: u32,
    pub CcMapDataNoWaitMiss: u32,
    pub CcMapDataWaitMiss: u32,
    pub CcPinMappedDataCount: u32,
    pub CcPinReadNoWait: u32,
    pub CcPinReadWait: u32,
    pub CcPinReadNoWaitMiss: u32,
    pub CcPinReadWaitMiss: u32,
    pub CcCopyReadNoWait: u32,
    pub CcCopyReadWait: u32,
    pub CcCopyReadNoWaitMiss: u32,
    pub CcCopyReadWaitMiss: u32,
    pub CcMdlReadNoWait: u32,
    pub CcMdlReadWait: u32,
    pub CcMdlReadNoWaitMiss: u32,
    pub CcMdlReadWaitMiss: u32,
    pub CcReadAheadIos: u32,
    pub CcLazyWriteIos: u32,
    pub CcLazyWritePages: u32,
    pub CcDataFlushes: u32,
    pub CcDataPages: u32,
    pub ContextSwitches: u32,
    pub FirstLevelTbFills: u32,
    pub SecondLevelTbFills: u32,
    pub SystemCalls: u32,
    pub CcTotalDirtyPages: u64,
    pub CcDirtyPageThreshold: u64,
    pub ResidentAvailablePages: i64,
    pub SharedCommittedPages: u64,
    pub MdlPagesAllocated: u64,
    pub PfnDatabaseCommittedPages: u64,
    pub SystemPageTableCommittedPages: u64,
    pub ContiguousPagesAllocated: u64,
}

#[repr(C)]
pub struct MINIDUMP_SYSTEM_MEMORY_INFO_2 {
    pub Revision: u16,
    pub Flags: u16,
    pub BasicInfo: MINIDUMP_SYSTEM_BASIC_INFORMATION,
    pub FileCacheInfo: MINIDUMP_SYSTEM_FILECACHE_INFORMATION,
    pub BasicPerfInfo: MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION,
    pub PerfInfo: MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2,
}
import "golang.org/x/sys/windows"

type MINIDUMP_SYSTEM_BASIC_INFORMATION struct {
	TimerResolution uint32
	PageSize uint32
	NumberOfPhysicalPages uint32
	LowestPhysicalPageNumber uint32
	HighestPhysicalPageNumber uint32
	AllocationGranularity uint32
	MinimumUserModeAddress uint64
	MaximumUserModeAddress uint64
	ActiveProcessorsAffinityMask uint64
	NumberOfProcessors uint32
}

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_BASIC_PERFORMANCE_INFORMATION struct {
	AvailablePages uint64
	CommittedPages uint64
	CommitLimit uint64
	PeakCommitment uint64
}

type MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 struct {
	IdleProcessTime uint64
	IoReadTransferCount uint64
	IoWriteTransferCount uint64
	IoOtherTransferCount uint64
	IoReadOperationCount uint32
	IoWriteOperationCount uint32
	IoOtherOperationCount uint32
	AvailablePages uint32
	CommittedPages uint32
	CommitLimit uint32
	PeakCommitment uint32
	PageFaultCount uint32
	CopyOnWriteCount uint32
	TransitionCount uint32
	CacheTransitionCount uint32
	DemandZeroCount uint32
	PageReadCount uint32
	PageReadIoCount uint32
	CacheReadCount uint32
	CacheIoCount uint32
	DirtyPagesWriteCount uint32
	DirtyWriteIoCount uint32
	MappedPagesWriteCount uint32
	MappedWriteIoCount uint32
	PagedPoolPages uint32
	NonPagedPoolPages uint32
	PagedPoolAllocs uint32
	PagedPoolFrees uint32
	NonPagedPoolAllocs uint32
	NonPagedPoolFrees uint32
	FreeSystemPtes uint32
	ResidentSystemCodePage uint32
	TotalSystemDriverPages uint32
	TotalSystemCodePages uint32
	NonPagedPoolLookasideHits uint32
	PagedPoolLookasideHits uint32
	AvailablePagedPoolPages uint32
	ResidentSystemCachePage uint32
	ResidentPagedPoolPage uint32
	ResidentSystemDriverPage uint32
	CcFastReadNoWait uint32
	CcFastReadWait uint32
	CcFastReadResourceMiss uint32
	CcFastReadNotPossible uint32
	CcFastMdlReadNoWait uint32
	CcFastMdlReadWait uint32
	CcFastMdlReadResourceMiss uint32
	CcFastMdlReadNotPossible uint32
	CcMapDataNoWait uint32
	CcMapDataWait uint32
	CcMapDataNoWaitMiss uint32
	CcMapDataWaitMiss uint32
	CcPinMappedDataCount uint32
	CcPinReadNoWait uint32
	CcPinReadWait uint32
	CcPinReadNoWaitMiss uint32
	CcPinReadWaitMiss uint32
	CcCopyReadNoWait uint32
	CcCopyReadWait uint32
	CcCopyReadNoWaitMiss uint32
	CcCopyReadWaitMiss uint32
	CcMdlReadNoWait uint32
	CcMdlReadWait uint32
	CcMdlReadNoWaitMiss uint32
	CcMdlReadWaitMiss uint32
	CcReadAheadIos uint32
	CcLazyWriteIos uint32
	CcLazyWritePages uint32
	CcDataFlushes uint32
	CcDataPages uint32
	ContextSwitches uint32
	FirstLevelTbFills uint32
	SecondLevelTbFills uint32
	SystemCalls uint32
	CcTotalDirtyPages uint64
	CcDirtyPageThreshold uint64
	ResidentAvailablePages int64
	SharedCommittedPages uint64
	MdlPagesAllocated uint64
	PfnDatabaseCommittedPages uint64
	SystemPageTableCommittedPages uint64
	ContiguousPagesAllocated uint64
}

type MINIDUMP_SYSTEM_MEMORY_INFO_2 struct {
	Revision uint16
	Flags uint16
	BasicInfo MINIDUMP_SYSTEM_BASIC_INFORMATION
	FileCacheInfo MINIDUMP_SYSTEM_FILECACHE_INFORMATION
	BasicPerfInfo MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION
	PerfInfo MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2
}
type
  MINIDUMP_SYSTEM_BASIC_INFORMATION = packed record
    TimerResolution: DWORD;
    PageSize: DWORD;
    NumberOfPhysicalPages: DWORD;
    LowestPhysicalPageNumber: DWORD;
    HighestPhysicalPageNumber: DWORD;
    AllocationGranularity: DWORD;
    MinimumUserModeAddress: UInt64;
    MaximumUserModeAddress: UInt64;
    ActiveProcessorsAffinityMask: UInt64;
    NumberOfProcessors: DWORD;
  end;

  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;

  MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION = packed record
    AvailablePages: UInt64;
    CommittedPages: UInt64;
    CommitLimit: UInt64;
    PeakCommitment: UInt64;
  end;

  MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 = packed record
    IdleProcessTime: UInt64;
    IoReadTransferCount: UInt64;
    IoWriteTransferCount: UInt64;
    IoOtherTransferCount: UInt64;
    IoReadOperationCount: DWORD;
    IoWriteOperationCount: DWORD;
    IoOtherOperationCount: DWORD;
    AvailablePages: DWORD;
    CommittedPages: DWORD;
    CommitLimit: DWORD;
    PeakCommitment: DWORD;
    PageFaultCount: DWORD;
    CopyOnWriteCount: DWORD;
    TransitionCount: DWORD;
    CacheTransitionCount: DWORD;
    DemandZeroCount: DWORD;
    PageReadCount: DWORD;
    PageReadIoCount: DWORD;
    CacheReadCount: DWORD;
    CacheIoCount: DWORD;
    DirtyPagesWriteCount: DWORD;
    DirtyWriteIoCount: DWORD;
    MappedPagesWriteCount: DWORD;
    MappedWriteIoCount: DWORD;
    PagedPoolPages: DWORD;
    NonPagedPoolPages: DWORD;
    PagedPoolAllocs: DWORD;
    PagedPoolFrees: DWORD;
    NonPagedPoolAllocs: DWORD;
    NonPagedPoolFrees: DWORD;
    FreeSystemPtes: DWORD;
    ResidentSystemCodePage: DWORD;
    TotalSystemDriverPages: DWORD;
    TotalSystemCodePages: DWORD;
    NonPagedPoolLookasideHits: DWORD;
    PagedPoolLookasideHits: DWORD;
    AvailablePagedPoolPages: DWORD;
    ResidentSystemCachePage: DWORD;
    ResidentPagedPoolPage: DWORD;
    ResidentSystemDriverPage: DWORD;
    CcFastReadNoWait: DWORD;
    CcFastReadWait: DWORD;
    CcFastReadResourceMiss: DWORD;
    CcFastReadNotPossible: DWORD;
    CcFastMdlReadNoWait: DWORD;
    CcFastMdlReadWait: DWORD;
    CcFastMdlReadResourceMiss: DWORD;
    CcFastMdlReadNotPossible: DWORD;
    CcMapDataNoWait: DWORD;
    CcMapDataWait: DWORD;
    CcMapDataNoWaitMiss: DWORD;
    CcMapDataWaitMiss: DWORD;
    CcPinMappedDataCount: DWORD;
    CcPinReadNoWait: DWORD;
    CcPinReadWait: DWORD;
    CcPinReadNoWaitMiss: DWORD;
    CcPinReadWaitMiss: DWORD;
    CcCopyReadNoWait: DWORD;
    CcCopyReadWait: DWORD;
    CcCopyReadNoWaitMiss: DWORD;
    CcCopyReadWaitMiss: DWORD;
    CcMdlReadNoWait: DWORD;
    CcMdlReadWait: DWORD;
    CcMdlReadNoWaitMiss: DWORD;
    CcMdlReadWaitMiss: DWORD;
    CcReadAheadIos: DWORD;
    CcLazyWriteIos: DWORD;
    CcLazyWritePages: DWORD;
    CcDataFlushes: DWORD;
    CcDataPages: DWORD;
    ContextSwitches: DWORD;
    FirstLevelTbFills: DWORD;
    SecondLevelTbFills: DWORD;
    SystemCalls: DWORD;
    CcTotalDirtyPages: UInt64;
    CcDirtyPageThreshold: UInt64;
    ResidentAvailablePages: Int64;
    SharedCommittedPages: UInt64;
    MdlPagesAllocated: UInt64;
    PfnDatabaseCommittedPages: UInt64;
    SystemPageTableCommittedPages: UInt64;
    ContiguousPagesAllocated: UInt64;
  end;

  MINIDUMP_SYSTEM_MEMORY_INFO_2 = record
    Revision: Word;
    Flags: Word;
    BasicInfo: MINIDUMP_SYSTEM_BASIC_INFORMATION;
    FileCacheInfo: MINIDUMP_SYSTEM_FILECACHE_INFORMATION;
    BasicPerfInfo: MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION;
    PerfInfo: MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2;
  end;
const MINIDUMP_SYSTEM_BASIC_INFORMATION = extern struct {
    TimerResolution: u32,
    PageSize: u32,
    NumberOfPhysicalPages: u32,
    LowestPhysicalPageNumber: u32,
    HighestPhysicalPageNumber: u32,
    AllocationGranularity: u32,
    MinimumUserModeAddress: u64,
    MaximumUserModeAddress: u64,
    ActiveProcessorsAffinityMask: u64,
    NumberOfProcessors: u32,
};

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,
};

const MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION = extern struct {
    AvailablePages: u64,
    CommittedPages: u64,
    CommitLimit: u64,
    PeakCommitment: u64,
};

const MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 = extern struct {
    IdleProcessTime: u64,
    IoReadTransferCount: u64,
    IoWriteTransferCount: u64,
    IoOtherTransferCount: u64,
    IoReadOperationCount: u32,
    IoWriteOperationCount: u32,
    IoOtherOperationCount: u32,
    AvailablePages: u32,
    CommittedPages: u32,
    CommitLimit: u32,
    PeakCommitment: u32,
    PageFaultCount: u32,
    CopyOnWriteCount: u32,
    TransitionCount: u32,
    CacheTransitionCount: u32,
    DemandZeroCount: u32,
    PageReadCount: u32,
    PageReadIoCount: u32,
    CacheReadCount: u32,
    CacheIoCount: u32,
    DirtyPagesWriteCount: u32,
    DirtyWriteIoCount: u32,
    MappedPagesWriteCount: u32,
    MappedWriteIoCount: u32,
    PagedPoolPages: u32,
    NonPagedPoolPages: u32,
    PagedPoolAllocs: u32,
    PagedPoolFrees: u32,
    NonPagedPoolAllocs: u32,
    NonPagedPoolFrees: u32,
    FreeSystemPtes: u32,
    ResidentSystemCodePage: u32,
    TotalSystemDriverPages: u32,
    TotalSystemCodePages: u32,
    NonPagedPoolLookasideHits: u32,
    PagedPoolLookasideHits: u32,
    AvailablePagedPoolPages: u32,
    ResidentSystemCachePage: u32,
    ResidentPagedPoolPage: u32,
    ResidentSystemDriverPage: u32,
    CcFastReadNoWait: u32,
    CcFastReadWait: u32,
    CcFastReadResourceMiss: u32,
    CcFastReadNotPossible: u32,
    CcFastMdlReadNoWait: u32,
    CcFastMdlReadWait: u32,
    CcFastMdlReadResourceMiss: u32,
    CcFastMdlReadNotPossible: u32,
    CcMapDataNoWait: u32,
    CcMapDataWait: u32,
    CcMapDataNoWaitMiss: u32,
    CcMapDataWaitMiss: u32,
    CcPinMappedDataCount: u32,
    CcPinReadNoWait: u32,
    CcPinReadWait: u32,
    CcPinReadNoWaitMiss: u32,
    CcPinReadWaitMiss: u32,
    CcCopyReadNoWait: u32,
    CcCopyReadWait: u32,
    CcCopyReadNoWaitMiss: u32,
    CcCopyReadWaitMiss: u32,
    CcMdlReadNoWait: u32,
    CcMdlReadWait: u32,
    CcMdlReadNoWaitMiss: u32,
    CcMdlReadWaitMiss: u32,
    CcReadAheadIos: u32,
    CcLazyWriteIos: u32,
    CcLazyWritePages: u32,
    CcDataFlushes: u32,
    CcDataPages: u32,
    ContextSwitches: u32,
    FirstLevelTbFills: u32,
    SecondLevelTbFills: u32,
    SystemCalls: u32,
    CcTotalDirtyPages: u64,
    CcDirtyPageThreshold: u64,
    ResidentAvailablePages: i64,
    SharedCommittedPages: u64,
    MdlPagesAllocated: u64,
    PfnDatabaseCommittedPages: u64,
    SystemPageTableCommittedPages: u64,
    ContiguousPagesAllocated: u64,
};

const MINIDUMP_SYSTEM_MEMORY_INFO_2 = extern struct {
    Revision: u16,
    Flags: u16,
    BasicInfo: MINIDUMP_SYSTEM_BASIC_INFORMATION,
    FileCacheInfo: MINIDUMP_SYSTEM_FILECACHE_INFORMATION,
    BasicPerfInfo: MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION,
    PerfInfo: MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2,
};
type
  MINIDUMP_SYSTEM_BASIC_INFORMATION {.packed.} = object
    TimerResolution: uint32
    PageSize: uint32
    NumberOfPhysicalPages: uint32
    LowestPhysicalPageNumber: uint32
    HighestPhysicalPageNumber: uint32
    AllocationGranularity: uint32
    MinimumUserModeAddress: uint64
    MaximumUserModeAddress: uint64
    ActiveProcessorsAffinityMask: uint64
    NumberOfProcessors: uint32

  MINIDUMP_SYSTEM_FILECACHE_INFORMATION {.packed.} = object
    CurrentSize: uint64
    PeakSize: uint64
    PageFaultCount: uint32
    MinimumWorkingSet: uint64
    MaximumWorkingSet: uint64
    CurrentSizeIncludingTransitionInPages: uint64
    PeakSizeIncludingTransitionInPages: uint64
    TransitionRePurposeCount: uint32
    Flags: uint32

  MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION {.packed.} = object
    AvailablePages: uint64
    CommittedPages: uint64
    CommitLimit: uint64
    PeakCommitment: uint64

  MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 {.packed.} = object
    IdleProcessTime: uint64
    IoReadTransferCount: uint64
    IoWriteTransferCount: uint64
    IoOtherTransferCount: uint64
    IoReadOperationCount: uint32
    IoWriteOperationCount: uint32
    IoOtherOperationCount: uint32
    AvailablePages: uint32
    CommittedPages: uint32
    CommitLimit: uint32
    PeakCommitment: uint32
    PageFaultCount: uint32
    CopyOnWriteCount: uint32
    TransitionCount: uint32
    CacheTransitionCount: uint32
    DemandZeroCount: uint32
    PageReadCount: uint32
    PageReadIoCount: uint32
    CacheReadCount: uint32
    CacheIoCount: uint32
    DirtyPagesWriteCount: uint32
    DirtyWriteIoCount: uint32
    MappedPagesWriteCount: uint32
    MappedWriteIoCount: uint32
    PagedPoolPages: uint32
    NonPagedPoolPages: uint32
    PagedPoolAllocs: uint32
    PagedPoolFrees: uint32
    NonPagedPoolAllocs: uint32
    NonPagedPoolFrees: uint32
    FreeSystemPtes: uint32
    ResidentSystemCodePage: uint32
    TotalSystemDriverPages: uint32
    TotalSystemCodePages: uint32
    NonPagedPoolLookasideHits: uint32
    PagedPoolLookasideHits: uint32
    AvailablePagedPoolPages: uint32
    ResidentSystemCachePage: uint32
    ResidentPagedPoolPage: uint32
    ResidentSystemDriverPage: uint32
    CcFastReadNoWait: uint32
    CcFastReadWait: uint32
    CcFastReadResourceMiss: uint32
    CcFastReadNotPossible: uint32
    CcFastMdlReadNoWait: uint32
    CcFastMdlReadWait: uint32
    CcFastMdlReadResourceMiss: uint32
    CcFastMdlReadNotPossible: uint32
    CcMapDataNoWait: uint32
    CcMapDataWait: uint32
    CcMapDataNoWaitMiss: uint32
    CcMapDataWaitMiss: uint32
    CcPinMappedDataCount: uint32
    CcPinReadNoWait: uint32
    CcPinReadWait: uint32
    CcPinReadNoWaitMiss: uint32
    CcPinReadWaitMiss: uint32
    CcCopyReadNoWait: uint32
    CcCopyReadWait: uint32
    CcCopyReadNoWaitMiss: uint32
    CcCopyReadWaitMiss: uint32
    CcMdlReadNoWait: uint32
    CcMdlReadWait: uint32
    CcMdlReadNoWaitMiss: uint32
    CcMdlReadWaitMiss: uint32
    CcReadAheadIos: uint32
    CcLazyWriteIos: uint32
    CcLazyWritePages: uint32
    CcDataFlushes: uint32
    CcDataPages: uint32
    ContextSwitches: uint32
    FirstLevelTbFills: uint32
    SecondLevelTbFills: uint32
    SystemCalls: uint32
    CcTotalDirtyPages: uint64
    CcDirtyPageThreshold: uint64
    ResidentAvailablePages: int64
    SharedCommittedPages: uint64
    MdlPagesAllocated: uint64
    PfnDatabaseCommittedPages: uint64
    SystemPageTableCommittedPages: uint64
    ContiguousPagesAllocated: uint64

  MINIDUMP_SYSTEM_MEMORY_INFO_2 {.bycopy.} = object
    Revision: uint16
    Flags: uint16
    BasicInfo: MINIDUMP_SYSTEM_BASIC_INFORMATION
    FileCacheInfo: MINIDUMP_SYSTEM_FILECACHE_INFORMATION
    BasicPerfInfo: MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION
    PerfInfo: MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2
align(4)
struct MINIDUMP_SYSTEM_BASIC_INFORMATION
{
    uint TimerResolution;
    uint PageSize;
    uint NumberOfPhysicalPages;
    uint LowestPhysicalPageNumber;
    uint HighestPhysicalPageNumber;
    uint AllocationGranularity;
    ulong MinimumUserModeAddress;
    ulong MaximumUserModeAddress;
    ulong ActiveProcessorsAffinityMask;
    uint NumberOfProcessors;
}

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;
}

align(4)
struct MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION
{
    ulong AvailablePages;
    ulong CommittedPages;
    ulong CommitLimit;
    ulong PeakCommitment;
}

align(4)
struct MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2
{
    ulong IdleProcessTime;
    ulong IoReadTransferCount;
    ulong IoWriteTransferCount;
    ulong IoOtherTransferCount;
    uint IoReadOperationCount;
    uint IoWriteOperationCount;
    uint IoOtherOperationCount;
    uint AvailablePages;
    uint CommittedPages;
    uint CommitLimit;
    uint PeakCommitment;
    uint PageFaultCount;
    uint CopyOnWriteCount;
    uint TransitionCount;
    uint CacheTransitionCount;
    uint DemandZeroCount;
    uint PageReadCount;
    uint PageReadIoCount;
    uint CacheReadCount;
    uint CacheIoCount;
    uint DirtyPagesWriteCount;
    uint DirtyWriteIoCount;
    uint MappedPagesWriteCount;
    uint MappedWriteIoCount;
    uint PagedPoolPages;
    uint NonPagedPoolPages;
    uint PagedPoolAllocs;
    uint PagedPoolFrees;
    uint NonPagedPoolAllocs;
    uint NonPagedPoolFrees;
    uint FreeSystemPtes;
    uint ResidentSystemCodePage;
    uint TotalSystemDriverPages;
    uint TotalSystemCodePages;
    uint NonPagedPoolLookasideHits;
    uint PagedPoolLookasideHits;
    uint AvailablePagedPoolPages;
    uint ResidentSystemCachePage;
    uint ResidentPagedPoolPage;
    uint ResidentSystemDriverPage;
    uint CcFastReadNoWait;
    uint CcFastReadWait;
    uint CcFastReadResourceMiss;
    uint CcFastReadNotPossible;
    uint CcFastMdlReadNoWait;
    uint CcFastMdlReadWait;
    uint CcFastMdlReadResourceMiss;
    uint CcFastMdlReadNotPossible;
    uint CcMapDataNoWait;
    uint CcMapDataWait;
    uint CcMapDataNoWaitMiss;
    uint CcMapDataWaitMiss;
    uint CcPinMappedDataCount;
    uint CcPinReadNoWait;
    uint CcPinReadWait;
    uint CcPinReadNoWaitMiss;
    uint CcPinReadWaitMiss;
    uint CcCopyReadNoWait;
    uint CcCopyReadWait;
    uint CcCopyReadNoWaitMiss;
    uint CcCopyReadWaitMiss;
    uint CcMdlReadNoWait;
    uint CcMdlReadWait;
    uint CcMdlReadNoWaitMiss;
    uint CcMdlReadWaitMiss;
    uint CcReadAheadIos;
    uint CcLazyWriteIos;
    uint CcLazyWritePages;
    uint CcDataFlushes;
    uint CcDataPages;
    uint ContextSwitches;
    uint FirstLevelTbFills;
    uint SecondLevelTbFills;
    uint SystemCalls;
    ulong CcTotalDirtyPages;
    ulong CcDirtyPageThreshold;
    long ResidentAvailablePages;
    ulong SharedCommittedPages;
    ulong MdlPagesAllocated;
    ulong PfnDatabaseCommittedPages;
    ulong SystemPageTableCommittedPages;
    ulong ContiguousPagesAllocated;
}

struct MINIDUMP_SYSTEM_MEMORY_INFO_2
{
    ushort Revision;
    ushort Flags;
    MINIDUMP_SYSTEM_BASIC_INFORMATION BasicInfo;
    MINIDUMP_SYSTEM_FILECACHE_INFORMATION FileCacheInfo;
    MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION BasicPerfInfo;
    MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 PerfInfo;
}

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_MEMORY_INFO_2 サイズ: 524 バイト(x64)
dim st, 131    ; 4byte整数×131(構造体サイズ 524 / 4 切り上げ)
; Revision : WORD (+0, 2byte)  wpoke st,0,値  /  値 = wpeek(st,0)
; Flags : WORD (+2, 2byte)  wpoke st,2,値  /  値 = wpeek(st,2)
; BasicInfo : MINIDUMP_SYSTEM_BASIC_INFORMATION (+4, 52byte)  varptr(st)+4 を基点に操作(52byte:入れ子/配列)
; FileCacheInfo : MINIDUMP_SYSTEM_FILECACHE_INFORMATION (+56, 60byte)  varptr(st)+56 を基点に操作(60byte:入れ子/配列)
; BasicPerfInfo : MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION (+116, 32byte)  varptr(st)+116 を基点に操作(32byte:入れ子/配列)
; PerfInfo : MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 (+148, 376byte)  varptr(st)+148 を基点に操作(376byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global MINIDUMP_SYSTEM_BASIC_INFORMATION, pack=4
    #field int TimerResolution
    #field int PageSize
    #field int NumberOfPhysicalPages
    #field int LowestPhysicalPageNumber
    #field int HighestPhysicalPageNumber
    #field int AllocationGranularity
    #field int64 MinimumUserModeAddress
    #field int64 MaximumUserModeAddress
    #field int64 ActiveProcessorsAffinityMask
    #field int NumberOfProcessors
#endstruct

#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

#defstruct global MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION, pack=4
    #field int64 AvailablePages
    #field int64 CommittedPages
    #field int64 CommitLimit
    #field int64 PeakCommitment
#endstruct

#defstruct global MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2, pack=4
    #field int64 IdleProcessTime
    #field int64 IoReadTransferCount
    #field int64 IoWriteTransferCount
    #field int64 IoOtherTransferCount
    #field int IoReadOperationCount
    #field int IoWriteOperationCount
    #field int IoOtherOperationCount
    #field int AvailablePages
    #field int CommittedPages
    #field int CommitLimit
    #field int PeakCommitment
    #field int PageFaultCount
    #field int CopyOnWriteCount
    #field int TransitionCount
    #field int CacheTransitionCount
    #field int DemandZeroCount
    #field int PageReadCount
    #field int PageReadIoCount
    #field int CacheReadCount
    #field int CacheIoCount
    #field int DirtyPagesWriteCount
    #field int DirtyWriteIoCount
    #field int MappedPagesWriteCount
    #field int MappedWriteIoCount
    #field int PagedPoolPages
    #field int NonPagedPoolPages
    #field int PagedPoolAllocs
    #field int PagedPoolFrees
    #field int NonPagedPoolAllocs
    #field int NonPagedPoolFrees
    #field int FreeSystemPtes
    #field int ResidentSystemCodePage
    #field int TotalSystemDriverPages
    #field int TotalSystemCodePages
    #field int NonPagedPoolLookasideHits
    #field int PagedPoolLookasideHits
    #field int AvailablePagedPoolPages
    #field int ResidentSystemCachePage
    #field int ResidentPagedPoolPage
    #field int ResidentSystemDriverPage
    #field int CcFastReadNoWait
    #field int CcFastReadWait
    #field int CcFastReadResourceMiss
    #field int CcFastReadNotPossible
    #field int CcFastMdlReadNoWait
    #field int CcFastMdlReadWait
    #field int CcFastMdlReadResourceMiss
    #field int CcFastMdlReadNotPossible
    #field int CcMapDataNoWait
    #field int CcMapDataWait
    #field int CcMapDataNoWaitMiss
    #field int CcMapDataWaitMiss
    #field int CcPinMappedDataCount
    #field int CcPinReadNoWait
    #field int CcPinReadWait
    #field int CcPinReadNoWaitMiss
    #field int CcPinReadWaitMiss
    #field int CcCopyReadNoWait
    #field int CcCopyReadWait
    #field int CcCopyReadNoWaitMiss
    #field int CcCopyReadWaitMiss
    #field int CcMdlReadNoWait
    #field int CcMdlReadWait
    #field int CcMdlReadNoWaitMiss
    #field int CcMdlReadWaitMiss
    #field int CcReadAheadIos
    #field int CcLazyWriteIos
    #field int CcLazyWritePages
    #field int CcDataFlushes
    #field int CcDataPages
    #field int ContextSwitches
    #field int FirstLevelTbFills
    #field int SecondLevelTbFills
    #field int SystemCalls
    #field int64 CcTotalDirtyPages
    #field int64 CcDirtyPageThreshold
    #field int64 ResidentAvailablePages
    #field int64 SharedCommittedPages
    #field int64 MdlPagesAllocated
    #field int64 PfnDatabaseCommittedPages
    #field int64 SystemPageTableCommittedPages
    #field int64 ContiguousPagesAllocated
#endstruct

#defstruct global MINIDUMP_SYSTEM_MEMORY_INFO_2
    #field short Revision
    #field short Flags
    #field MINIDUMP_SYSTEM_BASIC_INFORMATION BasicInfo
    #field MINIDUMP_SYSTEM_FILECACHE_INFORMATION FileCacheInfo
    #field MINIDUMP_SYSTEM_BASIC_PERFORMANCE_INFORMATION BasicPerfInfo
    #field MINIDUMP_SYSTEM_PERFORMANCE_INFORMATION_2 PerfInfo
#endstruct

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