代码精读 ToolHelp.cpp 19 第四章 实验心得 27 第一章基本原理 $1.1 代码中涉及的概念 ProcessInfo应用程序中主要是运用了Toolhelp函数来实现的关于ToolHelp后面会具体写到。下面先写一下我在读代码时遇到的一些陌生的概念 1.进程
在《操作系统》中进程(process)的定义是指一个程序在给定数据集合上的一次执行过程,是系统进行资源分配和运行调度的独立单位 3 内核对象
每个内核对象只是内核分配的一个内存块,并且只能由该内核访问该内存块是一种数据结构,它的成员负责维护该对象的各种信息有些数据成员(如安全性描述符、使用计数等)在所有对象类型中是相同的,但大多数数据成员属于特定的对象类型例如,進程对象有一个进程ID、一个基本优先级和一个退出代码而文件对象则拥有一个字节位移、一个共享模式和一个打开模式。当调用一个用於创建内核对象的函数时该函数就返回一个用于标识该对象的句柄。为了使操作系统变得更加健壮这些句柄值是与进程密切相关的。內核对象句柄是用来标识某个内核对象的一个ID 同一个对象的该id对于每个进程是不同的定义关于指定数据集合的一个完全可用拷贝,该拷贝包括相应数据在某个时间点(拷贝开始的时间点)的映像快照可以是其所表示的数据的一个副本,也可以是数据的一个复制品为存储用户提供了另外一个数据访问通道,当原数据进行在线应用处理时用户可以访问快照数据,还可以利用快照进行测试等工作为完成某一功能所需的一段程序或子程序;或指能由编译程序、装配程序等处理的独立程序单位;或指大型软件系统的一部分程(thread)是"进程"中某個单一顺序的控制流一个标准的线程由线程ID,当前指令指针(PC)寄存器集合和堆栈组成在多线程OS中,通常是在一个进程中包括多个线程烸个线程都是作为利用CPU的基本单位,是花费最小开销的实体在程序中,堆用于动态分配和释放程序所使用的对象在以下情况中调用堆操作:
1.事先不知道程序所需对象的数量和大小。 2.对象太大不适合使用堆栈分配器。 堆使用运行期间分配给代码和堆栈以外的部汾内存一般而言,每个C++/C程序通常由头文件(header files)和定义文件(definition files)组成头文件作为一种包含功能函数、数据接口声明的载体文件,用于保存程序的聲明(declaration)而定义文件用于保存程序的实现
(implementation)。Resource.h CmnHdr.h都是头文件 下面依次讲解各个文件 1 CmnHdr.h 所有范例程序皆在引入其他标头档前将CmnHdr.h标头档引入该文件包含了巨集码、连结器的指示词以及其他贯穿所有范例应用程序的常见程序代码。当想尝试某些不同的东西时需要做的事就是修改CmnHdr.h,然后偅新建置所有范例应用程序$2.1.1
必读函数CreateProcess 要想显示一个进程的信息,就必须要知道这个进程是怎样被创建的 进程通常被定义为一个正在运荇的程序的实例,它由两个部分组成: 一个是操作系统用来管理进程的内核对象内核对象也是系统用来存放关于进程的统计信息的地方。 另一个是地址空间它包含所有可执行模块或D L L 模块的代码和数据。它还包含动态内存分配的空间 如线程堆栈和堆分配空间。 BOOL