《Windows核心编程》第6章 笔记

1、线程和Object
一个线程拥有两个用户对象,即窗口和挂钩。当线程终止运行时,系统会自动
撤消任何窗口,并且卸载线程创建的或安装的任何挂钩。其他对象只有在拥有
线程的进程终止运行时才被撤消。

2、创建
在C++中,若要创建一个新线程,绝对不要调用操作系统的CreateThread函
数,必须调用C/C++运行期库函数_beginthreadex。
注意,_beginthreadex函数只存在于C/C++运行期库的多线程版本中。如果
链接到单线程运行期库,就会得到一个链接程序报告的“未转换的外部符号”
错误消息。

3、关于“伪句柄”
GetCurrentProcess(),GetCurrentThread()函数返回的是“伪句柄”(当前
操作系统下为常量值-1),仅仅用来标识调用线程/进程自身,不可以传递
给其他进程/线程。如果需要传递,必须使用DuplicateHandle()函数复制
出“真实句柄“用来传递。
比如下面的调用把
DuplicateHandle(
GetCurrentProcess(),    /*hSourceProcessHandle*/
GetCurrentThread(),    /*hSourceHandle*/
GetCurrentProcess(),    /*hTargetProcessHandle*/
&hRealHandle,        /*lpTargetHandle*/
0,            /*dwDesiredAccess*/
FALSE,        /*bInheritHandle*/
DUPLICATE_SAME_ACCESS,/*dwOptions*/
);
由于DuplicateHandle会递增特定对象的使用计数,因此当完成对复制对象句柄的使用时,
应该将目标句柄传递给CloseHandle,从而递减对象的使用计数,这一点很重要。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值