1 / 29
文档名称:

Windows进程编程.ppt

格式:ppt   大小:337KB   页数:29页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

Windows进程编程.ppt

上传人:今晚不太方便 2017/11/21 文件大小:337 KB

下载得到文件列表

Windows进程编程.ppt

相关文档

文档介绍

文档介绍:第二章
Windows 进程编程
主要内容
进程的概念
进程控制
进程间通信
进程(Process) 概念;
进程创建 CreateProcess 函数的使用;
系统进程获取与终止方法;
使用管程实现进程通信。
进程概念
进程是正在运行的程序的实例。
每个运行项目都对应一个进程,每个进程至少包含一个线程,它从main()函数开始执行,直到执行return语句返回,主线程结束,该进程也被从内存中卸载。
进程由如下几个部分组成:
与程序相关联的可执行代码的映像;
内存空间(通常是虚拟内存中的一些区域),其中保存可执行代码、进程的特定数据、用于记录活动例程和其他事件的调用栈、用于保存实时产生的中间计算结果的堆(heap);
分配给进程的资源的操作系统描述符(比如文件句柄)以及其他数据资源;
安全属性: 进程的所有者和权限;
处理器的状态: 寄存器的内容、物理内存地址等。
“进程”(Process)和“线程”(Thread)是操作系统控制多任务的两个重要概念。
早期的Windows ,而Windows 9x以后实行的是抢占式多任务
-- 区别在于是程序协调(需简单地在各个应用程序之间来回切换)或系统管理多任务。
在Win 32(Windows 95/NT/XP)中,每一个进程可以同时执行多个线程,这意味着一个程序可以同时完成多个任务。
进程概念
进程的状态
一个进程生命周期中有如下一些状态:
系统在创建新进程时会为新进程指定一个STARTUPINFO类型的变量。
这个结构包含了父进程传递给子进程的一些显示信息。
对图形界面应用程序,这些信息将影响新进程中主线程的主窗口显示。
如果一个新的控制台窗口被创建,这些信息将影响这个控制台窗口。
创建新进程时指定的STARTUPONFO变量结构定义如下页所示:
进程的创建
Typedef struct{
DWORD cb; // 本结构长度
LPSTR lpReserved; // 保留字段
LPSTR lpDesktop; // 指定桌面名称
LPSTR lpTitle; // 指定控制台窗口名称
DWORD dwX; // 指定创建窗口位置坐标及大小信息
DWORD dwY;
DWORD dwXSize;
DWORD dwYSize;
DWORD dwXCountChars; // 控制台程序使用,指定控制台窗口行数
DWORD dwYCountChars;
DWORD dwFillAttributes; // 控制台程序使用,指定控制台窗口背景色
DWORD dwFlags; // 标志,决定结构中那些成员值有效
WORD wShowWindow; // 窗口显示方式
WORD cbReserved2;
LPBYTE lpReserved2;
HANDLE hStdInput; // 控制台使用,几个标准句柄
HANDLE hStdOutput;
HANDLE hStdError;
} STRTUPINFO, *LPSTARUPINFO;
// 结构的可用名称
这个结构包含了:
1、父进程传递给子进程的一些显示信息;
2、图形界面的新进程主线程的主窗口显示相关变量设置;
3、控制台界面中控制台窗口的显示的相关变量设置。
4、三个句柄是用于设定供控制台输入和输出用的缓存的句柄:
按照默认设置,h S t d I n p u t 用于标识键盘缓存,h S t d O u t p u t 和h S t d E r r o r用于标识控制台窗口的缓存
创建子进程API函数
CreateProcess函数,其原型为:
BOOL CreateProcess(
LPCTSTR lpApplicationName,
LPTSTR mandLine,
LPSECURITY_ATTRIBUTES lpProcessAttributes,
LPSECURITY_ATTRIBUTES lpThreadAttributes,
BOOL bInheritHandles,
DWORD dwCreationFlags, // 见p152(初步了解)
LPVOID lpEnvironment,
LPCTSTR lpCurrentDirectory,
LPSTARTURINFO lpStartupInfo,
LPPROCESS_INFORMATION lpProcessInformation
);
CreateProcess() 的功能是建立并执行child process?
详细信息可在msdn上获得
PROCESS_INFORMATION结构