作业(Job)内核对象
2017-06-21 15:21
197 查看
Windows提供了一个作业(job)内核对象,它允许你将进程组合在一起并创建一个"沙箱"来限制进程能够做什么.最好将作业对象想象成一个进程容器.但是,即使作业中只包含一个进程,也是非常有用的,因为这样可以对进程施加平时不能施加的限制.
1、CreateJobObject
功能:创建一个新的作业内核对象(若该作业已经存在,则返回一个指向该作业的句柄)
函数定义:
HANDLE WINAPI CreateJobObject(
__in LPSECURITY_ATTRIBUTES lpJobAttributes,
__in LPCTSTR lpName
);
__in LPSECURITY_ATTRIBUTES lpJobAttributes 改作业的安全描述符
__in LPCTSTR lpName 作业名字
2、OpenJobObject
功能:打开一个作业内核对象
函数定义:
HANDLE WINAPI OpenJobObject(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandles,
__in LPCTSTR lpName
);
__in DWORD dwDesiredAccess 对该作业的访问权限
__in BOOL bInheritHandles 指示该作业是否可被子进程继承
__in LPCTSTR lpName 作业对象名
3、IsProcessInJob
功能:验证某一个进程是否存在于作业中
函数定义:
BOOL WINAPI IsProcessInJob(
__in HANDLE ProcessHandle,
__in HANDLE JobHandle,
__out PBOOL Result
);
__in HANDLE ProcessHandle 被测试进程的句柄
__in HANDLE JobHandle 作业的句柄,若为空,则测试进程是否存在于任一作业中
__out PBOOL Result 存储测试结果的指针
4、SetInformationJobObject
功能:给作业加上各种限制
函数定义:
BOOL WINAPI SetInformationJobObject(
__in HANDLE hJob,
__in JOBOBJECTINFOCLASS JobObjectInfoClass,
__in LPVOID lpJobObjectInfo,
__in DWORD cbJobObjectInfoLength
);
__in HANDLE hJob 标识要限制的作业
__in JOBOBJECTINFOCLASS JobObjectInfoClass 枚举类型,用于指明要使用的限制类型
__in LPVOID lpJobObjectInfo 包含限制设置值的数据结构的地址
__in DWORD cbJobObjectInfoLength 指明第三个参数的大小
5、QueryInformationJobObject
功能:查询作业对象的信息
函数定义:
BOOL WINAPI QueryInformationJobObject(
__in HANDLE hJob,
__in JOBOBJECTINFOCLASS JobObjectInfoClass,
__out LPVOID lpJobObjectInfo,
__in DWORD cbJobObjectInfoLength,
__out LPDWORD lpReturnLength
);
__in HANDLE hJob 标识要查询的作业
__in JOBOBJECTINFOCLASS JobObjectInfoClass 枚举类型,用于指明要使用的限制类型
__out LPVOID lpJobObjectInfo 包含限制设置值的数据结构的地址
__in DWORD cbJobObjectInfoLength 指明第三个参数的大小
__out LPDWORD lpReturnLength 指明多少字节放入了缓存,如果你愿意的话,可以(并且通常)为该参数传递N U L L
其中,第三个和第四个参数也有和 SetInformationJobObject中同样的关系。
6、AssignProcessToJobObject
功能:将进程放入作业
函数定义:
BOOL WINAPI AssignProcessToJobObject(
__in HANDLE hJob,
__in HANDLE hProcess
);
__in HANDLE hJob 存放进程的作业
__in HANDLE hProcess 将放作业的进程
7、TerminateJobObject
功能:杀死作业内的所有进程
函数定义:
BOOL WINAPI TerminateJobObject(
__in HANDLE hJob,
__in UINT uExitCode
);
__in HANDLE hJob 将要执行该操作的作业
__in UINT uExitCode 所有进程的退出代码
1、CreateJobObject
功能:创建一个新的作业内核对象(若该作业已经存在,则返回一个指向该作业的句柄)
函数定义:
HANDLE WINAPI CreateJobObject(
__in LPSECURITY_ATTRIBUTES lpJobAttributes,
__in LPCTSTR lpName
);
__in LPSECURITY_ATTRIBUTES lpJobAttributes 改作业的安全描述符
__in LPCTSTR lpName 作业名字
2、OpenJobObject
功能:打开一个作业内核对象
函数定义:
HANDLE WINAPI OpenJobObject(
__in DWORD dwDesiredAccess,
__in BOOL bInheritHandles,
__in LPCTSTR lpName
);
__in DWORD dwDesiredAccess 对该作业的访问权限
__in BOOL bInheritHandles 指示该作业是否可被子进程继承
__in LPCTSTR lpName 作业对象名
3、IsProcessInJob
功能:验证某一个进程是否存在于作业中
函数定义:
BOOL WINAPI IsProcessInJob(
__in HANDLE ProcessHandle,
__in HANDLE JobHandle,
__out PBOOL Result
);
__in HANDLE ProcessHandle 被测试进程的句柄
__in HANDLE JobHandle 作业的句柄,若为空,则测试进程是否存在于任一作业中
__out PBOOL Result 存储测试结果的指针
4、SetInformationJobObject
功能:给作业加上各种限制
函数定义:
BOOL WINAPI SetInformationJobObject(
__in HANDLE hJob,
__in JOBOBJECTINFOCLASS JobObjectInfoClass,
__in LPVOID lpJobObjectInfo,
__in DWORD cbJobObjectInfoLength
);
__in HANDLE hJob 标识要限制的作业
__in JOBOBJECTINFOCLASS JobObjectInfoClass 枚举类型,用于指明要使用的限制类型
__in LPVOID lpJobObjectInfo 包含限制设置值的数据结构的地址
__in DWORD cbJobObjectInfoLength 指明第三个参数的大小
限制类型 | 第二个参数的值 | 第三个参数的结构 |
基本限制 | JobObjectBasicLimitInformation | JOBOBJECT_BASIC_LIMIT_INFORMATION |
扩展基本限制 | JobObjectExtendedLimitInformation | JOBOBJECT_EXTENDED_LIMIT_INFORMATION |
基本UI限制 | JobObjectBasicUIRestrictions | JOBOBJECT_BASIC_UI_RESTRICTIONS |
安全性限制 | JobObjectSecurityLimitInformation | JOBOBJECT_SECURITY_LIMIT_INFORMATION |
关联完成端口限制 | JobObjectAssociateCompletionPortInformation | JOBOBJECT_ASSOCIATE_COMPLETION_PORT |
功能:查询作业对象的信息
函数定义:
BOOL WINAPI QueryInformationJobObject(
__in HANDLE hJob,
__in JOBOBJECTINFOCLASS JobObjectInfoClass,
__out LPVOID lpJobObjectInfo,
__in DWORD cbJobObjectInfoLength,
__out LPDWORD lpReturnLength
);
__in HANDLE hJob 标识要查询的作业
__in JOBOBJECTINFOCLASS JobObjectInfoClass 枚举类型,用于指明要使用的限制类型
__out LPVOID lpJobObjectInfo 包含限制设置值的数据结构的地址
__in DWORD cbJobObjectInfoLength 指明第三个参数的大小
__out LPDWORD lpReturnLength 指明多少字节放入了缓存,如果你愿意的话,可以(并且通常)为该参数传递N U L L
其中,第三个和第四个参数也有和 SetInformationJobObject中同样的关系。
6、AssignProcessToJobObject
功能:将进程放入作业
函数定义:
BOOL WINAPI AssignProcessToJobObject(
__in HANDLE hJob,
__in HANDLE hProcess
);
__in HANDLE hJob 存放进程的作业
__in HANDLE hProcess 将放作业的进程
7、TerminateJobObject
功能:杀死作业内的所有进程
函数定义:
BOOL WINAPI TerminateJobObject(
__in HANDLE hJob,
__in UINT uExitCode
);
__in HANDLE hJob 将要执行该操作的作业
__in UINT uExitCode 所有进程的退出代码
相关文章推荐
- 利用内核对象----互斥量实现应用程序只运行一个实例
- windows程序设计 and windows核心编程(内核对象理论)
- 共享跨越进程边界内核对象的方法?
- sp_update_job (Transact-SQL) 更改作业的属性
- windows之内核对象2
- sp_add_jobserver (Transact-SQL) 在指定的服务器中,以指定的作业为目标
- VIsual Basic 2005 - 如何使用 SqlBulkCopy 对象来执行大量复制作业
- 内核对象
- 用内核对象同步线程
- JobCenter--作业管理系统
- Gloomy对Windows内核的分析(对象管理器)
- WINDOWS内核对象
- 如何区分内核对象和非内核对象?
- Gloomy对Windows内核的分析(对象管理器)
- Oracle作业(JOB)更新next_date的探讨
- 《Windows核心编程》笔记2 --- 内核对象二
- SQL Server使用Job自动作业
- VIsual Basic 2005 - 如何使用 SqlBulkCopy 对象来执行大量复制作业
- windows之内核对象
- SQL Server:定时作业 job 的设置方法