JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 構造体 (winnt.h)

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

構文

typedef struct JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 {
  DWORD64                                   IoReadBytesLimit;
  DWORD64                                   IoWriteBytesLimit;
  LARGE_INTEGER                             PerJobUserTimeLimit;
  union {
    DWORD64 JobHighMemoryLimit;
    DWORD64 JobMemoryLimit;
  } DUMMYUNIONNAME;
  union {
    JOBOBJECT_RATE_CONTROL_TOLERANCE RateControlTolerance;
    JOBOBJECT_RATE_CONTROL_TOLERANCE CpuRateControlTolerance;
  } DUMMYUNIONNAME2;
  union {
    JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
    JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL CpuRateControlToleranceInterval;
  } DUMMYUNIONNAME3;
  DWORD                                     LimitFlags;
  JOBOBJECT_RATE_CONTROL_TOLERANCE          IoRateControlTolerance;
  DWORD64                                   JobLowMemoryLimit;
  JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL IoRateControlToleranceInterval;
  JOBOBJECT_RATE_CONTROL_TOLERANCE          NetRateControlTolerance;
  JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL NetRateControlToleranceInterval;
} JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2;

メンバー

IoReadBytesLimit

LimitFlags メンバーがJOB_OBJECT_LIMIT_JOB_READ_BYTESを指定した場合、このメンバーはジョブ内のすべてのプロセスによって読み取られた I/O バイトの合計に対する通知制限です。 それ以外の場合、このメンバーは無視されます。

IoWriteBytesLimit

LimitFlags パラメーターでJOB_OBJECT_LIMIT_JOB_WRITE_BYTESを指定する場合、このメンバーはジョブ内のすべてのプロセスによって書き込まれた合計 I/O バイト数の通知制限です。 それ以外の場合、このメンバーは無視されます。

PerJobUserTimeLimit

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

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

PerJobUserTimeLimit を強制可能な制限として指定し、制限を超えるジョブでプロセスを終了するには、JOBOBJECT_BASIC_LIMIT_INFORMATION構造を参照してください。

DUMMYUNIONNAME

DUMMYUNIONNAME.JobHighMemoryLimit

LimitFlags パラメーターでJOB_OBJECT_LIMIT_JOB_MEMORY_HIGHを指定した場合、このメンバーは、ジョブ内のすべてのプロセスでコミットできる仮想メモリの合計の通知の上限です (バイト単位)。 それ以外の場合、このメンバーは無視されます。

DUMMYUNIONNAME.JobMemoryLimit

LimitFlags パラメーターでJOB_OBJECT_LIMIT_JOB_MEMORYを指定した場合、このメンバーは、ジョブ内のすべてのプロセスでコミットできる仮想メモリの合計の通知の上限 (バイト単位) です。 それ以外の場合、このメンバーは無視されます。

DUMMYUNIONNAME2

DUMMYUNIONNAME2.RateControlTolerance

LimitFlags パラメーターがJOB_OBJECT_LIMIT_RATE_CONTROLを指定する場合、このメンバーは、RateControlToleranceInterval メンバーによって指定された間隔の間に、ジョブが CPU レート制御制限を超えることができる範囲を指定します。 それ以外の場合、このメンバーは無視されます。

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

意味
ToleranceLow
1
ジョブは、許容間隔の 20% の CPU レート制御制限を超える可能性があります。
ToleranceMedium
2
ジョブは、許容間隔の 40% の CPU レート制御制限を超える可能性があります。
ToleranceHigh
3
ジョブは、許容間隔の 60% の CPU レート制御制限を超える可能性があります。

DUMMYUNIONNAME2.CpuRateControlTolerance

LimitFlags パラメーターがJOB_OBJECT_LIMIT_CPU_RATE_CONTROLを指定する場合、このメンバーは、CpuRateControlToleranceInterval メンバーによって指定された間隔の間に、ジョブが CPU レート制御制限を超えることができる範囲を指定します。 それ以外の場合、このメンバーは無視されます。

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

意味
ToleranceLow
1
ジョブは、許容間隔の 20% の CPU レート制御制限を超える可能性があります。
ToleranceMedium
2
ジョブは、許容間隔の 40% の CPU レート制御制限を超える可能性があります。
ToleranceHigh
3
ジョブは、許容間隔の 60% の CPU レート制御制限を超える可能性があります。

DUMMYUNIONNAME3

DUMMYUNIONNAME3.RateControlToleranceInterval

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

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

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

DUMMYUNIONNAME3.CpuRateControlToleranceInterval

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

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

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

LimitFlags

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

意味
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 レート制御の制限は、JobObjectCpuRateInformationClass 情報クラスを使用して SetInformationJobObject を呼び出すことによって確立されます。

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

CPU レート制御の制限は、JobObjectCpuRateInformationClass 情報クラスを使用して SetInformationJobObject を呼び出すことによって確立されます。

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

I/O レート制御の制限は、 SetIoRateControlInformationJobObject を呼び出すことによって確立されます。

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

ネットワーク レート制御の制限は、JobObjectNetRateInformationClass 情報クラスを使用して SetInformationJobObject を呼び出すことによって確立されます。

IoRateControlTolerance

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 レート制御制限を超える可能性があります。

JobLowMemoryLimit

LimitFlags パラメーターでJOB_OBJECT_LIMIT_JOB_MEMORY_LOWが指定されている場合、このメンバーは、ジョブ内のすべてのプロセスでコミットできる仮想メモリの合計の通知制限の最小値です (バイト単位)。 それ以外の場合、このメンバーは無視されます。

IoRateControlToleranceInterval

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

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

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

NetRateControlTolerance

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

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

意味
ToleranceLow
1
ジョブは、許容範囲の 20% のネットワーク レート制御制限を超える可能性があります。
ToleranceMedium
2
ジョブは、許容範囲の 40% のネットワーク レート制御制限を超える可能性があります。
ToleranceHigh
3
ジョブは、許容範囲の 60% のネットワーク レート制御制限を超える可能性があります。

NetRateControlToleranceInterval

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

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

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

注釈

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

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

ジョブの CPU レート制御制限は、 JOBOBJECT_CPU_RATE_CONTROL_INFORMATION 構造で確立されます。 JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2構造体の CPU レート制御値は、通知が送信される前に、ジョブが確立された CPU レート制御制限を超えることができる量を指定します。

要件

要件
サポートされている最小のクライアント Windows 10 [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2016 [デスクトップ アプリのみ]
Header winnt.h

こちらもご覧ください

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_IO_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2

JOBOBJECT_NET_RATE_CONTROL_INFORMATION

QueryInformationJobObject

SetInformationJobObject

SetIoRateControlInformationJobObject