SetInformationJobObject 函数 (jobapi2.h)
设置作业对象的限制。
语法
BOOL SetInformationJobObject(
[in] HANDLE hJob,
[in] JOBOBJECTINFOCLASS JobObjectInformationClass,
[in] LPVOID lpJobObjectInformation,
[in] DWORD cbJobObjectInformationLength
);
参数
[in] hJob
正在设置其限制的作业的句柄。 CreateJobObject 或 OpenJobObject 函数返回此句柄。 句柄必须具有 JOB_OBJECT_SET_ATTRIBUTES 访问权限。 有关详细信息,请参阅 作业对象安全性和访问权限。
[in] JobObjectInformationClass
要设置的限制的信息类。 此参数的取值可为下列值之一:
值 | 含义 |
---|---|
|
lpJobObjectInfo 参数是指向JOBOBJECT_ASSOCIATE_COMPLETION_PORT结构的指针。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_BASIC_LIMIT_INFORMATION结构的指针。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_BASIC_UI_RESTRICTIONS结构的指针。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_CPU_RATE_CONTROL_INFORMATION结构的指针。
Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此标志。 如果启用了动态公平共享计划 (DFSS) ,则无法设置 CPU 速率,并且 SetInformationJobObject 将失败并出现错误代码 50 (“不支持请求”) 。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_END_OF_JOB_TIME_INFORMATION结构的指针。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_EXTENDED_LIMIT_INFORMATION结构的指针。 |
|
lpJobObjectInfo 参数是指向 USHORT 值的指针,该值指定要向其分配作业的处理器组列表。 cbJobObjectInfoLength 参数设置为组数据的大小。 将此值除以 sizeof(USHORT) 可确定组数。
Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此标志。 |
|
lpJobObjectInfo 参数是指向缓冲区的指针,该缓冲区包含GROUP_AFFINITY结构的数组,这些结构为作业当前分配到的处理器组指定作业的相关性。 cbJobObjectInfoLength 参数设置为组相关性数据的大小。 将此值除以 sizeof(GROUP_AFFINITY) 可确定组数。
Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此标志。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2结构的指针。
Windows 8.1、Windows Server 2012 R2、Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支持此标志。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_NET_RATE_CONTROL_INFORMATION结构的指针。
Windows 8.1、Windows Server 2012 R2、Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支持此标志。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION结构的指针。
Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP: 不支持此标志。 |
|
lpJobObjectInfo 参数是指向JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2结构的指针。
Windows 8.1、Windows Server 2012 R2、Windows 8、Windows Server 2012、Windows 7、Windows Server 2008 R2、Windows Server 2008、Windows Vista、Windows Server 2003 和 Windows XP:不支持此标志。 |
|
不支持此标志。 应用程序必须为每个进程单独设置安全限制。
Windows Server 2003 和 Windows XP: lpJobObjectInfo 参数是指向JOBOBJECT_SECURITY_LIMIT_INFORMATION结构的指针。 hJob 句柄必须具有与之关联的JOB_OBJECT_SET_SECURITY_ATTRIBUTES访问权限。 |
[in] lpJobObjectInformation
要为作业设置的限制或作业状态。 此数据的格式取决于 JobObjectInfoClass 的值。
[in] cbJobObjectInformationLength
正在设置的作业信息的大小(以字节为单位)。
返回值
如果该函数成功,则返回值为非零值。
如果函数失败,则返回值为零。 要获得更多的错误信息,请调用 GetLastError。
注解
使用 SetInformationJobObject 函数在单个调用中设置多个限制。 若要一次建立一个限制或更改限制的子集,请调用 QueryInformationJobObject 函数以获取当前限制,修改这些限制,然后调用 SetInformationJobObject。
必须单独为与作业对象关联的每个进程设置安全限制,而不是为作业对象本身设置安全限制。 有关信息,请参阅 处理安全性和访问权限。
Windows Server 2003 和 Windows XP: 使用 SetInformationJobObject 函数为作业对象设置安全限制。
若要编译使用此函数的应用程序,请将_WIN32_WINNT定义为 0x0500 或更高版本。 有关详细信息,请参阅 使用 Windows 标头。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows XP [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | jobapi2.h (包括 Windows.h) |
Library | Kernel32.lib |
DLL | Kernel32.dll |
另请参阅
JOBOBJECT_ASSOCIATE_COMPLETION_PORT
JOBOBJECT_BASIC_LIMIT_INFORMATION
JOBOBJECT_BASIC_UI_RESTRICTIONS
JOBOBJECT_CPU_RATE_CONTROL_INFORMATION
JOBOBJECT_END_OF_JOB_TIME_INFORMATION
JOBOBJECT_EXTENDED_LIMIT_INFORMATION
JOBOBJECT_LIMIT_VIOLATION_INFORMATION
JOBOBJECT_LIMIT_VIOLATION_INFORMATION_2
JOBOBJECT_NET_RATE_CONTROL_INFORMATION
JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION
JOBOBJECT_NOTIFICATION_LIMIT_INFORMATION_2