Windows作业内核事件

本文介绍如何使用Windows API通过作业对象来管理和限制进程的行为,包括创建作业对象、将进程分配给作业、终止作业中的进程及对作业中的进程进行限制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//使用作业的目的就是为了限制和管理一组进程。在程序中可以使用CreateJobObject函数来创建作业对象,函数语法如下:
 
HANDLE CreateJobObject(
 
LPSECURITY_ATTRIBUTES lpJobAttributes, // 表示作业对象的安全属性,可以为NULL
 
LPCTSTR lpName // 作业对象的名称,其他进程可以通过该名称访问作业对象
 
);
 
//在有些操作系统中并不能直接使用CreateJobObject函数,需要用户从“Kernel32.dll”中导入。创建作业对象的代码如下:
 
typedef HANDLE (__stdcall* funCreateJobObject)(LPSECURITY_ATTRIBUTES lpJobAttributes, LPCTSTR lpName);
 
HINSTANCE hInstance = LoadLibrary(“Kernel32.dll”);
 
funCreateJobObject CreateJobObject = (funCreateJobObject)GetProcAddress(hInstance, “CreateJobObjectA”);
 
m_hJob = CreateJobObject(NULL, “ProcessGroup”);
 
FreeLibrary(hInstance);
 
//为了将进程放入作业对象中,需要在程序中调用AssignProcessToJobObject函数,该函数语法如下:
 
BOOL AssignProcessToJobObject(
 
HANDLE hJob,   // 表示作业对象句柄
 
HANDLE hProcess // 表示向作业中添加的进程句柄
 
);
 
//示例代码:
 
//(1)创建进程:
 
STARTUPINFO stInfo;
 
memset(&stInfo, 0, sizeof(STARTUPINFO));
 
PROCESS_INFORMATION procInfo;
 
memset(&procInfo, 0, sizeof(PROCESS_INFORMATION);
 
CreateProcess(NULL, “notepad.exe”, NULL, NULL, FALSE, CREATE_NEW_CONSOLE, NULL, NULL, &stInfo, &procInfo);
 
//(2)向作业添加进程:
 
BOOL ret = AssignProcessToJobObject(m_hJob, procInfo.hProcess);
 
if(ret)
     MessageBox(“向作业添加进程成功!”);
 
//终止作业中的进程:
 
//作业能够管理一组进程,当然也可以终止作业中的进程。在程序中可以使用TerminateJobObject函数终止作业中的所有进程,该函数语法如下:
 
BOOL TerminateJobObject(
 
HANDLE hJob, // 表示作业对象句柄
 
UINT uExitCode // 表示进程退出代码
 
);
 
//下面的代码将终止作业中的所有进程:
 
    TermianteJobObject(m_hJob, 0);
 
//限制作业中的进程:
 
//在程序中可以调用SetInfomationJobObject函数可以为作业添加各种限制,该函数语法如下:
 
BOOL SetInfomationJobObject(
 
HANDLE hJob, // 作业句柄
 
JOBOBJECTINFOCLASS jobObjectInformationClass, // 一个枚举值,表示限制的类型
 
LPVOID lpJobObjectInformation, // 为作业对象设置的限制
 
DWORD cbJobObjectInformationLength // lpJobObjectInfomation占用的字节大小
 
);
 
//向作业中添加限制读取剪贴板的信息:
 
JOBOBJECT_BASIC_UI_RESTRICTIONS limitInfo;
 
limitInfo.UIRestrictionsClass = JOB_OBJECT_UILIMIT_READCLIPBOARD;
 
SetInformationJobObject(m_hJob, JobObjectBasicUIRestrictions,&limitInfo, sizeof(JOBOBJECT_BASIC_UI_RESTRICTIONS));
 

转载于:https://www.cnblogs.com/login007/archive/2011/08/13/2137049.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值