JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION構造体 (winnt.h)

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

構文

typedef struct _JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION {
  DWORD64                                   IoReadBytesLimit;
  DWORD64                                   IoWriteBytesLimit;
  LARGE_INTEGER                             PerJobUserTimeLimit;
  DWORD64                                   JobMemoryLimit;
  JOBOBJECT_RATE_CONTROL_TOLERANCE          RateControlTolerance;
  JOBOBJECT_RATE_CONTROL_TOLERANCE_INTERVAL RateControlToleranceInterval;
  DWORD                                     LimitFlags;
} JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION, *PJOBOBJECT_NOTIFICATION_LIMIT_INFORMATION;

メンバー

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構造体を参照してください。

JobMemoryLimit

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

JobMemoryLimit を強制可能な制限として指定し、制限を超えるジョブのプロセスがメモリをコミットし続けないようにするには、JOBOBJECT_EXTENDED_LIMIT_INFORMATION構造体を参照してください。

RateControlTolerance

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

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

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

RateControlToleranceInterval

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

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

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

LimitFlags

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

意味
JOB_OBJECT_LIMIT_JOB_MEMORY
0x00000200
コミットされたメモリ制限を、ジョブに関連付けられているすべてのプロセスのコミット済みメモリのジョブ全体の合計に設定します。 JobMemoryLimit メンバーには追加情報が含まれています。
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_RATE_CONTROL
0x00040000
ジョブに対して確立された CPU レート制御制限の通知しきい値を確立します。 RateControlTolerance メンバーと RateControlToleranceInterval メンバーには、追加情報が含まれています。

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

注釈

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

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

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

要件

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

こちらもご覧ください

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject