ホーム › System.Diagnostics.ProcessSnapshotting › PSS_PROCESS_INFORMATION
PSS_PROCESS_INFORMATION
構造体サイズ=各フィールドのバイト数(x64/x86 で異なる場合は x64/x86 と併記)。x64/x86 列=フィールドのバイトオフセット(HSPで dupptr / lpoke / wpoke 等に使用)。
フィールド
| フィールド | 型 | サイズ | x64 | x86 | 説明 |
|---|---|---|---|---|---|
| ExitStatus | DWORD | 4 | +0 | +0 | プロセスの終了コードです。プロセスがまだ終了していない場合、これは STILL_ACTIVE (259) に設定されます。 |
| PebBaseAddress | void* | 8/4 | +8 | +4 | プロセス環境ブロック (PEB) へのアドレスです。オペレーティングシステムによる使用のために予約済みです。 |
| AffinityMask | UINT_PTR | 8/4 | +16 | +8 | プロセスのアフィニティマスクです。 |
| BasePriority | INT | 4 | +24 | +12 | プロセスの基本優先度レベルです。 |
| ProcessId | DWORD | 4 | +28 | +16 | プロセス ID です。 |
| ParentProcessId | DWORD | 4 | +32 | +20 | 親プロセス ID です。 |
| Flags | PSS_PROCESS_FLAGS | 4 | +36 | +24 | プロセスに関するフラグです。詳細については、PSS_PROCESS_FLAGS を参照してください。 |
| CreateTime | FILETIME | 8 | +40 | +28 | プロセスが作成された時刻です。詳細については、FILETIME を参照してください。 |
| ExitTime | FILETIME | 8 | +48 | +36 | プロセスが終了している場合は、その終了時刻です。詳細については、FILETIME を参照してください。 |
| KernelTime | FILETIME | 8 | +56 | +44 | プロセスがカーネルモードでの実行に費やした時間です。詳細については、FILETIME を参照してください。 |
| UserTime | FILETIME | 8 | +64 | +52 | プロセスがユーザーモードでの実行に費やした時間です。詳細については、FILETIME を参照してください。 |
| PriorityClass | DWORD | 4 | +72 | +60 | 優先度クラスです。 |
| PeakVirtualSize | UINT_PTR | 8/4 | +80 | +64 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| VirtualSize | UINT_PTR | 8/4 | +88 | +68 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| PageFaultCount | DWORD | 4 | +96 | +72 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| PeakWorkingSetSize | UINT_PTR | 8/4 | +104 | +76 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| WorkingSetSize | UINT_PTR | 8/4 | +112 | +80 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| QuotaPeakPagedPoolUsage | UINT_PTR | 8/4 | +120 | +84 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| QuotaPagedPoolUsage | UINT_PTR | 8/4 | +128 | +88 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| QuotaPeakNonPagedPoolUsage | UINT_PTR | 8/4 | +136 | +92 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| QuotaNonPagedPoolUsage | UINT_PTR | 8/4 | +144 | +96 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| PagefileUsage | UINT_PTR | 8/4 | +152 | +100 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| PeakPagefileUsage | UINT_PTR | 8/4 | +160 | +104 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| PrivateUsage | UINT_PTR | 8/4 | +168 | +108 | メモリ使用量のカウンターです。詳細については、GetProcessMemoryInfo 関数を参照してください。 |
| ExecuteFlags | DWORD | 4 | +176 | +112 | オペレーティングシステムによる使用のために予約済みです。 |
| ImageFileName | WCHAR | 520 | +180 | +116 | プロセスの実行可能ファイルへのフルパスです。パスが割り当てられたバッファーのサイズを超える場合は、切り詰められます。 |
公式ドキュメント
PssQuerySnapshot によって返されるプロセス情報を保持します。
解説(Remarks)
PssQuerySnapshot は、呼び出し元が指定した PSS_QUERY_INFORMATION_CLASS のメンバーが PSS_QUERY_PROCESS_INFORMATION である場合に、PSS_PROCESS_INFORMATION 構造体を返します。
出典・ライセンス: 上記「公式ドキュメント」の内容は 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>
// FILETIME (x64 8 / x86 8 バイト)
typedef struct FILETIME {
DWORD dwLowDateTime;
DWORD dwHighDateTime;
} FILETIME;
// PSS_PROCESS_INFORMATION (x64 704 / x86 636 バイト)
typedef struct PSS_PROCESS_INFORMATION {
DWORD ExitStatus;
void* PebBaseAddress;
UINT_PTR AffinityMask;
INT BasePriority;
DWORD ProcessId;
DWORD ParentProcessId;
PSS_PROCESS_FLAGS Flags;
FILETIME CreateTime;
FILETIME ExitTime;
FILETIME KernelTime;
FILETIME UserTime;
DWORD PriorityClass;
UINT_PTR PeakVirtualSize;
UINT_PTR VirtualSize;
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;
DWORD ExecuteFlags;
WCHAR ImageFileName[260];
} PSS_PROCESS_INFORMATION;using System;
using System.Runtime.InteropServices;
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct FILETIME
{
public uint dwLowDateTime;
public uint dwHighDateTime;
}
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct PSS_PROCESS_INFORMATION
{
public uint ExitStatus;
public IntPtr PebBaseAddress;
public UIntPtr AffinityMask;
public int BasePriority;
public uint ProcessId;
public uint ParentProcessId;
public int Flags;
public FILETIME CreateTime;
public FILETIME ExitTime;
public FILETIME KernelTime;
public FILETIME UserTime;
public uint PriorityClass;
public UIntPtr PeakVirtualSize;
public UIntPtr VirtualSize;
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;
public uint ExecuteFlags;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string ImageFileName;
}Imports System.Runtime.InteropServices
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure FILETIME
Public dwLowDateTime As UInteger
Public dwHighDateTime As UInteger
End Structure
<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure PSS_PROCESS_INFORMATION
Public ExitStatus As UInteger
Public PebBaseAddress As IntPtr
Public AffinityMask As UIntPtr
Public BasePriority As Integer
Public ProcessId As UInteger
Public ParentProcessId As UInteger
Public Flags As Integer
Public CreateTime As FILETIME
Public ExitTime As FILETIME
Public KernelTime As FILETIME
Public UserTime As FILETIME
Public PriorityClass As UInteger
Public PeakVirtualSize As UIntPtr
Public VirtualSize As UIntPtr
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
Public ExecuteFlags As UInteger
<MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> Public ImageFileName As String
End Structureimport ctypes
from ctypes import wintypes
class FILETIME(ctypes.Structure):
_fields_ = [
("dwLowDateTime", wintypes.DWORD),
("dwHighDateTime", wintypes.DWORD),
]
class PSS_PROCESS_INFORMATION(ctypes.Structure):
_fields_ = [
("ExitStatus", wintypes.DWORD),
("PebBaseAddress", ctypes.c_void_p),
("AffinityMask", ctypes.c_size_t),
("BasePriority", ctypes.c_int),
("ProcessId", wintypes.DWORD),
("ParentProcessId", wintypes.DWORD),
("Flags", ctypes.c_int),
("CreateTime", FILETIME),
("ExitTime", FILETIME),
("KernelTime", FILETIME),
("UserTime", FILETIME),
("PriorityClass", wintypes.DWORD),
("PeakVirtualSize", ctypes.c_size_t),
("VirtualSize", ctypes.c_size_t),
("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),
("ExecuteFlags", wintypes.DWORD),
("ImageFileName", ctypes.c_wchar * 260),
]#[repr(C)]
pub struct FILETIME {
pub dwLowDateTime: u32,
pub dwHighDateTime: u32,
}
#[repr(C)]
pub struct PSS_PROCESS_INFORMATION {
pub ExitStatus: u32,
pub PebBaseAddress: *mut core::ffi::c_void,
pub AffinityMask: usize,
pub BasePriority: i32,
pub ProcessId: u32,
pub ParentProcessId: u32,
pub Flags: i32,
pub CreateTime: FILETIME,
pub ExitTime: FILETIME,
pub KernelTime: FILETIME,
pub UserTime: FILETIME,
pub PriorityClass: u32,
pub PeakVirtualSize: usize,
pub VirtualSize: usize,
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,
pub ExecuteFlags: u32,
pub ImageFileName: [u16; 260],
}import "golang.org/x/sys/windows"
type FILETIME struct {
dwLowDateTime uint32
dwHighDateTime uint32
}
type PSS_PROCESS_INFORMATION struct {
ExitStatus uint32
PebBaseAddress uintptr
AffinityMask uintptr
BasePriority int32
ProcessId uint32
ParentProcessId uint32
Flags int32
CreateTime FILETIME
ExitTime FILETIME
KernelTime FILETIME
UserTime FILETIME
PriorityClass uint32
PeakVirtualSize uintptr
VirtualSize uintptr
PageFaultCount uint32
PeakWorkingSetSize uintptr
WorkingSetSize uintptr
QuotaPeakPagedPoolUsage uintptr
QuotaPagedPoolUsage uintptr
QuotaPeakNonPagedPoolUsage uintptr
QuotaNonPagedPoolUsage uintptr
PagefileUsage uintptr
PeakPagefileUsage uintptr
PrivateUsage uintptr
ExecuteFlags uint32
ImageFileName [260]uint16
}type
FILETIME = record
dwLowDateTime: DWORD;
dwHighDateTime: DWORD;
end;
PSS_PROCESS_INFORMATION = record
ExitStatus: DWORD;
PebBaseAddress: Pointer;
AffinityMask: NativeUInt;
BasePriority: Integer;
ProcessId: DWORD;
ParentProcessId: DWORD;
Flags: Integer;
CreateTime: FILETIME;
ExitTime: FILETIME;
KernelTime: FILETIME;
UserTime: FILETIME;
PriorityClass: DWORD;
PeakVirtualSize: NativeUInt;
VirtualSize: NativeUInt;
PageFaultCount: DWORD;
PeakWorkingSetSize: NativeUInt;
WorkingSetSize: NativeUInt;
QuotaPeakPagedPoolUsage: NativeUInt;
QuotaPagedPoolUsage: NativeUInt;
QuotaPeakNonPagedPoolUsage: NativeUInt;
QuotaNonPagedPoolUsage: NativeUInt;
PagefileUsage: NativeUInt;
PeakPagefileUsage: NativeUInt;
PrivateUsage: NativeUInt;
ExecuteFlags: DWORD;
ImageFileName: array[0..259] of WideChar;
end;const FILETIME = extern struct {
dwLowDateTime: u32,
dwHighDateTime: u32,
};
const PSS_PROCESS_INFORMATION = extern struct {
ExitStatus: u32,
PebBaseAddress: ?*anyopaque,
AffinityMask: usize,
BasePriority: i32,
ProcessId: u32,
ParentProcessId: u32,
Flags: i32,
CreateTime: FILETIME,
ExitTime: FILETIME,
KernelTime: FILETIME,
UserTime: FILETIME,
PriorityClass: u32,
PeakVirtualSize: usize,
VirtualSize: usize,
PageFaultCount: u32,
PeakWorkingSetSize: usize,
WorkingSetSize: usize,
QuotaPeakPagedPoolUsage: usize,
QuotaPagedPoolUsage: usize,
QuotaPeakNonPagedPoolUsage: usize,
QuotaNonPagedPoolUsage: usize,
PagefileUsage: usize,
PeakPagefileUsage: usize,
PrivateUsage: usize,
ExecuteFlags: u32,
ImageFileName: [260]u16,
};type
FILETIME {.bycopy.} = object
dwLowDateTime: uint32
dwHighDateTime: uint32
PSS_PROCESS_INFORMATION {.bycopy.} = object
ExitStatus: uint32
PebBaseAddress: pointer
AffinityMask: uint
BasePriority: int32
ProcessId: uint32
ParentProcessId: uint32
Flags: int32
CreateTime: FILETIME
ExitTime: FILETIME
KernelTime: FILETIME
UserTime: FILETIME
PriorityClass: uint32
PeakVirtualSize: uint
VirtualSize: uint
PageFaultCount: uint32
PeakWorkingSetSize: uint
WorkingSetSize: uint
QuotaPeakPagedPoolUsage: uint
QuotaPagedPoolUsage: uint
QuotaPeakNonPagedPoolUsage: uint
QuotaNonPagedPoolUsage: uint
PagefileUsage: uint
PeakPagefileUsage: uint
PrivateUsage: uint
ExecuteFlags: uint32
ImageFileName: array[260, uint16]struct FILETIME
{
uint dwLowDateTime;
uint dwHighDateTime;
}
struct PSS_PROCESS_INFORMATION
{
uint ExitStatus;
void* PebBaseAddress;
size_t AffinityMask;
int BasePriority;
uint ProcessId;
uint ParentProcessId;
int Flags;
FILETIME CreateTime;
FILETIME ExitTime;
FILETIME KernelTime;
FILETIME UserTime;
uint PriorityClass;
size_t PeakVirtualSize;
size_t VirtualSize;
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;
uint ExecuteFlags;
wchar[260] ImageFileName;
}HSP用 定義
HSP3.7/3.8 は構造体機能が無いため4byte整数配列(dim)+peek/poke で操作(32/64bitでサイズ・位置が異なる場合はタブで分割)。IronHSP は NSTRUCT(#defstruct/stdim/->)で32/64bit共通。
; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x86 レイアウト)
; PSS_PROCESS_INFORMATION サイズ: 636 バイト(x86)
dim st, 159 ; 4byte整数×159(構造体サイズ 636 / 4 切り上げ)
; ExitStatus : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PebBaseAddress : void* (+4, 4byte) st.1 = 値 / 値 = st.1 (lpoke/lpeek も可)
; AffinityMask : UINT_PTR (+8, 4byte) st.2 = 値 / 値 = st.2 (lpoke/lpeek も可)
; BasePriority : INT (+12, 4byte) st.3 = 値 / 値 = st.3 (lpoke/lpeek も可)
; ProcessId : DWORD (+16, 4byte) st.4 = 値 / 値 = st.4 (lpoke/lpeek も可)
; ParentProcessId : DWORD (+20, 4byte) st.5 = 値 / 値 = st.5 (lpoke/lpeek も可)
; Flags : PSS_PROCESS_FLAGS (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; CreateTime : FILETIME (+28, 8byte) varptr(st)+28 を基点に操作(8byte:入れ子/配列)
; ExitTime : FILETIME (+36, 8byte) varptr(st)+36 を基点に操作(8byte:入れ子/配列)
; KernelTime : FILETIME (+44, 8byte) varptr(st)+44 を基点に操作(8byte:入れ子/配列)
; UserTime : FILETIME (+52, 8byte) varptr(st)+52 を基点に操作(8byte:入れ子/配列)
; PriorityClass : DWORD (+60, 4byte) st.15 = 値 / 値 = st.15 (lpoke/lpeek も可)
; PeakVirtualSize : UINT_PTR (+64, 4byte) st.16 = 値 / 値 = st.16 (lpoke/lpeek も可)
; VirtualSize : UINT_PTR (+68, 4byte) st.17 = 値 / 値 = st.17 (lpoke/lpeek も可)
; PageFaultCount : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; PeakWorkingSetSize : UINT_PTR (+76, 4byte) st.19 = 値 / 値 = st.19 (lpoke/lpeek も可)
; WorkingSetSize : UINT_PTR (+80, 4byte) st.20 = 値 / 値 = st.20 (lpoke/lpeek も可)
; QuotaPeakPagedPoolUsage : UINT_PTR (+84, 4byte) st.21 = 値 / 値 = st.21 (lpoke/lpeek も可)
; QuotaPagedPoolUsage : UINT_PTR (+88, 4byte) st.22 = 値 / 値 = st.22 (lpoke/lpeek も可)
; QuotaPeakNonPagedPoolUsage : UINT_PTR (+92, 4byte) st.23 = 値 / 値 = st.23 (lpoke/lpeek も可)
; QuotaNonPagedPoolUsage : UINT_PTR (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; PagefileUsage : UINT_PTR (+100, 4byte) st.25 = 値 / 値 = st.25 (lpoke/lpeek も可)
; PeakPagefileUsage : UINT_PTR (+104, 4byte) st.26 = 値 / 値 = st.26 (lpoke/lpeek も可)
; PrivateUsage : UINT_PTR (+108, 4byte) st.27 = 値 / 値 = st.27 (lpoke/lpeek も可)
; ExecuteFlags : DWORD (+112, 4byte) st.28 = 値 / 値 = st.28 (lpoke/lpeek も可)
; ImageFileName : WCHAR (+116, 520byte) varptr(st)+116 を基点に操作(520byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; PSS_PROCESS_INFORMATION サイズ: 704 バイト(x64)
dim st, 176 ; 4byte整数×176(構造体サイズ 704 / 4 切り上げ)
; ExitStatus : DWORD (+0, 4byte) st.0 = 値 / 値 = st.0 (lpoke/lpeek も可)
; PebBaseAddress : void* (+8, 8byte) qpoke st,8,値 / qpeek(st,8) ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; AffinityMask : UINT_PTR (+16, 8byte) qpoke st,16,値 / qpeek(st,16) ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; BasePriority : INT (+24, 4byte) st.6 = 値 / 値 = st.6 (lpoke/lpeek も可)
; ProcessId : DWORD (+28, 4byte) st.7 = 値 / 値 = st.7 (lpoke/lpeek も可)
; ParentProcessId : DWORD (+32, 4byte) st.8 = 値 / 値 = st.8 (lpoke/lpeek も可)
; Flags : PSS_PROCESS_FLAGS (+36, 4byte) st.9 = 値 / 値 = st.9 (lpoke/lpeek も可)
; CreateTime : FILETIME (+40, 8byte) varptr(st)+40 を基点に操作(8byte:入れ子/配列)
; ExitTime : FILETIME (+48, 8byte) varptr(st)+48 を基点に操作(8byte:入れ子/配列)
; KernelTime : FILETIME (+56, 8byte) varptr(st)+56 を基点に操作(8byte:入れ子/配列)
; UserTime : FILETIME (+64, 8byte) varptr(st)+64 を基点に操作(8byte:入れ子/配列)
; PriorityClass : DWORD (+72, 4byte) st.18 = 値 / 値 = st.18 (lpoke/lpeek も可)
; PeakVirtualSize : UINT_PTR (+80, 8byte) qpoke st,80,値 / qpeek(st,80) ※IronHSPのみ。3.7/3.8は lpoke st,80,下位 : lpoke st,84,上位
; VirtualSize : UINT_PTR (+88, 8byte) qpoke st,88,値 / qpeek(st,88) ※IronHSPのみ。3.7/3.8は lpoke st,88,下位 : lpoke st,92,上位
; PageFaultCount : DWORD (+96, 4byte) st.24 = 値 / 値 = st.24 (lpoke/lpeek も可)
; PeakWorkingSetSize : UINT_PTR (+104, 8byte) qpoke st,104,値 / qpeek(st,104) ※IronHSPのみ。3.7/3.8は lpoke st,104,下位 : lpoke st,108,上位
; WorkingSetSize : UINT_PTR (+112, 8byte) qpoke st,112,値 / qpeek(st,112) ※IronHSPのみ。3.7/3.8は lpoke st,112,下位 : lpoke st,116,上位
; QuotaPeakPagedPoolUsage : UINT_PTR (+120, 8byte) qpoke st,120,値 / qpeek(st,120) ※IronHSPのみ。3.7/3.8は lpoke st,120,下位 : lpoke st,124,上位
; QuotaPagedPoolUsage : UINT_PTR (+128, 8byte) qpoke st,128,値 / qpeek(st,128) ※IronHSPのみ。3.7/3.8は lpoke st,128,下位 : lpoke st,132,上位
; QuotaPeakNonPagedPoolUsage : UINT_PTR (+136, 8byte) qpoke st,136,値 / qpeek(st,136) ※IronHSPのみ。3.7/3.8は lpoke st,136,下位 : lpoke st,140,上位
; QuotaNonPagedPoolUsage : UINT_PTR (+144, 8byte) qpoke st,144,値 / qpeek(st,144) ※IronHSPのみ。3.7/3.8は lpoke st,144,下位 : lpoke st,148,上位
; PagefileUsage : UINT_PTR (+152, 8byte) qpoke st,152,値 / qpeek(st,152) ※IronHSPのみ。3.7/3.8は lpoke st,152,下位 : lpoke st,156,上位
; PeakPagefileUsage : UINT_PTR (+160, 8byte) qpoke st,160,値 / qpeek(st,160) ※IronHSPのみ。3.7/3.8は lpoke st,160,下位 : lpoke st,164,上位
; PrivateUsage : UINT_PTR (+168, 8byte) qpoke st,168,値 / qpeek(st,168) ※IronHSPのみ。3.7/3.8は lpoke st,168,下位 : lpoke st,172,上位
; ExecuteFlags : DWORD (+176, 4byte) st.44 = 値 / 値 = st.44 (lpoke/lpeek も可)
; ImageFileName : WCHAR (+180, 520byte) varptr(st)+180 を基点に操作(520byte:入れ子/配列)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
; ※GUID・入れ子構造体はデフォルト型でないため、依存する #defstruct を先に定義(下記に同梱)。
#defstruct global FILETIME
#field int dwLowDateTime
#field int dwHighDateTime
#endstruct
#defstruct global PSS_PROCESS_INFORMATION
#field int ExitStatus
#field intptr PebBaseAddress
#field intptr AffinityMask
#field int BasePriority
#field int ProcessId
#field int ParentProcessId
#field int Flags
#field FILETIME CreateTime
#field FILETIME ExitTime
#field FILETIME KernelTime
#field FILETIME UserTime
#field int PriorityClass
#field intptr PeakVirtualSize
#field intptr VirtualSize
#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
#field int ExecuteFlags
#field wchar ImageFileName 260
#endstruct
stdim st, PSS_PROCESS_INFORMATION ; NSTRUCT 変数を確保
st->ExitStatus = 100
mes "ExitStatus=" + st->ExitStatus