`
andyjackson
  • 浏览: 58376 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

WINDOWS核心编程——进程

阅读更多

看完了内核对象,现在看进程。都知道进程是通过内核对象被操作系统管理的。它由内核对象和地址空间组成。

 

下面看看CreateProcess函数:创建进程。需要说明的是,在进程完全初始化之前该函数就会返回true。 这意味着操作系统j加载程序尚未进行定位所有所必要的dll。如果某个dll找不到或者未能正确初始化,进程就会终止。因为CreateProcess返回TRUE,所以父进程不会注意到任何初始化的问题。

 

1.pszCommandLine参数。

表示创建的进程的命令行参数,操作系统会修改我们传的命令行参数,但是在函数返回之前还原为原来的形式。它是PTSTR类型,表示传入的是一个“非常量字符串”的指针。如果传入常量字符串指针,会引起访问违规。

CreateProcess(NULL,TEXT("XXX"),NULL,NULL,FALSE,0,NULL,NULL,&si,&pi);  //第二个参数传入的是常量指针

在使用时应该先将常量复制到一个缓冲区中:

TCHAR szCommandLine[] = TEXT("XXX");
//然后传入szCommandLine

2.psaProcess、psaThread和bInheritHanles

前两个参数分别为进程对象和线程对象指定安全性。为NULL时,系统为其分配默认的安全描述符。两个都是SECURITY_ATTRIBUTES的结构。bInheritHanles参数是该结构的一个参数,用于指示

 

 

有关的其他参数,就不再详细讲。

作业内核对象 。可以想象成一个进程容器。用于把一组进程装起来,这样就可以对进程施加限制。

/*
*创建一个作业内核对象
*@PSECURITY_ATTRIBUTES psa
*@PCTSTR pszname
*/
HANDLE hjob = CreateJobObject(NULL, TEXT("KDDKKKK"));

/*
*将进程添加到作业中
*@HANDLE hjob
*@HANDLE hProcess
*/
AssinProcessToJobObject(hjob, GetCurrentProcess());
 

对作业中的进程施加限制

BOOL SetInformationJobObject(
HANDLE  hJob,
JOBOBJECTINFOCLASS JobObjectInformationClass,
PVOID pJobObjectInformation,
DWORD cbJobObjectInformationSize);
/*
*@hJob 指定要限制的作业
*@JobObjectInformationClass 是一个枚举类型,指定要施加限制的类型
*@pJobObjectInformation 指向包含具体限制设置的数据结构的地址
*@cbJobObjectInformationSize 指定该数据结构的大小
*/

限制类型的总结:

 

限制类型 JobObjectInformationClass pJobObjectInformation
基本限额 JobObjectBasicLimitInformation

JOBOBJECT_BASIC_LIMIT_INFORMATION

扩展后的

基本限额

JobObjectBasicLimitInformation

JOBOBJECT_BASIC_LIMIT_INFORMATION

基本的UI

限制

JobObjectBasicUIRestrictions JOBOBJECT_BASIC_UI_RESTRICTIONS
安全限额 安全限额 JOBOBJECT_SECURITY_LIMIT_INFORMATION

 

 

 

 

 

 

 

 

 

 

 

 

 

 

分享到:
评论

相关推荐

    Windows编程入门——字节跳动.pptx

    Windows 编程的基本理论包括微软开发者网络 MSDN、API 调用与状态切换、进程管理器、虚拟地址空间、文件句柄列表、内存分页、线程列表、内核对象列表、进程状态注册表等。其中,Kernal32.dll、User32.dll、GDI32.dll...

    操作系统实验——进程管理系统

    在这个基于Java实现的操作系统实验——进程管理系统中,我们将深入探讨与进程管理相关的概念和技术。 首先,我们需要理解什么是进程。在操作系统中,进程是程序在执行过程中的一个实例,包含程序代码、数据、环境...

    Windows编程基础——自定义消息方法

    ### Windows编程基础——自定义消息方法 #### 一、消息传递方法概述 Windows编程的核心之一是消息处理机制。在Windows编程中,无论是图形用户界面(GUI)还是后台服务,几乎所有操作都是通过消息来驱动的。因此,...

    操作系统实验——进程控制.docx

    操作系统实验——进程控制 在操作系统领域,进程控制是核心概念之一,它涉及到程序的执行、内存管理和资源分配。本实验旨在帮助学生理解进程的基本概念,包括进程与程序的区别,以及进程的并发执行、进程控制块...

    深入浅出讲解Windows程序设计——Visual+C++课

    总的来说,"深入浅出讲解Windows程序设计——Visual+C++课程"是一门系统性、实践性很强的课程,它不仅让学生掌握Visual C++编程语言和Windows平台的开发技巧,还能够帮助学生形成分析问题和解决问题的能力,为其在...

    Windows内核驱动EPROCESS遍历进程模块

    EPROCESS结构体是Windows内核中的核心数据结构之一,它包含了关于进程的各种信息,如进程ID、安全上下文、虚拟地址空间等。遍历EPROCESS结构体可以帮助我们获取到进程的一些关键信息,包括其加载的模块列表。这些...

    操作系统实验——Windows 控制台命令.docx

    5. **Windows核心系统服务**: - **Windows执行体**:包含了系统服务、设备驱动程序、文件系统、网络堆栈等。 - **Windows内核**:处理调度、内存管理、中断处理等核心功能。 - **设备驱动程序**:为硬件设备提供...

    Windows游戏编程入门——TableTennis小游戏

    在Windows游戏编程的世界里,入门级项目通常会选择创建一个简单的桌面游戏来帮助初学者理解基本概念和技巧。"TableTennis"小游戏就是这样一个例子,它为想要涉足游戏开发的新手提供了一个良好的起点。这个项目的核心...

    寒江独钓——Windows内核安全编程(光盘)

    《寒江独钓——Windows内核安全编程》是一份针对Windows操作系统内核安全编程的珍贵资源,其中包含了大量的代码示例和实践经验,旨在帮助开发者深入理解Windows内核的工作原理,并学习如何在内核级别编写安全、高效...

    操作系统实验——模拟进程的创建与撤销

    在本实验“操作系统实验——模拟进程的创建与撤销”中,我们将深入理解进程的概念,学习如何用C++语言来模拟这个过程。通过这次实验,我们可以更直观地了解操作系统中的进程管理机制。 首先,我们需要理解什么是...

    寒江独钓——Windows内核安全编程

    Windows内核是操作系统的核心部分,负责管理硬件资源、调度进程、提供系统服务等关键任务。内核安全编程旨在确保系统在面对恶意攻击或错误操作时仍能保持稳定和安全。书中可能涵盖了以下几个方面的内容: 1. **...

    操作系统课程设计——进程调度模拟算法(5种).doc

    总结,操作系统课程设计中实现进程调度算法模拟,不仅锻炼了编程能力,更深入地理解了操作系统中进程调度的核心概念,对于提升计算机科学与技术专业学生的专业素养具有重要意义。同时,通过调试和优化代码,也能培养...

    天书夜读——从汇编语言到Windows内核编程

    Windows内核是操作系统的核心部分,负责管理进程、线程、内存、设备驱动等关键任务。学习内核编程,读者需要理解中断、系统调用、调度算法、内存管理、I/O模型等概念。书中可能会详细阐述如何编写内核模式驱动程序,...

    驱动签名 隐藏进程 保护进程 多种方式 保护进程的 驱动

    标题中的“驱动签名”指的是在...综上所述,这些知识点涵盖了驱动程序开发、系统安全、进程控制和保护等方面,是Windows系统编程和安全领域的核心技术。理解并掌握这些概念对于编写安全、可靠的系统级软件至关重要。

    寒江独钓《Windows内核安全编程》

    全面系统地介绍了串口、键盘、磁盘、文件系统、网络等相关的Windows内核模块的编程技术,以及基于这些技术实现的输入密码保护、防毒引擎、文件加密、网络嗅探、网络防火墙等信息安全软件的核心组件的具体编程。...

    寒江独钓--windows内核安全编程光盘源码_寒江独钓windows内核安全编程_

    首先,我们要理解Windows内核是操作系统的核心部分,它负责管理硬件资源、调度进程、提供系统服务等。内核安全编程则尤为重要,因为任何在内核层面上的漏洞都可能导致严重的系统崩溃或被恶意利用。因此,对于驱动...

    windows变成——新编API文档

    《Windows编程——新编API文档》是一份深入探讨Windows API的宝贵资料,它涵盖了大量用于构建Windows应用程序的核心函数。Windows API(Application Programming Interface)是微软为开发者提供的接口,使得程序员...

    windows开发文档———win32ap参考官方

    这些API函数涵盖了从用户界面到系统管理的各个层面,是编写原生Windows程序的核心工具。本开发文档将深入探讨Win32 API的重要概念、功能以及使用方法。 1. **Win32 API概述** - Win32 API是微软为Windows操作系统...

    天书夜读——从汇编语言到windows内核编程

    《天书夜读——从汇编语言到Windows内核编程》是一本深入探讨计算机底层原理和技术的书籍,尤其关注汇编语言与操作系统内核的交互。汇编语言是计算机科学的基础,它允许程序员直接控制硬件,是理解计算机工作原理的...

Global site tag (gtag.js) - Google Analytics