JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2 结构 (winnt.h)

包含有关作业对象的通知限制的扩展信息。 此结构由具有 JobObjectNotificationLimitInformation2 信息类的 SetInformationJobObject 和 QueryInformationJobObject 函数使用。

语法

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 字节数的 I/O 读取字节数限制。 IoReadBytesLimit 成员包含详细信息。
JOB_OBJECT_LIMIT_JOB_WRITE_BYTES
0x00020000
建立与作业关联的所有进程写入的 I/O 字节数的作业范围 I/O 字节数的 I/O 写入字节数限制。 IoWriteBytesLimit 成员包含详细信息。
JOB_OBJECT_LIMIT_JOB_TIME
0x00000004
为作业建立用户模式执行时间限制。 PerJobUserTimeLimit 成员包含其他信息。
JOB_OBJECT_LIMIT_CPU_RATE_CONTROL
0x00040000
为作业建立的 CPU 速率控制限制的通知阈值。 CpuRateControlToleranceCpuRateControlToleranceInterval 成员包含其他信息。

CPU 速率控制限制是通过使用 JobObjectCpuRateInformationClass 信息类调用 SetInformationJobObject 建立的

JOB_OBJECT_LIMIT_RATE_CONTROL
0x00040000
为作业建立的 CPU 速率控制限制的通知阈值。 RateControlToleranceRateControlToleranceInterval 成员包含其他信息。

CPU 速率控制限制是通过使用 JobObjectCpuRateInformationClass 信息类调用 SetInformationJobObject 建立的

JOB_OBJECT_LIMIT_IO_RATE_CONTROL
0x00080000
为作业建立的 I/O 速率控制限制的通知阈值。 IoRateControlToleranceIoRateControlToleranceInterval 成员包含其他信息。

I/O 速率控制限制是通过调用 SetIoRateControlInformationJobObject 建立的

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消息时,它必须使用 JobObjectLimitViolationInformationInformation2 信息类调用 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