JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 結構 (winnt.h)

包含作業物件之通知限制的擴充資訊。 這個結構是由 SetInformationJobObjectQueryInformationJobObject 函式搭配 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
容錯間隔為一分鐘。
ToleranceIntervalLong
3
容錯間隔為10分鐘。

DUMMYUNIONNAME3.CpuRateControlToleranceInterval

如果 LimitFlags 參數指定 JOB_OBJECT_CPU_LIMIT_RATE_CONTROL,此成員會指定監視作業 CPU 使用量的間隔,以判斷作業是否已超過其 CPU 速率控制限制。 否則,會忽略這個成員。

這個成員可以是下列其中一個值。 如果未指定任何值,則會使用 ToleranceIntervalShort

意義
ToleranceIntervalShort
1
容錯間隔為10秒。
ToleranceIntervalMedium
2
容錯間隔為一分鐘。
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 速率控制限制的通知閾值。 CpuRateControlToleranceCpuRateControlToleranceInterval 成員包含其他資訊。

使用 JobObjectCpuRateInformationClass 資訊類別呼叫 SetInformationJobObject 來建立 CPU 速率控制限制。

JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
建立針對作業所建立之 CPU 速率控制限制的通知閾值。 RateControlToleranceRateControlToleranceInterval成員包含其他資訊。

使用 JobObjectCpuRateInformationClass 資訊類別呼叫 SetInformationJobObject 來建立 CPU 速率控制限制。

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
建立針對作業所建立 I/O 速率控制限制的通知閾值。 IoRateControlToleranceIoRateControlToleranceInterval 成員包含其他資訊。

藉由呼叫 SetIoRateControlInformationJobObject 來建立 I/O 速率控制限制。

JOB_OBJECT_LIMIT_NET_RATE_CONTROL
0x00100000
建立針對作業所建立網路速率控制限制的通知閾值。 NetRateControlToleranceNetRateControlToleranceInterval 成員包含其他資訊。

網路速率控制限制的建立方式是使用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
容錯間隔為一分鐘。
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
容錯間隔為一分鐘。
ToleranceIntervalLong
3
容錯間隔為10分鐘。

備註

超過通知限制時,系統會將 JOB_OBJECT_MSG_NOTIFICATION_LIMIT 訊息傳送至與作業相關聯的 I/O 完成埠。 作業中的進程會繼續執行,而且可以繼續配置記憶體,或傳輸超出指定限制的讀取或寫入位元組。

當監視 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 [僅限傳統型應用程式]
標頭 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