Win32 API 日本語リファレンス
ホームSystem.JobObjects › JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2

JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2

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

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

フィールド

フィールドサイズx64x86説明
IoReadBytesLimitULONGLONG8+0+0LimitFlags メンバーで JOB_OBJECT_LIMIT_JOB_READ_BYTES が指定されている場合、このメンバーは、ジョブ内のすべてのプロセスによって読み取られた合計 I/O バイト数に対する通知制限です。それ以外の場合、このメンバーは無視されます。
IoWriteBytesLimitULONGLONG8+8+8LimitFlags パラメーターで JOB_OBJECT_LIMIT_JOB_WRITE_BYTES が指定されている場合、このメンバーは、ジョブ内のすべてのプロセスによって書き込まれた合計 I/O バイト数に対する通知制限です。それ以外の場合、このメンバーは無視されます。
PerJobUserTimeLimitLONGLONG8+16+16

LimitFlags パラメーターで JOB_OBJECT_LIMIT_JOB_TIME が指定されている場合、このメンバーは、ジョブごとのユーザーモード実行時間に対する通知制限 (100 ナノ秒単位) です。それ以外の場合、このメンバーは無視されます。

この制限を設定すると、システムは、ジョブに関連付けられたプロセスの累積実行時間をこの制限に加算します。たとえば、ジョブに関連付けられたプロセスがすでに 5 分間のユーザーモード実行時間を累積している状態で制限を 1 分に設定した場合、実際に適用される制限は 6 分になります。

PerJobUserTimeLimit を強制可能な制限として指定し、制限を超えたジョブ内のプロセスを終了させる方法については、JOBOBJECT_BASIC_LIMIT_INFORMATION 構造体を参照してください。

Anonymous1_Anonymous1_e__Union8+24+24JobHighMemoryLimit等を保持する無名共用体。
Anonymous2_Anonymous2_e__Union4+32+32CPUレート制御許容度を保持する無名共用体。
Anonymous3_Anonymous3_e__Union4+36+36CPUレート制御許容度間隔を保持する無名共用体。
LimitFlagsJOB_OBJECT_LIMIT4+40+40

有効になっている制限フラグです。このメンバーは、他の構造体メンバーが使用されるかどうかを決定するビットフィールドです。次の値を任意に組み合わせて指定できます。

意味
JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH
0x00000200
ジョブに関連付けられたすべてのプロセスのプライベート コミット メモリのジョブ全体での合計に対する通知しきい値を設定します。JobHighMemoryLimit メンバーに追加情報が含まれます。
JOB_OBJECT_LIMIT_JOB_MEMORY_LOW
0x00008000
ジョブに関連付けられたすべてのプロセスのプライベート コミット メモリのジョブ全体での合計に対する通知最小値を設定します。この値を設定すると、プライベート コミット メモリの量がこのしきい値を下回ったときに通知が送信されます。JobLowMemoryLimit メンバーに追加情報が含まれます。
JOB_OBJECT_LIMIT_JOB_READ_BYTES
0x00010000
ジョブに関連付けられたすべてのプロセスによって読み取られた I/O バイト数のジョブ全体での合計に対して、I/O 読み取りバイト数制限を設定します。IoReadBytesLimit メンバーに詳細情報が含まれます。
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
ジョブに関連付けられたすべてのプロセスによって書き込まれた I/O バイト数のジョブ全体での合計に対して、I/O 書き込みバイト数制限を設定します。IoWriteBytesLimit メンバーに詳細情報が含まれます。
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
ジョブのユーザーモード実行時間に対する制限を設定します。PerJobUserTimeLimit メンバーに追加情報が含まれます。
JOB_OBJECT_LIMIT_CPU_RATE_CONTROL
0x00040000
ジョブに対して設定された CPU レート制御制限の通知しきい値を設定します。CpuRateControlTolerance および CpuRateControlToleranceInterval メンバーに追加情報が含まれます。

CPU レート制御制限は、SetInformationJobObjectJobObjectCpuRateInformationClass 情報クラスと共に呼び出すことで設定されます。

JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
ジョブに対して設定された CPU レート制御制限の通知しきい値を設定します。RateControlTolerance および RateControlToleranceInterval メンバーに追加情報が含まれます。

CPU レート制御制限は、SetInformationJobObjectJobObjectCpuRateInformationClass 情報クラスと共に呼び出すことで設定されます。

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
ジョブに対して設定された I/O レート制御制限の通知しきい値を設定します。IoRateControlTolerance および IoRateControlToleranceInterval メンバーに追加情報が含まれます。

I/O レート制御制限は、SetIoRateControlInformationJobObject を呼び出すことで設定されます。

JOB_OBJECT_LIMIT_NET_RATE_CONTROL
0x00100000
ジョブに対して設定されたネットワーク レート制御制限の通知しきい値を設定します。NetRateControlTolerance および NetRateControlToleranceInterval メンバーに追加情報が含まれます。

ネットワーク レート制御制限は、SetInformationJobObjectJobObjectNetRateInformationClass 情報クラスと共に呼び出すことで設定されます。

IoRateControlToleranceJOBOBJECT_RATE_CONTROL_TOLERANCE4+44+44

LimitFlags パラメーターで JOB_OBJECT_LIMIT_IO_RATE_CONTROL が指定されている場合、このメンバーは、IoRateControlToleranceInterval メンバーで指定された間隔中にジョブが I/O レート制御制限をどの程度超過できるかを指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceHigh が使用されます。

意味
ToleranceLow
1
ジョブは、許容間隔の 20% の間、I/O レート制御制限を超過できます。
ToleranceMedium
2
ジョブは、許容間隔の 40% の間、I/O レート制御制限を超過できます。
ToleranceHigh
3
ジョブは、許容間隔の 60% の間、I/O レート制御制限を超過できます。
JobLowMemoryLimitULONGLONG8+48+48LimitFlags パラメーターで JOB_OBJECT_LIMIT_JOB_MEMORY_LOW が指定されている場合、このメンバーは、ジョブ内のすべてのプロセスがコミットできる合計仮想メモリに対する通知下限 (バイト単位) です。それ以外の場合、このメンバーは無視されます。
IoRateControlToleranceIntervalJOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL4+56+56

LimitFlags パラメーターで JOB_OBJECT_IO_LIMIT_RATE_CONTROL が指定されている場合、このメンバーは、ジョブが I/O レート制御制限を超過したかどうかを判断するためにジョブのI/O 使用量を監視する間隔を指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceIntervalShort が使用されます。

意味
ToleranceIntervalShort
1
許容間隔は 10 秒です。
ToleranceIntervalMedium
2
許容間隔は 1 分です。
ToleranceIntervalLong
3
許容間隔は 10 分です。
NetRateControlToleranceJOBOBJECT_RATE_CONTROL_TOLERANCE4+60+60

LimitFlags パラメーターで JOB_OBJECT_LIMIT_IO_RATE_CONTROL が指定されている場合、このメンバーは、NetRateControlToleranceInterval メンバーで指定された間隔中にジョブが ネットワーク レート制御制限をどの程度超過できるかを指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceHigh が使用されます。

意味
ToleranceLow
1
ジョブは、許容間隔の 20% の間、ネットワーク レート制御制限を超過できます。
ToleranceMedium
2
ジョブは、許容間隔の 40% の間、ネットワーク レート制御制限を超過できます。
ToleranceHigh
3
ジョブは、許容間隔の 60% の間、ネットワーク レート制御制限を超過できます。
NetRateControlToleranceIntervalJOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL4+64+64

LimitFlags パラメーターで JOB_OBJECT_NET_LIMIT_RATE_CONTROL が指定されている場合、このメンバーは、ジョブが ネットワーク レート制御制限を超過したかどうかを判断するためにジョブのネットワーク使用量を監視する間隔を指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceIntervalShort が使用されます。

意味
ToleranceIntervalShort
1
許容間隔は 10 秒です。
ToleranceIntervalMedium
2
許容間隔は 1 分です。
ToleranceIntervalLong
3
許容間隔は 10 分です。

共用体: _Anonymous1_e__Union x64 8B / x86 8B

フィールドサイズx64x86説明
JobHighMemoryLimitULONGLONG8+0+0LimitFlags パラメーターで JOB_OBJECT_LIMIT_JOB_MEMORY_HIGH が指定されている場合、このメンバーは、ジョブ内のすべてのプロセスがコミットできる合計仮想メモリに対する通知上限 (バイト単位) です。それ以外の場合、このメンバーは無視されます。
JobMemoryLimitULONGLONG8+0+0LimitFlags パラメーターで JOB_OBJECT_LIMIT_JOB_MEMORY が指定されている場合、このメンバーは、ジョブ内のすべてのプロセスがコミットできる合計仮想メモリに対する通知上限 (バイト単位) です。それ以外の場合、このメンバーは無視されます。

共用体: _Anonymous2_e__Union x64 4B / x86 4B

フィールドサイズx64x86説明
RateControlToleranceJOBOBJECT_RATE_CONTROL_TOLERANCE4+0+0

LimitFlags パラメーターで JOB_OBJECT_LIMIT_RATE_CONTROL が指定されている場合、このメンバーは、RateControlToleranceInterval メンバーで指定された間隔中にジョブが CPU レート制御制限をどの程度超過できるかを指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceHigh が使用されます。

意味
ToleranceLow
1
ジョブは、許容間隔の 20% の間、CPU レート制御制限を超過できます。
ToleranceMedium
2
ジョブは、許容間隔の 40% の間、CPU レート制御制限を超過できます。
ToleranceHigh
3
ジョブは、許容間隔の 60% の間、CPU レート制御制限を超過できます。
CpuRateControlToleranceJOBOBJECT_RATE_CONTROL_TOLERANCE4+0+0

LimitFlags パラメーターで JOB_OBJECT_LIMIT_CPU_RATE_CONTROL が指定されている場合、このメンバーは、CpuRateControlToleranceInterval メンバーで指定された間隔中にジョブが CPU レート制御制限をどの程度超過できるかを指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceHigh が使用されます。

意味
ToleranceLow
1
ジョブは、許容間隔の 20% の間、CPU レート制御制限を超過できます。
ToleranceMedium
2
ジョブは、許容間隔の 40% の間、CPU レート制御制限を超過できます。
ToleranceHigh
3
ジョブは、許容間隔の 60% の間、CPU レート制御制限を超過できます。

共用体: _Anonymous3_e__Union x64 4B / x86 4B

フィールドサイズx64x86説明
RateControlToleranceIntervalJOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL4+0+0

LimitFlags パラメーターで JOB_OBJECT_LIMIT_RATE_CONTROL が指定されている場合、このメンバーは、ジョブが CPU レート制御制限を超過したかどうかを判断するためにジョブのCPU 使用率を監視する間隔を指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceIntervalShort が使用されます。

意味
ToleranceIntervalShort
1
許容間隔は 10 秒です。
ToleranceIntervalMedium
2
許容間隔は 1 分です。
ToleranceIntervalLong
3
許容間隔は 10 分です。
CpuRateControlToleranceIntervalJOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL4+0+0

LimitFlags パラメーターで JOB_OBJECT_CPU_LIMIT_RATE_CONTROL が指定されている場合、このメンバーは、ジョブが CPU レート制御制限を超過したかどうかを判断するためにジョブのCPU 使用率を監視する間隔を指定します。それ以外の場合、このメンバーは無視されます。

このメンバーには次のいずれかの値を指定できます。値が指定されていない場合は、ToleranceIntervalShort が使用されます。

意味
ToleranceIntervalShort
1
許容間隔は 10 秒です。
ToleranceIntervalMedium
2
許容間隔は 1 分です。
ToleranceIntervalLong
3
許容間隔は 10 分です。

公式ドキュメント

ジョブ オブジェクトの通知制限に関する拡張情報を格納します。この構造体は、SetInformationJobObject および QueryInformationJobObject 関数で JobObjectNotificationLimitInformation2 情報クラスと共に使用されます。

解説(Remarks)

通知制限を超えると、システムは、ジョブに関連付けられた I/O 完了ポートに JOB_OBJECT_MSG_NOTIFICATION_LIMIT メッセージを送信します。ジョブ内のプロセスは引き続き実行され、指定された制限を超えて、メモリの割り当てや読み取り/書き込みバイトの転送を続行できます。

I/O 完了ポートを監視しているアプリケーションは、JOB_OBJECT_MSG_NOTIFICATION_LIMIT メッセージを受信したら、QueryInformationJobObjectJobObjectLimitViolationInformation2 情報クラスと共に呼び出す必要があります。制限違反情報は、クエリ時点で超過していたすべての通知制限に関する情報を含む JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2 構造体で受け取ります。システムは、QueryInformationJobObject が呼び出されるまで、次の JOB_OBJECT_MSG_NOTIFICATION_LIMIT メッセージを送信しません。

ジョブの CPU レート制御制限は、JOBOBJECT_CPU_RATE_CONTROL_INFORMATION 構造体で設定されます。JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 構造体の CPU レート制御値は、通知が送信されるまでにジョブが設定済みの CPU レート制御制限をどの程度超過できるかを指定します。

出典・ライセンス: 上記「公式ドキュメント」の内容は Microsoft の Win32 API ドキュメント(MicrosoftDocs/sdk-api)を日本語に翻訳・改変したものです。© Microsoft Corporation. CC BY 4.0 で提供。
Microsoft 公式リファレンス: 英語 (en-us) · 日本語 (ja-jp) · 原文ソース (GitHub)

各言語での定義

#include <windows.h>

// JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2  (x64 72 / x86 72 バイト)
typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {
    ULONGLONG IoReadBytesLimit;
    ULONGLONG IoWriteBytesLimit;
    LONGLONG PerJobUserTimeLimit;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
    _Anonymous3_e__Union Anonymous3;
    JOB_OBJECT_LIMIT LimitFlags;
    JOBOBJECT_RATE_CONTROL_TOLERANCE IoRateControlTolerance;
    ULONGLONG JobLowMemoryLimit;
    JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval;
    JOBOBJECT_RATE_CONTROL_TOLERANCE NetRateControlTolerance;
    JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL NetRateControlToleranceInterval;
} JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2;
using System;
using System.Runtime.InteropServices;

[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2
{
    public ulong IoReadBytesLimit;
    public ulong IoWriteBytesLimit;
    public long PerJobUserTimeLimit;
    public _Anonymous1_e__Union Anonymous1;
    public _Anonymous2_e__Union Anonymous2;
    public _Anonymous3_e__Union Anonymous3;
    public uint LimitFlags;
    public int IoRateControlTolerance;
    public ulong JobLowMemoryLimit;
    public int IoRateControlToleranceInterval;
    public int NetRateControlTolerance;
    public int NetRateControlToleranceInterval;
}
Imports System.Runtime.InteropServices

<StructLayout(LayoutKind.Sequential, CharSet:=CharSet.Unicode)>
Public Structure JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2
    Public IoReadBytesLimit As ULong
    Public IoWriteBytesLimit As ULong
    Public PerJobUserTimeLimit As Long
    Public Anonymous1 As _Anonymous1_e__Union
    Public Anonymous2 As _Anonymous2_e__Union
    Public Anonymous3 As _Anonymous3_e__Union
    Public LimitFlags As UInteger
    Public IoRateControlTolerance As Integer
    Public JobLowMemoryLimit As ULong
    Public IoRateControlToleranceInterval As Integer
    Public NetRateControlTolerance As Integer
    Public NetRateControlToleranceInterval As Integer
End Structure
import ctypes
from ctypes import wintypes

class JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2(ctypes.Structure):
    _fields_ = [
        ("IoReadBytesLimit", ctypes.c_ulonglong),
        ("IoWriteBytesLimit", ctypes.c_ulonglong),
        ("PerJobUserTimeLimit", ctypes.c_longlong),
        ("Anonymous1", _Anonymous1_e__Union),
        ("Anonymous2", _Anonymous2_e__Union),
        ("Anonymous3", _Anonymous3_e__Union),
        ("LimitFlags", wintypes.DWORD),
        ("IoRateControlTolerance", ctypes.c_int),
        ("JobLowMemoryLimit", ctypes.c_ulonglong),
        ("IoRateControlToleranceInterval", ctypes.c_int),
        ("NetRateControlTolerance", ctypes.c_int),
        ("NetRateControlToleranceInterval", ctypes.c_int),
    ]
#[repr(C)]
pub struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {
    pub IoReadBytesLimit: u64,
    pub IoWriteBytesLimit: u64,
    pub PerJobUserTimeLimit: i64,
    pub Anonymous1: _Anonymous1_e__Union,
    pub Anonymous2: _Anonymous2_e__Union,
    pub Anonymous3: _Anonymous3_e__Union,
    pub LimitFlags: u32,
    pub IoRateControlTolerance: i32,
    pub JobLowMemoryLimit: u64,
    pub IoRateControlToleranceInterval: i32,
    pub NetRateControlTolerance: i32,
    pub NetRateControlToleranceInterval: i32,
}
import "golang.org/x/sys/windows"

type JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 struct {
	IoReadBytesLimit uint64
	IoWriteBytesLimit uint64
	PerJobUserTimeLimit int64
	Anonymous1 _Anonymous1_e__Union
	Anonymous2 _Anonymous2_e__Union
	Anonymous3 _Anonymous3_e__Union
	LimitFlags uint32
	IoRateControlTolerance int32
	JobLowMemoryLimit uint64
	IoRateControlToleranceInterval int32
	NetRateControlTolerance int32
	NetRateControlToleranceInterval int32
}
type
  JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 = record
    IoReadBytesLimit: UInt64;
    IoWriteBytesLimit: UInt64;
    PerJobUserTimeLimit: Int64;
    Anonymous1: _Anonymous1_e__Union;
    Anonymous2: _Anonymous2_e__Union;
    Anonymous3: _Anonymous3_e__Union;
    LimitFlags: DWORD;
    IoRateControlTolerance: Integer;
    JobLowMemoryLimit: UInt64;
    IoRateControlToleranceInterval: Integer;
    NetRateControlTolerance: Integer;
    NetRateControlToleranceInterval: Integer;
  end;
const JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 = extern struct {
    IoReadBytesLimit: u64,
    IoWriteBytesLimit: u64,
    PerJobUserTimeLimit: i64,
    Anonymous1: _Anonymous1_e__Union,
    Anonymous2: _Anonymous2_e__Union,
    Anonymous3: _Anonymous3_e__Union,
    LimitFlags: u32,
    IoRateControlTolerance: i32,
    JobLowMemoryLimit: u64,
    IoRateControlToleranceInterval: i32,
    NetRateControlTolerance: i32,
    NetRateControlToleranceInterval: i32,
};
type
  JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {.bycopy.} = object
    IoReadBytesLimit: uint64
    IoWriteBytesLimit: uint64
    PerJobUserTimeLimit: int64
    Anonymous1: _Anonymous1_e__Union
    Anonymous2: _Anonymous2_e__Union
    Anonymous3: _Anonymous3_e__Union
    LimitFlags: uint32
    IoRateControlTolerance: int32
    JobLowMemoryLimit: uint64
    IoRateControlToleranceInterval: int32
    NetRateControlTolerance: int32
    NetRateControlToleranceInterval: int32
struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2
{
    ulong IoReadBytesLimit;
    ulong IoWriteBytesLimit;
    long PerJobUserTimeLimit;
    _Anonymous1_e__Union Anonymous1;
    _Anonymous2_e__Union Anonymous2;
    _Anonymous3_e__Union Anonymous3;
    uint LimitFlags;
    int IoRateControlTolerance;
    ulong JobLowMemoryLimit;
    int IoRateControlToleranceInterval;
    int NetRateControlTolerance;
    int NetRateControlToleranceInterval;
}

HSP用 定義

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

; HSP3.7/3.8 は構造体機能が無いため、4byte整数の配列変数で操作します。(x64 レイアウト)
; JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 サイズ: 72 バイト(x64)
dim st, 18    ; 4byte整数×18(構造体サイズ 72 / 4 切り上げ)
; IoReadBytesLimit : ULONGLONG (+0, 8byte)  qpoke st,0,値 / qpeek(st,0)  ※IronHSPのみ。3.7/3.8は lpoke st,0,下位 : lpoke st,4,上位
; IoWriteBytesLimit : ULONGLONG (+8, 8byte)  qpoke st,8,値 / qpeek(st,8)  ※IronHSPのみ。3.7/3.8は lpoke st,8,下位 : lpoke st,12,上位
; PerJobUserTimeLimit : LONGLONG (+16, 8byte)  qpoke st,16,値 / qpeek(st,16)  ※IronHSPのみ。3.7/3.8は lpoke st,16,下位 : lpoke st,20,上位
; Anonymous1 : _Anonymous1_e__Union (+24, 8byte)  varptr(st)+24 を基点に操作(8byte:入れ子/配列)
; Anonymous2 : _Anonymous2_e__Union (+32, 4byte)  varptr(st)+32 を基点に操作(4byte:入れ子/配列)
; Anonymous3 : _Anonymous3_e__Union (+36, 4byte)  varptr(st)+36 を基点に操作(4byte:入れ子/配列)
; LimitFlags : JOB_OBJECT_LIMIT (+40, 4byte)  st.10 = 値  /  値 = st.10   (lpoke/lpeek も可)
; IoRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE (+44, 4byte)  st.11 = 値  /  値 = st.11   (lpoke/lpeek も可)
; JobLowMemoryLimit : ULONGLONG (+48, 8byte)  qpoke st,48,値 / qpeek(st,48)  ※IronHSPのみ。3.7/3.8は lpoke st,48,下位 : lpoke st,52,上位
; IoRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL (+56, 4byte)  st.14 = 値  /  値 = st.14   (lpoke/lpeek も可)
; NetRateControlTolerance : JOBOBJECT_RATE_CONTROL_TOLERANCE (+60, 4byte)  st.15 = 値  /  値 = st.15   (lpoke/lpeek も可)
; NetRateControlToleranceInterval : JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL (+64, 4byte)  st.16 = 値  /  値 = st.16   (lpoke/lpeek も可)
; ※4byte境界の整数は添字 st.N(N=オフセット/4)で読み書き可。それ以外は peek/poke 系を使用。
; IronHSP は NSTRUCT(構造体)をサポート。32bit/64bit どちらでも同じコードで動作します。
#defstruct global JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2
    #field int64 IoReadBytesLimit
    #field int64 IoWriteBytesLimit
    #field int64 PerJobUserTimeLimit
    #field byte Anonymous1 8
    #field byte Anonymous2 4
    #field byte Anonymous3 4
    #field int LimitFlags
    #field int IoRateControlTolerance
    #field int64 JobLowMemoryLimit
    #field int IoRateControlToleranceInterval
    #field int NetRateControlTolerance
    #field int NetRateControlToleranceInterval
#endstruct

stdim st, JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2        ; NSTRUCT 変数を確保
st->IoReadBytesLimit = 100
mes "IoReadBytesLimit=" + st->IoReadBytesLimit
; ※union フィールドは byte 列で確保(NSTRUCT は union 非対応)。必要に応じ手動でアクセス。