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

PSS_PROCESS_INFORMATION

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

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

フィールド

フィールドサイズx64x86説明
ExitStatusDWORD4+0+0プロセスの終了コード。実行中はSTILL_ACTIVE。
PebBaseAddressvoid*8/4+8+4プロセス環境ブロック(PEB)のベースアドレス。
AffinityMaskUINT_PTR8/4+16+8プロセスのプロセッサアフィニティマスク。
BasePriorityINT4+24+12プロセスの基本優先度。
ProcessIdDWORD4+28+16対象プロセスのID。
ParentProcessIdDWORD4+32+20親プロセスのID。
FlagsPSS_PROCESS_FLAGS4+36+24スナップショットのプロセスフラグ(PSS_PROCESS_FLAGS)。
CreateTimeFILETIME8+40+28プロセスの作成時刻(FILETIME)。
ExitTimeFILETIME8+48+36プロセスの終了時刻。実行中は0。
KernelTimeFILETIME8+56+44カーネルモードで費やした累積時間。
UserTimeFILETIME8+64+52ユーザーモードで費やした累積時間。
PriorityClassDWORD4+72+60プロセスの優先度クラス。
PeakVirtualSizeUINT_PTR8/4+80+64仮想メモリ使用量のピーク値。単位はバイト。
VirtualSizeUINT_PTR8/4+88+68現在の仮想メモリ使用量。単位はバイト。
PageFaultCountDWORD4+96+72発生したページフォルト数。
PeakWorkingSetSizeUINT_PTR8/4+104+76ワーキングセットサイズのピーク値。単位はバイト。
WorkingSetSizeUINT_PTR8/4+112+80現在のワーキングセットサイズ。単位はバイト。
QuotaPeakPagedPoolUsageUINT_PTR8/4+120+84ページプール使用量のピーク値。
QuotaPagedPoolUsageUINT_PTR8/4+128+88現在のページプール使用量。
QuotaPeakNonPagedPoolUsageUINT_PTR8/4+136+92非ページプール使用量のピーク値。
QuotaNonPagedPoolUsageUINT_PTR8/4+144+96現在の非ページプール使用量。
PagefileUsageUINT_PTR8/4+152+100現在のページファイル使用量。単位はバイト。
PeakPagefileUsageUINT_PTR8/4+160+104ページファイル使用量のピーク値。単位はバイト。
PrivateUsageUINT_PTR8/4+168+108プライベートコミット量。単位はバイト。
ExecuteFlagsDWORD4+176+112プロセスのDEP等の実行フラグ。
ImageFileNameWCHAR520+180+116実行イメージのファイル名(ワイド文字列)。

各言語での定義

#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 Structure
import 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