Win32学习笔记(7)进程相关API

本文介绍了Windows操作系统中进程相关的API,包括句柄与ID的区别、如何使用OpenProcess和TerminateProcess跨进程操作、以挂起方式创建进程、模块目录与工作目录的设置以及如何获取和遍历进程信息。通过实例解析,展示了如何使用这些API进行进程管理和操作。
摘要由CSDN通过智能技术生成

1.ID与句柄

句柄:就是进程里的私有表里的一个索引。

不过除了进程中的句柄表,操作系统也有一个句柄表。称为全局句柄表

全局句柄表并不是一个私有的概念,整个操作系统只有一份。全局句柄表至少包含所有的正在运行中的所有的进程和线程。

在创建进程的学习中我们知道,CreateProcess()函数中的最后一个参数lpProcessInformation指向PROCESS_INFORMATION结构体,结构体成员中有

hProcess;//进程句柄
dwProcessId;//进程id

那么两者有什么区别:

hProcess相当于与当前进程中句柄表中的一个索引,只在当前进程中有意义

dwProcessId(pid)相当于全局句柄表中的一个索引,在全局中都有意义。

 

在图中我们可以看到,进程id和线程id都是全局句柄表中的索引。这个索引值是唯一的但是不是不变的。

解释:唯一:一个索引值只对应一个内核对象。不是不变:比如图中的0进程死了,操作系统就可能会把这个索引给其他内核对象。

下面介绍几个API函数:

TerminateProcess:
BOOL TerminateProcess(
  [in] HANDLE hProcess,//要终止的进程的句柄。
  [in] UINT   uExitCode//终止的原因,可以使用GetExitCodeProcess函数检索进程的退出值。使用GetExitCodeThread函数检索线程的退出值。

使用这个函数我们可以关闭进程。那么假如我们创建进程A和进程B

假设进程A中:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wzprabbit

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值