winnt.h) (JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION 結構

包含作業物件之通知限制的相關信息。 SetInformationJobObjectQueryInformationJobObject 函式會使用這個結構與 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
容錯間隔為一分鐘。
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 速率控制限制的通知閾值。 RateControlToleranceRateControlToleranceInterval成員包含其他資訊。

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

備註

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

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

另請參閱

JOBOBJECT_CPU_RATE_CONTROL_INFORMATION

JOBOBJECT_LIMIT_VIOLATION_INFORMATION

QueryInformationJobObject

SetInformationJobObject